logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe
commit: 7403c6c3dcad9bcf31bb11c271a1ea7d4225c2af
parent: 03190ab124253f30ddce40c6541afe6154b58339
Author: lambda <pleromagit@rogerbraun.net>
Date:   Mon, 13 Nov 2017 10:57:33 +0000

Merge branch 'fix/replace-sidepanel-scroll-js-with-css' into 'develop'

Get rid of the js to scale sidepanel, add an additional div and a css class to fix the same issue.

See merge request pleroma/pleroma-fe!156

Diffstat:

Msrc/App.js23-----------------------
Msrc/App.scss12++++++++----
Msrc/App.vue14++++++++------
3 files changed, 16 insertions(+), 33 deletions(-)

diff --git a/src/App.js b/src/App.js @@ -23,18 +23,6 @@ export default { style () { return { 'background-image': `url(${this.background})` } }, sitename () { return this.$store.state.config.name } }, - created () { - // this is to detect user zooming mostly - window.addEventListener('resize', this.fixSidebarWidth) - }, - mounted () { - // for some reason, at least in dev mode, dom is not ready enough at this point - // in theory calling the function directly here should be enough, but it's not - setTimeout(() => { this.fixSidebarWidth() }, 500) - }, - destroyed () { - window.removeEventListener('resize', this.fixSidebarWidth) - }, methods: { activatePanel (panelName) { this.mobileActivePanel = panelName @@ -44,17 +32,6 @@ export default { }, logout () { this.$store.dispatch('logout') - }, - fixSidebarWidth () { - // firefox - let barwidth = window.innerWidth - document.body.offsetWidth - if (document.body.offsetWidth <= 0) { - // chromium - barwidth = window.innerWidth - document.body.scrollWidth - } - // adjust the sidebar size to fit the scrollbar width to keep the gap consistently sized - document.getElementById('sidebar-container').style.width = `${345 + barwidth}px` - document.getElementById('sidebar-container').style.paddingRight = `${barwidth}px` } } } diff --git a/src/App.scss b/src/App.scss @@ -191,7 +191,7 @@ nav { flex-shrink: 1; } -.sidebar { +.sidebar-bounds { flex: 0; flex-basis: 35%; } @@ -222,21 +222,25 @@ nav { body { overflow-y: scroll; } - .sidebar { + .sidebar-bounds { overflow: hidden; max-height: 100vh; width: 345px; position: fixed; margin-top: -10px; - .sidebar-container { + .sidebar-scroller { height: 96vh; width: 365px; padding-top: 10px; - padding-right: 20px; + padding-right: 50px; overflow-x: hidden; overflow-y: scroll; } + + .sidebar { + width: 345px; + } } .sidebar-flexer { max-height: 96vh; diff --git a/src/App.vue b/src/App.vue @@ -1,6 +1,6 @@ <template> <div id="app" v-bind:style="style" class="base02-background"> - <nav class='container base01-background base04' @click="scrollToTop()"> + <nav class='container base01-background base04' @click="scrollToTop()" id="nav"> <div class='inner-nav' :style="logoStyle"> <div class='item'> <router-link :to="{ name: 'root'}">{{sitename}}</router-link> @@ -18,11 +18,13 @@ <button @click="activatePanel('timeline')" class="base01-background base04">Timeline</button> </div> <div class="sidebar-flexer" :class="{ 'mobile-hidden': mobileActivePanel != 'sidebar'}"> - <div class="sidebar" :class="{ 'mobile-hidden': mobileActivePanel != 'sidebar' }"> - <div class="sidebar-container" id="sidebar-container"> - <user-panel></user-panel> - <nav-panel></nav-panel> - <notifications v-if="currentUser"></notifications> + <div class="sidebar-bounds"> + <div class="sidebar-scroller"> + <div class="sidebar"> + <user-panel></user-panel> + <nav-panel></nav-panel> + <notifications v-if="currentUser"></notifications> + </div> </div> </div> </div>