|
@@ -1,8 +1,10 @@
|
|
|
-import {MenuItem, MenuItems, IconItem, MENU_LINK_TYPE, MenuGroup, MenuBuilder} from '~/types/menus'
|
|
|
|
|
|
|
+import {IconItem, MenuBuilder, MenuGroup, MenuItem, MenuItems} from '~/types/layout'
|
|
|
|
|
+import {MENU_LINK_TYPE} from "~/types/enum/layout";
|
|
|
import {RuntimeConfig} from "@nuxt/schema";
|
|
import {RuntimeConfig} from "@nuxt/schema";
|
|
|
import Url from "~/services/utils/url";
|
|
import Url from "~/services/utils/url";
|
|
|
import {AnyAbility} from "@casl/ability";
|
|
import {AnyAbility} from "@casl/ability";
|
|
|
import {accessState, organizationState} from "~/types/interfaces";
|
|
import {accessState, organizationState} from "~/types/interfaces";
|
|
|
|
|
+import {Router} from "vue-router";
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Classe de base des menus et sous-menus.
|
|
* Classe de base des menus et sous-menus.
|
|
@@ -19,7 +21,7 @@ abstract class AbstractMenuBuilder implements MenuBuilder{
|
|
|
runtimeConfig: RuntimeConfig,
|
|
runtimeConfig: RuntimeConfig,
|
|
|
ability: AnyAbility,
|
|
ability: AnyAbility,
|
|
|
organizationProfile: organizationState,
|
|
organizationProfile: organizationState,
|
|
|
- accessProfile: accessState
|
|
|
|
|
|
|
+ accessProfile: accessState,
|
|
|
) {
|
|
) {
|
|
|
this.runtimeConfig = runtimeConfig
|
|
this.runtimeConfig = runtimeConfig
|
|
|
this.ability = ability
|
|
this.ability = ability
|
|
@@ -33,12 +35,12 @@ abstract class AbstractMenuBuilder implements MenuBuilder{
|
|
|
abstract name(): string
|
|
abstract name(): string
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * Construit et retourne un menu ou sous-menu selon le profil de l'utilisateur, le profil de son organisation,
|
|
|
|
|
|
|
+ * Construit et retourne un menu ou sous-menu selon le profil de l'utilisateur, le profil de son organisation
|
|
|
* et les droits de l'utilisateur.
|
|
* et les droits de l'utilisateur.
|
|
|
*
|
|
*
|
|
|
* Si le menu comporte plusieurs éléments, retourne une instance de MenuGroup
|
|
* Si le menu comporte plusieurs éléments, retourne une instance de MenuGroup
|
|
|
* Si le menu ne comporte qu'un seul élément, retourne une instance de MenuItem
|
|
* Si le menu ne comporte qu'un seul élément, retourne une instance de MenuItem
|
|
|
- * Si le menu ne comporte aucun élément, retourne null
|
|
|
|
|
|
|
+ * Si le menu ne comporte aucun élément, retourne null.
|
|
|
*/
|
|
*/
|
|
|
abstract build (): MenuItem | MenuGroup | null
|
|
abstract build (): MenuItem | MenuGroup | null
|
|
|
|
|
|
|
@@ -48,15 +50,15 @@ abstract class AbstractMenuBuilder implements MenuBuilder{
|
|
|
* @param label
|
|
* @param label
|
|
|
* @param icon
|
|
* @param icon
|
|
|
* @param {Array<MenuItem>} children Tableau d'ItemMenu représentant les sous menu du menu principal
|
|
* @param {Array<MenuItem>} children Tableau d'ItemMenu représentant les sous menu du menu principal
|
|
|
- * @param active
|
|
|
|
|
|
|
+ * @param expanded
|
|
|
*/
|
|
*/
|
|
|
protected createGroup(
|
|
protected createGroup(
|
|
|
label: string,
|
|
label: string,
|
|
|
icon?: IconItem,
|
|
icon?: IconItem,
|
|
|
children: MenuItems = [],
|
|
children: MenuItems = [],
|
|
|
- active: boolean = true
|
|
|
|
|
|
|
+ expanded: boolean = false
|
|
|
): MenuGroup {
|
|
): MenuGroup {
|
|
|
- return { label, icon, children, active }
|
|
|
|
|
|
|
+ return { label, icon, children, expanded }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -67,7 +69,6 @@ abstract class AbstractMenuBuilder implements MenuBuilder{
|
|
|
* @param to
|
|
* @param to
|
|
|
* @param type
|
|
* @param type
|
|
|
* @param isAction
|
|
* @param isAction
|
|
|
- * @param active
|
|
|
|
|
* @return {MenuItem}
|
|
* @return {MenuItem}
|
|
|
*/
|
|
*/
|
|
|
protected createItem (
|
|
protected createItem (
|
|
@@ -75,8 +76,7 @@ abstract class AbstractMenuBuilder implements MenuBuilder{
|
|
|
icon?: IconItem,
|
|
icon?: IconItem,
|
|
|
to: string = '',
|
|
to: string = '',
|
|
|
type: MENU_LINK_TYPE = MENU_LINK_TYPE.INTERNAL,
|
|
type: MENU_LINK_TYPE = MENU_LINK_TYPE.INTERNAL,
|
|
|
- isAction = false,
|
|
|
|
|
- active: boolean = true
|
|
|
|
|
|
|
+ isAction = false
|
|
|
): MenuItem {
|
|
): MenuItem {
|
|
|
let url: string
|
|
let url: string
|
|
|
|
|
|
|
@@ -89,7 +89,7 @@ abstract class AbstractMenuBuilder implements MenuBuilder{
|
|
|
url = to
|
|
url = to
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return { icon, label, to: url, type, active, isAction }
|
|
|
|
|
|
|
+ return { icon, label, to: url, type, isAction , active: false }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
protected buildSubmenu(menuBuilder: typeof AbstractMenuBuilder) {
|
|
protected buildSubmenu(menuBuilder: typeof AbstractMenuBuilder) {
|