ui: added persistent Sidebar Collapsibility and Sidebar Webpages

This commit is contained in:
Fahid Latheef Alungal
2025-01-25 11:15:48 +05:30
parent 828e195b81
commit 9e03e30bd8
2 changed files with 29 additions and 4 deletions

View File

@@ -23,7 +23,7 @@
<div <div
class="flex items-center justify-between pr-2 cursor-pointer" class="flex items-center justify-between pr-2 cursor-pointer"
:class="sidebarStore.isSidebarCollapsed ? 'pl-3' : 'pl-4'" :class="sidebarStore.isSidebarCollapsed ? 'pl-3' : 'pl-4'"
@click="showWebPages = !showWebPages" @click="toggleWebPages"
> >
<div <div
v-if="!sidebarStore.isSidebarCollapsed" v-if="!sidebarStore.isSidebarCollapsed"
@@ -32,7 +32,7 @@
<span class="grid h-5 w-6 flex-shrink-0 place-items-center"> <span class="grid h-5 w-6 flex-shrink-0 place-items-center">
<ChevronRight <ChevronRight
class="h-4 w-4 stroke-1.5 text-gray-900 transition-all duration-300 ease-in-out" class="h-4 w-4 stroke-1.5 text-gray-900 transition-all duration-300 ease-in-out"
:class="{ 'rotate-90': showWebPages }" :class="{ 'rotate-90': !sidebarStore.isWebpagesCollapsed }"
/> />
</span> </span>
<span class="ml-2"> <span class="ml-2">
@@ -48,7 +48,7 @@
<div <div
v-if="sidebarSettings.data?.web_pages?.length" v-if="sidebarSettings.data?.web_pages?.length"
class="flex flex-col transition-all duration-300 ease-in-out" class="flex flex-col transition-all duration-300 ease-in-out"
:class="showWebPages ? 'block' : 'hidden'" :class="!sidebarStore.isWebpagesCollapsed ? 'block' : 'hidden'"
> >
<SidebarLink <SidebarLink
v-for="link in sidebarSettings.data.web_pages" v-for="link in sidebarSettings.data.web_pages"
@@ -114,7 +114,6 @@ const showPageModal = ref(false)
const isModerator = ref(false) const isModerator = ref(false)
const isInstructor = ref(false) const isInstructor = ref(false)
const pageToEdit = ref(null) const pageToEdit = ref(null)
const showWebPages = ref(false)
const settingsStore = useSettings() const settingsStore = useSettings()
onMounted(() => { onMounted(() => {
@@ -266,5 +265,17 @@ watch(userResource, () => {
const toggleSidebar = () => { const toggleSidebar = () => {
sidebarStore.isSidebarCollapsed = !sidebarStore.isSidebarCollapsed sidebarStore.isSidebarCollapsed = !sidebarStore.isSidebarCollapsed
localStorage.setItem(
'isSidebarCollapsed',
JSON.stringify(sidebarStore.isSidebarCollapsed)
)
}
const toggleWebPages = () => {
sidebarStore.isWebpagesCollapsed = !sidebarStore.isWebpagesCollapsed
localStorage.setItem(
'isWebpagesCollapsed',
JSON.stringify(sidebarStore.isWebpagesCollapsed)
)
} }
</script> </script>

View File

@@ -3,8 +3,22 @@ import { ref } from 'vue'
export const useSidebar = defineStore('sidebar', () => { export const useSidebar = defineStore('sidebar', () => {
const isSidebarCollapsed = ref(false) const isSidebarCollapsed = ref(false)
const isWebpagesCollapsed = ref(true)
if (localStorage.getItem('isSidebarCollapsed')) {
isSidebarCollapsed.value = JSON.parse(
localStorage.getItem('isSidebarCollapsed')
)
}
if (localStorage.getItem('isWebpagesCollapsed')) {
isWebpagesCollapsed.value = JSON.parse(
localStorage.getItem('isWebpagesCollapsed')
)
}
return { return {
isSidebarCollapsed, isSidebarCollapsed,
isWebpagesCollapsed,
} }
}) })