3131 :adminUser =" coreStore.adminUser"
3232 />
3333 </div >
34- <div class =" absolute top-1.5 -right-4 z-10 hidden sm:block" v-if =" iconOnlySidebarEnabled && (!isSidebarIconOnly || (isSidebarIconOnly && isSidebarHovering))" >
34+ <div class =" absolute top-1.5 -right-4 z-10 hidden sm:block" v-if =" !forceIconOnly && iconOnlySidebarEnabled && (!isSidebarIconOnly || (isSidebarIconOnly && isSidebarHovering))" >
3535 <button class =" text-sm text-lightSidebarIcons group-hover:text-lightSidebarIconsHover dark:group-hover:text-darkSidebarIconsHover dark:text-darkSidebarIcons" @click =" toggleSidebar" >
3636 <IconCloseSidebarSolid v-if =" !isSidebarIconOnly" class =" w-5 h-5 active:scale-95 transition-all duration-200 hover:text-lightSidebarIconsHover dark:hover:text-darkSidebarIconsHover" />
3737 <IconOpenSidebarSolid v-else class =" w-5 h-5 active:scale-95 transition-all duration-200 hover:text-lightSidebarIconsHover dark:hover:text-darkSidebarIconsHover" />
@@ -286,6 +286,7 @@ import adminforth from '@/adminforth';
286286
287287interface Props {
288288 sideBarOpen: boolean ;
289+ forceIconOnly? : boolean ;
289290}
290291
291292const props = defineProps <Props >();
@@ -304,15 +305,21 @@ const sidebarAside = ref(null);
304305
305306const smQuery = window .matchMedia (' (min-width: 640px)' );
306307const isMobile = ref (! smQuery .matches );
307- const iconOnlySidebarEnabled = computed (() => coreStore .config ?.iconOnlySidebar ?.enabled !== false );
308- const isSidebarIconOnly = ref (! isMobile . value && localStorage . getItem ( ' afIconOnlySidebar ' ) === ' true ' );
308+ const iconOnlySidebarEnabled = computed (() => props . forceIconOnly === true || coreStore .config ?.iconOnlySidebar ?.enabled !== false );
309+ const isSidebarIconOnly = ref (false );
309310
310311function handleBreakpointChange(e : MediaQueryListEvent ) {
311312 isMobile .value = ! e .matches ;
312313 if (isMobile .value ) {
313314 isSidebarIconOnly .value = false ;
314315 } else {
315- isSidebarIconOnly .value = iconOnlySidebarEnabled .value && localStorage .getItem (' afIconOnlySidebar' ) === ' true' ;
316+ if (props .forceIconOnly === true ) {
317+ isSidebarIconOnly .value = true ;
318+ } else if (iconOnlySidebarEnabled .value && localStorage .getItem (' afIconOnlySidebar' ) === ' true' ) {
319+ isSidebarIconOnly .value = true ;
320+ } else {
321+ isSidebarIconOnly .value = false ;
322+ }
316323 }
317324}
318325
@@ -323,6 +330,9 @@ const isSidebarHovering = ref(false);
323330const isTogglingSidebar = ref (false );
324331
325332function toggleSidebar() {
333+ if (props .forceIconOnly ) {
334+ return ;
335+ }
326336 if (! iconOnlySidebarEnabled .value ) {
327337 return ;
328338 }
@@ -358,7 +368,7 @@ watch(()=>coreStore.menu, () => {
358368
359369
360370watch (isSidebarIconOnly , (isIconOnly ) => {
361- if (! isMobile .value && iconOnlySidebarEnabled .value ) {
371+ if (! isMobile .value && iconOnlySidebarEnabled .value && ! props . forceIconOnly ) {
362372 localStorage .setItem (' afIconOnlySidebar' , isIconOnly .toString ());
363373 }
364374 emit (' sidebarStateChange' , { isSidebarIconOnly: isIconOnly , isSidebarHovering: isSidebarHovering .value });
@@ -416,4 +426,18 @@ onMounted(() => {
416426onUnmounted (() => {
417427 smQuery .removeEventListener (' change' , handleBreakpointChange );
418428})
429+
430+ watch (() => props .forceIconOnly , (force ) => {
431+ if (isMobile .value ) {
432+ isSidebarIconOnly .value = false ;
433+ return ;
434+ }
435+ if (props .forceIconOnly === true ) {
436+ isSidebarIconOnly .value = true ;
437+ } else if (iconOnlySidebarEnabled .value && localStorage .getItem (' afIconOnlySidebar' ) === ' true' ) {
438+ isSidebarIconOnly .value = true ;
439+ } else {
440+ isSidebarIconOnly .value = false ;
441+ }
442+ }, { immediate: true })
419443 </script >
0 commit comments