|
76 | 76 | } |
77 | 77 |
|
78 | 78 | activeMenu(); |
| 79 | + setupCollapsedMenuPositioning(); |
79 | 80 |
|
80 | 81 | const curUrl = getCleanUrl($page.url.pathname); |
81 | 82 | if (curUrl) { |
|
112 | 113 | // menuItemScroll() |
113 | 114 | }); |
114 | 115 |
|
| 116 | + const setupCollapsedMenuPositioning = () => { |
| 117 | + if (!browser) return; |
| 118 | +
|
| 119 | + const sideMenu = document.querySelector('#side-menu'); |
| 120 | + if (!sideMenu) return; |
| 121 | +
|
| 122 | + // Position fixed submenus on hover when sidebar is collapsed |
| 123 | + sideMenu.querySelectorAll(':scope > li').forEach((li) => { |
| 124 | + li.addEventListener('mouseenter', () => { |
| 125 | + if (!document.body.classList.contains('vertical-collpsed')) return; |
| 126 | +
|
| 127 | + const submenu = li.querySelector(':scope > ul.sub-menu'); |
| 128 | + if (submenu) { |
| 129 | + const rect = li.getBoundingClientRect(); |
| 130 | + // @ts-ignore |
| 131 | + submenu.style.top = `${rect.top}px`; |
| 132 | + } |
| 133 | + }); |
| 134 | + }); |
| 135 | +
|
| 136 | + // Position nested submenus |
| 137 | + sideMenu.querySelectorAll('.sub-menu li').forEach((li) => { |
| 138 | + li.addEventListener('mouseenter', () => { |
| 139 | + if (!document.body.classList.contains('vertical-collpsed')) return; |
| 140 | +
|
| 141 | + const nestedSubmenu = li.querySelector(':scope > ul.sub-menu'); |
| 142 | + if (nestedSubmenu) { |
| 143 | + const rect = li.getBoundingClientRect(); |
| 144 | + // @ts-ignore |
| 145 | + nestedSubmenu.style.top = `${rect.top}px`; |
| 146 | + } |
| 147 | + }); |
| 148 | + }); |
| 149 | + }; |
| 150 | +
|
115 | 151 | const activeMenu = () => { |
116 | 152 | if (browser) { |
117 | 153 | document.querySelectorAll('.vertical-menu .has-arrow').forEach((menu) => { |
|
201 | 237 | document.body.classList.add('sidebar-enable'); |
202 | 238 |
|
203 | 239 | if (menuElement) { |
204 | | - const instance = OverlayScrollbars(menuElement); |
| 240 | + const instance = OverlayScrollbars(menuElement, options); |
205 | 241 | if (instance) { |
206 | 242 | instance.destroy(); |
207 | 243 | } |
|
211 | 247 | document.body.classList.remove('sidebar-enable'); |
212 | 248 |
|
213 | 249 | if (menuElement) { |
214 | | - const instance = OverlayScrollbars(menuElement); |
| 250 | + OverlayScrollbars(menuElement, options); |
215 | 251 | } |
216 | 252 | } |
217 | 253 | } |
|
0 commit comments