| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import type { MENU_LINK_TYPE } from '~/types/enum/layout'
- import type { LINK_TARGET } from '~/types/enum/enums'
- interface IconItem {
- name?: string
- avatarId?: number | null
- avatarByDefault?: string
- }
- /**
- * Entrée d'un menu, correspondant à un lien de navigation
- */
- interface MenuItem {
- label: string
- icon?: IconItem
- to?: string
- /** Type de lien (interne, externe, v1) */
- type: MENU_LINK_TYPE
- avatar?: number
- /** Correspond à la page actuelle */
- active: boolean
- /** Définit l'attribut 'target' du lien */
- target?: LINK_TARGET
- /** Indique si l'item est à la fin d'une sous-section (bordure basse plus épaisse) */
- endOfSubsection?: boolean
- /** Sous-éléments du menu */
- children?: MenuItems
- /** Actions du menu */
- actions?: MenuItems
- /** Indique si le menu est étendu */
- expanded?: boolean
- }
- /**
- * Sous-menu, regroupant d'autres MenuItem et/ou MenuGroup
- */
- interface MenuGroup {
- label: string
- icon?: IconItem
- children?: MenuItems
- actions?: MenuItems
- target?: LINK_TARGET
- /** Lien de navigation */
- to?: string
- /** Indique si le menu est étendu */
- expanded?: boolean
- }
- type MenuItems = Array<MenuItem | MenuGroup>
- /**
- * Service responsable de la génération d'un menu
- */
- interface MenuBuilder {
- getMenuName: () => string
- build: () => MenuItem | MenuGroup | null
- }
- interface TreeSelectItem {
- id: string
- label: string
- normalizedLabel?: string
- value?: number | string
- type: 'category' | 'subcategory' | 'item'
- parentId?: string
- level: number
- }
|