diff --git a/resources/assets/javascripts/bootstrap/sidebar.js b/resources/assets/javascripts/bootstrap/sidebar.js deleted file mode 100644 index f308e6cf02ba2a7835d425ea4392b46378d0c3d5..0000000000000000000000000000000000000000 --- a/resources/assets/javascripts/bootstrap/sidebar.js +++ /dev/null @@ -1,15 +0,0 @@ -STUDIP.ready(() => { - // Apply sidebar magic only on admin/courses - if ( - document.body.id === 'admin-courses-index' - && !document.documentElement.classList.contains('responsive-display') - ) { - STUDIP.Sidebar.observeFooter(); - STUDIP.Sidebar.observeSidebar(); - - document.defaultView.addEventListener('resize', () => { - STUDIP.Sidebar.reset(); - }); - } - -}); diff --git a/resources/assets/javascripts/entry-base.js b/resources/assets/javascripts/entry-base.js index 7ba4f45b6504dc7ec77ebaf251ac9244f55d05bc..70ef84e571f30a6a2266b64a4668d672489b483c 100644 --- a/resources/assets/javascripts/entry-base.js +++ b/resources/assets/javascripts/entry-base.js @@ -85,7 +85,6 @@ import "./bootstrap/contentmodules.js" import "./bootstrap/responsive-navigation.js" import "./bootstrap/treeview.js" import "./bootstrap/stock-images.js" -import "./bootstrap/sidebar.js" import "./mvv_course_wizard.js" import "./mvv.js" diff --git a/resources/assets/javascripts/lib/sidebar.js b/resources/assets/javascripts/lib/sidebar.js index 13418761fdb3806319c274caf2f38ba17db71082..3cb1c05eba8f9177d108fbe3f4d9e5167d7b9cad 100644 --- a/resources/assets/javascripts/lib/sidebar.js +++ b/resources/assets/javascripts/lib/sidebar.js @@ -1,72 +1,20 @@ -const Sidebar = { - - observeSidebar() { - const options = { - root: null, - rootMargin: '0px 0px 35px 0px', - threshold: 1 - }; - - /** - * Observe if sidebar fits into viewport. - */ - const sidebar = document.getElementById('sidebar'); - if (sidebar) { - const sObserver = new IntersectionObserver(STUDIP.Sidebar.fits, options); - sObserver.observe(sidebar, options); - } - }, - - observeFooter() { - const options = { - root: null, - rootMargin: '0px', - threshold: 1 - }; - - /** - * Observe if the footer is visible in viewport. - */ - const fObserver = new IntersectionObserver(STUDIP.Sidebar.footerVisible, options); - fObserver.observe(document.getElementById('main-footer'), options); +import Scroll from './scroll.js'; +const Sidebar = { + open () { + this.toggle(true); }, - - reset() { - const sidebar = document.getElementById('sidebar'); - if (sidebar) { - sidebar.classList.remove('oversized', 'was-oversized', 'fixed'); - sidebar.style.top = ''; - STUDIP.Sidebar.observeSidebar(); - } + close () { + this.toggle(false); }, + toggle (visible = null) { + visible = visible ?? !$('#sidebar').hasClass('visible-sidebar'); - fits(entries, observer) { - const sidebar = document.getElementById('sidebar'); - if (sidebar) { - entries.forEach(entry => { - // Sidebar fits onto current page. - if (entry.isIntersecting) { - sidebar.classList.remove('oversized'); - } else { - sidebar.classList.add('oversized', 'was-oversized'); - } - }); - } - }, + // Hide navigation + $('#responsive-toggle').prop('checked', false); + $('#responsive-navigation').removeClass('visible'); - footerVisible(entries, observer) { - const sidebar = document.getElementById('sidebar'); - if (sidebar) { - entries.forEach(entry => { - // Footer is visible on current page. - if (entry.isIntersecting) { - sidebar.classList.remove('no-footer'); - } else { - sidebar.classList.add('no-footer'); - } - }); - } + $('#sidebar').toggleClass('visible-sidebar', visible); } }; diff --git a/resources/assets/stylesheets/scss/sidebar.scss b/resources/assets/stylesheets/scss/sidebar.scss index 49cdb4f0dbbcfe4551e78bab9c40d555f8f0f3d5..fd885af8a9cbb52d4657d19eef4afcf055d731f5 100644 --- a/resources/assets/stylesheets/scss/sidebar.scss +++ b/resources/assets/stylesheets/scss/sidebar.scss @@ -112,67 +112,6 @@ } } -html { - &:not(.responsive-display) { - #admin-courses-index { - #sidebar { - top: 50px; - transition: all var(--transition-duration) ease-in-out; - - &.was-oversized { - height: calc(100vh - 250px); - overflow-y: auto; - position: fixed; - top: 155px; - - &.no-footer { - height: calc(100vh - 200px); - } - } - - .widget-links { - li.active { - &::before, - &::after { - border: 0; - } - } - } - } - - &.fixed { - #sidebar { - height: calc(100vh - 125px); - top: 35px; - - &.no-footer { - height: calc(100vh - 100px); - } - } - } - - &.fullscreen-sidebar-shown { - #sidebar { - top: 110px; - - &.was-oversized { - height: calc(100vh - 200px); - - &.no-footer { - height: calc(100vh - 150px); - } - - &.fixed { - top: 110px; - } - } - } - } - - } - } -} - ul.widget-list { list-style: none; margin: 0; diff --git a/resources/vue/components/responsive/ResponsiveNavigation.vue b/resources/vue/components/responsive/ResponsiveNavigation.vue index 70e46a7311c97e6b910f168ba2d265e69de9c6ae..691ebb70d5833d12c773ecba92cd3ae24892cd7c 100644 --- a/resources/vue/components/responsive/ResponsiveNavigation.vue +++ b/resources/vue/components/responsive/ResponsiveNavigation.vue @@ -321,8 +321,7 @@ export default { this.showMenu = false; cache.remove('fullscreen-mode'); document.getElementById('responsive-toggle-focusmode').style.display = 'none'; - document.body.classList.remove('fullscreen-sidebar-shown'); - document.body.style.display = ''; + document.body.style.display = null; const siteTitle = document.getElementById('site-title'); if (siteTitle.dataset.originalTitle) {