feat(front) : add shared useModules/useSidebar composables and sidebar types
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
const activeModuleIds = ref<string[]>([])
|
||||||
|
const loaded = ref(false)
|
||||||
|
|
||||||
|
export function useModules() {
|
||||||
|
async function loadModules(): Promise<void> {
|
||||||
|
const api = useApi()
|
||||||
|
const data = await api.get<{ modules: string[] }>('/modules', {}, { toast: false })
|
||||||
|
activeModuleIds.value = data.modules ?? []
|
||||||
|
loaded.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function isModuleActive(id: string): boolean {
|
||||||
|
return activeModuleIds.value.includes(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetModules(): void {
|
||||||
|
activeModuleIds.value = []
|
||||||
|
loaded.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
return { activeModuleIds, loaded, loadModules, isModuleActive, resetModules }
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
import type { SidebarSection } from '~/shared/types/sidebar'
|
||||||
|
|
||||||
|
const sections = ref<SidebarSection[]>([])
|
||||||
|
const disabledRoutes = ref<string[]>([])
|
||||||
|
const loaded = ref(false)
|
||||||
|
|
||||||
|
export function useSidebar() {
|
||||||
|
async function loadSidebar(): Promise<void> {
|
||||||
|
const api = useApi()
|
||||||
|
const data = await api.get<{ sections: SidebarSection[]; disabledRoutes: string[] }>(
|
||||||
|
'/sidebar', {}, { toast: false },
|
||||||
|
)
|
||||||
|
sections.value = data.sections ?? []
|
||||||
|
disabledRoutes.value = data.disabledRoutes ?? []
|
||||||
|
loaded.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function isRouteDisabled(path: string): boolean {
|
||||||
|
return disabledRoutes.value.some(
|
||||||
|
(disabled) => path === disabled || path.startsWith(disabled + '/'),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetSidebar(): void {
|
||||||
|
sections.value = []
|
||||||
|
disabledRoutes.value = []
|
||||||
|
loaded.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
return { sections, disabledRoutes, loaded, loadSidebar, isRouteDisabled, resetSidebar }
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
export type SidebarItem = {
|
||||||
|
label: string
|
||||||
|
to: string
|
||||||
|
icon: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export type SidebarSection = {
|
||||||
|
label: string
|
||||||
|
icon: string
|
||||||
|
items: SidebarItem[]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user