mirror of
				https://github.com/vyos/vyos-documentation.git
				synced 2025-10-26 08:41:46 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| $(document).ready(function () {
 | |
|   removeOverlayAndCloseSidebar()
 | |
|   documentLoaded()
 | |
| 
 | |
|   $(window).on("resize", function () {
 | |
|     const screenWidth = window.innerWidth
 | |
| 
 | |
|     if (screenWidth <= 991) return userIsInTabletScreenWidth(screenWidth)
 | |
|     return removeOverlayAndButtons(screenWidth)
 | |
|   })
 | |
| 
 | |
| })
 | |
| 
 | |
| function removeButtons() {
 | |
|   const alreadyCreatedOpenButtonCheck = $('.openLeftSidebarMenuButton')
 | |
|   const alreadyCreatedCloseButtonCheck = $('.closeButtonDivLine')
 | |
| 
 | |
|   if(alreadyCreatedOpenButtonCheck[0]) alreadyCreatedOpenButtonCheck[0].remove()
 | |
|   if(alreadyCreatedCloseButtonCheck[0]) alreadyCreatedCloseButtonCheck[0].remove()
 | |
| }
 | |
| 
 | |
| function documentLoaded() {
 | |
|   const screenWidth = window.innerWidth
 | |
| 
 | |
|   if (screenWidth <= 991) return userIsInTabletScreenWidth(screenWidth)
 | |
|   return
 | |
| }
 | |
| 
 | |
| function userIsInTabletScreenWidth(screenWidth) {
 | |
|   const alreadyCreatedButtonCheck = $('.openLeftSidebarMenuButton')
 | |
|   if (alreadyCreatedButtonCheck[0]) return
 | |
|   createOpenSidebarButton(screenWidth)
 | |
|   createCloseSidebarButton(screenWidth)
 | |
|   removeOverlayAndCloseSidebar()
 | |
| }
 | |
| 
 | |
| function createOverlay(screenWidth) {
 | |
|   const contentContainer = $('.wy-nav-content')
 | |
|   contentContainer.addClass('overlay')
 | |
| 
 | |
|   const overlayDiv = `
 | |
|     <div class='overlayDiv' />
 | |
|   `
 | |
| 
 | |
|   contentContainer.append(overlayDiv)
 | |
| 
 | |
|   $('.wy-nav-content.overlay').on('click', onOverlayClickHandler)
 | |
| }
 | |
| 
 | |
| function onOverlayClickHandler() {
 | |
|   removeOverlayAndCloseSidebar()
 | |
| }
 | |
| 
 | |
| function removeOverlayAndCloseSidebar() {
 | |
|   const screenWidth = window.innerWidth
 | |
| 
 | |
|   const contentContainer = $('.wy-nav-content')
 | |
|   contentContainer.removeClass('overlay')
 | |
| 
 | |
|   const overlayDiv = $('.overlayDiv')
 | |
|   overlayDiv.remove()
 | |
| 
 | |
|   const leftSidebarOpened = $('nav.wy-nav-side.shift')
 | |
|   leftSidebarOpened.removeClass('shift')
 | |
| 
 | |
|   const leftSidebar = $('nav.wy-nav-side')
 | |
| 
 | |
|   // that's working don't touch
 | |
|   if(screenWidth > 991) {
 | |
|     // when user is not in tablet -> we add classes on opened sidebar and remove classes on closed sidebar
 | |
|     const contentSection = $('section.wy-nav-content-wrap')
 | |
|     const contentDiv = $('div.wy-nav-content')
 | |
|     contentSection.addClass('wy-nav-content-wrap-opened-sidebar')
 | |
|     contentDiv.addClass('wy-nav-content-opened-sidebar')
 | |
|     contentSection.removeClass('wy-nav-content-wrap-closed-sidebar')
 | |
|     contentDiv.removeClass('wy-nav-content-closed-sidebar')
 | |
|     leftSidebar.removeClass('display_none')
 | |
|     return 
 | |
|   }
 | |
| 
 | |
|   if(screenWidth <= 991) {
 | |
|     // I add closed classes to make contentContainer 100% width
 | |
|     const contentSection = $('section.wy-nav-content-wrap')
 | |
|     const contentDiv = $('div.wy-nav-content')
 | |
|     contentSection.removeClass('wy-nav-content-wrap-opened-sidebar')
 | |
|     contentDiv.removeClass('wy-nav-content-opened-sidebar')
 | |
|     contentSection.addClass('wy-nav-content-wrap-closed-sidebar')
 | |
|     contentDiv.addClass('wy-nav-content-closed-sidebar')
 | |
|     leftSidebar.addClass('display_none')
 | |
|   }
 | |
|   
 | |
| }
 | |
| 
 | |
| function createOpenSidebarButton() {
 | |
|   const divToInsert = $('div[role=navigation][aria-label="Page navigation"]')
 | |
|   divToInsert[0].insertAdjacentHTML('afterbegin', formOpenSidebarButton())
 | |
|  
 | |
|   const newlyCreatedButton = $('.openLeftSidebarMenuButton')
 | |
| 
 | |
|   newlyCreatedButton.on('click', onOpenLeftSidebarMenuButtonClickHandler)
 | |
| }
 | |
| 
 | |
| function onOpenLeftSidebarMenuButtonClickHandler(e) {
 | |
|   e.stopPropagation()
 | |
|   const leftSidebar = $('nav.wy-nav-side')
 | |
|   const leftSidebarOpened = $('nav.wy-nav-side.shift')
 | |
|   if(leftSidebarOpened[0]) {
 | |
|     // leftSidebarOpened.removeClass('shift')
 | |
|     removeOverlayAndCloseSidebar()
 | |
|   }
 | |
| 
 | |
|   createOverlay()
 | |
|   if(leftSidebar.hasClass('display_none')) leftSidebar.removeClass('display_none')
 | |
|   if(leftSidebar.hasClass('.additionalStylesForShift')) leftSidebar.removeClass('.additionalStylesForShift')
 | |
|   // here I add classes to contentSection and contentDiv to make them margined left and remove closed classes if any
 | |
|   const contentSection = $('section.wy-nav-content-wrap')
 | |
|   const contentDiv = $('div.wy-nav-content')
 | |
|   // contentSection.removeClass('wy-nav-content-wrap-closed-sidebar')
 | |
|   // contentDiv.removeClass('wy-nav-content-closed-sidebar')
 | |
|   // contentSection.addClass('wy-nav-content-wrap-opened-sidebar')
 | |
|   // contentDiv.addClass('wy-nav-content-opened-sidebar')
 | |
|   return leftSidebar.addClass('shift')
 | |
| }
 | |
| 
 | |
| function createCloseSidebarButton(screenWidth) {
 | |
|   const updatedLeftSidebarScrollDiv = $('nav.wy-nav-side')
 | |
| 
 | |
|   const alreadyCreatedButtonCheck = $('div.closeLeftSidebarMenuButton')
 | |
|   if(alreadyCreatedButtonCheck[0]) return 
 | |
| 
 | |
|   updatedLeftSidebarScrollDiv[0].insertAdjacentHTML('beforeend', formCloseLeftSidebarButton())
 | |
|   updatedLeftSidebarScrollDiv.addClass('additionalStylesForShift')
 | |
| 
 | |
|   const createdCloseSidebarButton = $('.closeButtonDivLine')
 | |
| 
 | |
|   createdCloseSidebarButton.on('click', function () {
 | |
|     removeOverlayAndCloseSidebar()
 | |
|   })
 | |
| }
 | |
| 
 | |
| function formOpenSidebarButton() {
 | |
|   return `
 | |
|     <div class='openLeftSidebarMenuButton'>
 | |
|       ${hamburgerIcon}
 | |
|     </div>
 | |
|   `
 | |
| }
 | |
| 
 | |
| function formCloseLeftSidebarButton() {
 | |
|   return `
 | |
|     <div class='closeButtonDivLine'>
 | |
|       <div class='closeLeftSidebarMenuButton'>
 | |
|         Close
 | |
|       </div>
 | |
|     </div>
 | |
|   `
 | |
| }
 | |
| 
 | |
| function removeOverlayAndButtons(screenWidth) {
 | |
|   removeOverlayAndCloseSidebar()
 | |
|   removeButtons()
 | |
| }
 |