diff --git a/packages/app/constants/defaultSettings.json b/packages/app/constants/defaultSettings.json index 01c80cd2..291e27d4 100755 --- a/packages/app/constants/defaultSettings.json +++ b/packages/app/constants/defaultSettings.json @@ -15,6 +15,7 @@ "postCard_expansible_actions": true, "feed_max_fetch": 20, "style.compactMode": false, + "sidebar.floating": false, "language": "en", "sidebarKeys": [ "home", diff --git a/packages/app/constants/settings/apparence/index.jsx b/packages/app/constants/settings/apparence/index.jsx index 1930e996..e9a67dd0 100755 --- a/packages/app/constants/settings/apparence/index.jsx +++ b/packages/app/constants/settings/apparence/index.jsx @@ -16,6 +16,16 @@ export default [ "experimental": true, "storaged": true }, + { + "id": "sidebar.floating", + "title": "Floating Sidebar", + "description": "Make the sidebar floats over layout content.", + "component": "Switch", + "icon": "MdOutlineLastPage", + "group": "layout", + "emitEvent": "app.softReload", + "storaged": true + }, { "id": "reduceAnimations", "storaged": true, diff --git a/packages/app/src/App.jsx b/packages/app/src/App.jsx index e1424da1..2ee176f9 100755 --- a/packages/app/src/App.jsx +++ b/packages/app/src/App.jsx @@ -123,6 +123,15 @@ class App extends React.Component { window.electron.ipcRenderer.invoke("app.minimize") } }, + "app.reload": () => { + window.location.reload() + }, + "app.softReload": () => { + this.forceUpdate() + + app.eventBus.emit("layout.forceUpdate") + app.eventBus.emit("router.forceUpdate") + }, "app.openSearcher": () => { App.publicMethods.openSearcher() }, diff --git a/packages/app/src/components/Layout/sidebar/index.jsx b/packages/app/src/components/Layout/sidebar/index.jsx index 21a73d15..449cf49c 100755 --- a/packages/app/src/components/Layout/sidebar/index.jsx +++ b/packages/app/src/components/Layout/sidebar/index.jsx @@ -227,6 +227,7 @@ export default class Sidebar extends React.Component { classnames( "app_sidebar", { + ["floating"]: window.app?.settings.get("sidebar.floating"), ["collapsed"]: this.state.visible && this.state.collapsed, ["elevated"]: this.state.visible && this.state.elevated, ["hidden"]: !this.state.visible, diff --git a/packages/app/src/components/Layout/sidebar/index.less b/packages/app/src/components/Layout/sidebar/index.less index 05a4518e..b81306b2 100755 --- a/packages/app/src/components/Layout/sidebar/index.less +++ b/packages/app/src/components/Layout/sidebar/index.less @@ -25,6 +25,10 @@ border-radius: 0 @app_sidebar_borderRadius @app_sidebar_borderRadius 0; border: 1px solid var(--sidebar-background-color); + &.floating { + position: absolute; + } + &.collapsed { width: 80px; min-width: 80px; diff --git a/packages/app/src/components/Layout/sidedrawer/index.jsx b/packages/app/src/components/Layout/sidedrawer/index.jsx index 1285ac7c..da85c3d5 100755 --- a/packages/app/src/components/Layout/sidedrawer/index.jsx +++ b/packages/app/src/components/Layout/sidedrawer/index.jsx @@ -224,7 +224,12 @@ export default class SidedrawerController extends React.Component { render() { return
{this.state.drawers}
diff --git a/packages/app/src/components/Layout/sidedrawer/index.less b/packages/app/src/components/Layout/sidedrawer/index.less index 88528d52..fe5c5153 100755 --- a/packages/app/src/components/Layout/sidedrawer/index.less +++ b/packages/app/src/components/Layout/sidedrawer/index.less @@ -3,6 +3,12 @@ .sidedrawers-wrapper { display: flex; flex-direction: row; + + &.floating-sidebar { + z-index: 950; + position: absolute; + margin-left: @app_sidebar_collapsed_width; + } .sidedrawer { position: relative; diff --git a/packages/app/src/components/PostCard/components/header/index.less b/packages/app/src/components/PostCard/components/header/index.less index f6ea2969..b95e579c 100755 --- a/packages/app/src/components/PostCard/components/header/index.less +++ b/packages/app/src/components/PostCard/components/header/index.less @@ -49,6 +49,7 @@ margin: 0; font-family: "DM Mono", monospace; align-self: start; + font-size: 1rem; cursor: pointer; } diff --git a/packages/app/src/components/Settings/index.jsx b/packages/app/src/components/Settings/index.jsx index a14c7f41..63ff4c49 100755 --- a/packages/app/src/components/Settings/index.jsx +++ b/packages/app/src/components/Settings/index.jsx @@ -91,6 +91,10 @@ const SettingItem = (props) => { } } + if (item.storaged) { + await window.app.settings.set(item.id, updateValue) + } + if (typeof item.emitEvent === "string") { let emissionPayload = updateValue @@ -105,10 +109,6 @@ const SettingItem = (props) => { return false } - if (item.storaged) { - await window.app.settings.set(item.id, updateValue) - } - if (item.debounced) { setDelayedValue(null) } diff --git a/packages/app/src/layout.jsx b/packages/app/src/layout.jsx index b43ba3f6..952b977a 100755 --- a/packages/app/src/layout.jsx +++ b/packages/app/src/layout.jsx @@ -25,6 +25,9 @@ export default class Layout extends React.PureComponent { "app.initialization.finish": () => { app.eventBus.emit("layout.render.unlock") }, + "layout.forceUpdate": () => { + this.forceUpdate() + }, "layout.render.lock": () => { this.setState({ renderLock: true, diff --git a/packages/app/src/layouts/default/index.jsx b/packages/app/src/layouts/default/index.jsx index 0bf7866d..b562a4be 100755 --- a/packages/app/src/layouts/default/index.jsx +++ b/packages/app/src/layouts/default/index.jsx @@ -12,13 +12,18 @@ export default (props) => { - - -
- {React.cloneElement(props.children, props)} -
-
-
+ +
+ {React.cloneElement(props.children, props)} +
+
-} +} \ No newline at end of file diff --git a/packages/app/src/theme/index.less b/packages/app/src/theme/index.less index e917bed7..45f4aacd 100755 --- a/packages/app/src/theme/index.less +++ b/packages/app/src/theme/index.less @@ -160,30 +160,29 @@ html { } } -.ant-layout, .content_layout { - width: 100%; - height: 100%; - max-height: 100vh; - - background-color: transparent; -} - -.layout_page { position: relative; -webkit-overflow-scrolling: touch; - + height: 100%; + width: 100%; + max-height: 100vh; padding: 10px; - + overflow-x: hidden; overflow-y: overlay; - + transition: all 150ms ease-in-out; margin: var(--layoutMargin); padding: var(--layoutPadding); + + background-color: transparent; + + &.floating-sidebar { + margin-left: @app_sidebar_collapsed_width; + } } .app_background_decorator {