import { AdminNavigationBuiltInCategory, BladeSizes, IIcon } from "../"; import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models"; export interface NavigationNodeInitializeMessage { readonly key: string; state: NavigationNodeReactiveState; } export interface NavigationNodeReactiveState { hidden: boolean; } export interface NavigationNode { /** * The key of the navigation node */ key?: string; /** * The title of the navigation node */ title: string; /** * The element that will be rendered when selected */ elementToRender: string; /** * The url segment will append after manifest id in url. */ customUrlSegment?: string; /** * The icon */ icon: IIcon; /** * This influence the order of the navigation nodes, be nice, use ordering with gap -100, 0, 100, 200 So other extensions etc can inject between */ weight: number; /** * The category that the navigation node belongs to * Any string or * @see AdminNavigationBuiltInCategory */ category: string | AdminNavigationBuiltInCategory; /** * Tooltip to show when hover on element */ tooltip?: string; /** * Show or Hide node in Omnia Admin by checking permission with input security role id on current context * * If SecurityRole is undefined, and the Category is Tenant scope, then it requires Tenant Admin permission in current context. * If SecurityRole is undefined, and the Category is Business Profile scope, then it requires Business Profile Admin permission in current context. * If SecurityRole is undefined, and the Category is App Instance scope, then it requires App Instance Amin permission in current context. * If SecurityRole is undefined, and the Category is not one of the Built-in scopes, then it requires Tenant Admin permission. * * If SecurityRole is any role, and the Category is Tenant scope, then it requires either Tenant Admin or the role permission in current context. * If SecurityRole is any role, and the Category is Business Profile scope, then it requires either Business Profile Admin or the role permission in current context. * If SecurityRole is any role, and the Category is App Instance scope, then it requires either App Instance Admin or the role permission in current context. * If SecurityRole is any role, and the Category is not one of the Built-in scopes, then it requires the role permission in current context. * * If securityRole is set to "AlwaysAuthorized", then it does not require any permission. */ securityRole?: "AlwaysAuthorized" | GuidValue; /** * Custom initializer to work with node reactivity state * @see NavigationNodeReactiveState * */ customInitializer?: boolean; } export interface BladeMenuNavigationNode { /** * The key of the navigation node */ key?: string; /** * The title of the navigation node */ title: string; /** * The element that will be rendered when selected */ elementToRender: string; /** * The icon */ icon: IIcon; /** * This influence the order of the navigation nodes, be nice, use ordering with gap -100, 0, 100, 200 So other extensions etc can inject between */ weight: number; /** * The size of the blade */ bladeSize: BladeSizes; }