diff --git a/src/components/IconPicker.vue b/src/components/IconPicker.vue index f1ff552f..eca0dd3c 100644 --- a/src/components/IconPicker.vue +++ b/src/components/IconPicker.vue @@ -6,7 +6,7 @@ {{ t('nav_menu.icon_picker.pick_icon') }} - +
- + diff --git a/src/components/ui/select/SelectTrigger.vue b/src/components/ui/select/SelectTrigger.vue index a86506b3..5ad3ade8 100644 --- a/src/components/ui/select/SelectTrigger.vue +++ b/src/components/ui/select/SelectTrigger.vue @@ -1,37 +1,36 @@ diff --git a/src/components/ui/slider/Slider.vue b/src/components/ui/slider/Slider.vue index 2d7d5fbc..51574e88 100644 --- a/src/components/ui/slider/Slider.vue +++ b/src/components/ui/slider/Slider.vue @@ -34,7 +34,7 @@ data-slot="slider" :class=" cn( - 'relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col', + 'relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col', props.class ) " diff --git a/src/composables/useAuthenticatedLayoutResizable.js b/src/composables/useAuthenticatedLayoutResizable.js index 19651ca9..8999f273 100644 --- a/src/composables/useAuthenticatedLayoutResizable.js +++ b/src/composables/useAuthenticatedLayoutResizable.js @@ -22,10 +22,10 @@ export function useAuthenticatedLayoutResizable() { const panelGroupRef = ref(null); const navPanelRef = ref(null); + const asidePanelRef = ref(null); const navExpandedSize = ref(null); const groupWidth = ref(fallbackWidth); let resizeObserver = null; - let windowResizeHandler = null; const getGroupWidth = () => { const element = panelGroupRef.value?.$el ?? panelGroupRef.value; @@ -111,11 +111,29 @@ export function useAuthenticatedLayoutResizable() { const resizeNavPanel = (targetSize) => navPanelRef.value?.resize?.(targetSize); + const resizeAsidePanel = (targetSize) => + asidePanelRef.value?.resize?.(targetSize); + const updateGroupWidth = () => { - groupWidth.value = getGroupWidth(); + const width = getGroupWidth(); + groupWidth.value = width; + if (isNavCollapsed.value) { resizeNavPanel(navCollapsedSize.value); + } else { + const targetSize = pxToPercent(navExpandedPx.value, width); + navExpandedSize.value = targetSize; + resizeNavPanel(targetSize); } + + if (!isSideBarTabShow.value) { + return; + } + + const storedAsidePx = asideWidth.value; + const asideTargetSize = + storedAsidePx > 0 ? pxToPercent(storedAsidePx, width, 0) : 0; + resizeAsidePanel(asideTargetSize); }; watch(isNavCollapsed, async (collapsed) => { @@ -144,9 +162,6 @@ export function useAuthenticatedLayoutResizable() { if (element && typeof ResizeObserver !== 'undefined') { resizeObserver = new ResizeObserver(updateGroupWidth); resizeObserver.observe(element); - } else if (typeof window !== 'undefined') { - windowResizeHandler = updateGroupWidth; - window.addEventListener('resize', windowResizeHandler); } }); @@ -155,15 +170,12 @@ export function useAuthenticatedLayoutResizable() { resizeObserver.disconnect(); resizeObserver = null; } - if (windowResizeHandler && typeof window !== 'undefined') { - window.removeEventListener('resize', windowResizeHandler); - windowResizeHandler = null; - } }); return { panelGroupRef, navPanelRef, + asidePanelRef, navDefaultSize, navMinSize, navMaxSize, diff --git a/src/views/Layout/AuthenticatedLayout.vue b/src/views/Layout/AuthenticatedLayout.vue index d935ef8b..66731237 100644 --- a/src/views/Layout/AuthenticatedLayout.vue +++ b/src/views/Layout/AuthenticatedLayout.vue @@ -26,6 +26,7 @@ 'z-20 [&>div]:-translate-x-1/2' ]">