@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
95 lines (94 loc) • 3.49 kB
TypeScript
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;
}