@genesislcap/foundation-header 15.69.0 → 15.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom-elements.json +6 -0
- package/dist/dts/main/main.d.ts +5 -1
- package/dist/dts/main/main.d.ts.map +1 -1
- package/dist/dts/main/main.template.d.ts.map +1 -1
- package/dist/dts/main/nav-permissions.d.ts +11 -0
- package/dist/dts/main/nav-permissions.d.ts.map +1 -0
- package/dist/dts/templates/rapid.template.d.ts.map +1 -1
- package/dist/esm/main/main.js +12 -0
- package/dist/esm/main/main.template.js +5 -6
- package/dist/esm/main/nav-permissions.js +7 -0
- package/dist/esm/templates/rapid.template.js +25 -24
- package/dist/foundation-header.d.ts +5 -1
- package/package.json +20 -20
|
@@ -4304,6 +4304,12 @@
|
|
|
4304
4304
|
}
|
|
4305
4305
|
]
|
|
4306
4306
|
},
|
|
4307
|
+
{
|
|
4308
|
+
"kind": "javascript-module",
|
|
4309
|
+
"path": "src/main/nav-permissions.ts",
|
|
4310
|
+
"declarations": [],
|
|
4311
|
+
"exports": []
|
|
4312
|
+
},
|
|
4307
4313
|
{
|
|
4308
4314
|
"kind": "javascript-module",
|
|
4309
4315
|
"path": "src/styles/colors.ts",
|
package/dist/dts/main/main.d.ts
CHANGED
|
@@ -814,7 +814,11 @@ export declare class Navigation extends Navigation_base {
|
|
|
814
814
|
*
|
|
815
815
|
* @internal
|
|
816
816
|
*/
|
|
817
|
-
isUserPermitted(permission: string): boolean;
|
|
817
|
+
isUserPermitted(permission: string | string[]): boolean;
|
|
818
|
+
/** @internal */
|
|
819
|
+
isItemPermitted(navItem: FoundationRouteNavItem): boolean;
|
|
820
|
+
/** @internal */
|
|
821
|
+
hasPermittedNavItems(navItem: FoundationRouteNavItem): boolean;
|
|
818
822
|
/**
|
|
819
823
|
* Opens the flyout menu on the left hand side
|
|
820
824
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAAsB,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAQpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAEL,SAAS,EAKV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.template.d.ts","sourceRoot":"","sources":["../../../src/main/main.template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAO,YAAY,EAAkC,MAAM,uBAAuB,CAAC;AAiB1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAazC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,MAAM,EAAE,YAAY,MAAM,EAAE,SAAS,MAAM,WAM5F,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,UAAU,CAIpD,CAAC;
|
|
1
|
+
{"version":3,"file":"main.template.d.ts","sourceRoot":"","sources":["../../../src/main/main.template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAO,YAAY,EAAkC,MAAM,uBAAuB,CAAC;AAiB1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAazC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,MAAM,EAAE,YAAY,MAAM,EAAE,SAAS,MAAM,WAM5F,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,UAAU,CAIpD,CAAC;AAqMF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,+BAoMvB,CAAC;AAiDF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAM,2BAIzC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,UAAU,CAEpD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,+BAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FoundationRouteNavItem } from '@genesislcap/foundation-ui';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export type PermissionCheck = (permission: string | string[]) => boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Ignores child items: a parent still links to its own route, so it stays visible when none of its children are.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const isNavItemPermitted: (navItem: FoundationRouteNavItem, isUserPermitted: PermissionCheck) => boolean;
|
|
9
|
+
/** @internal */
|
|
10
|
+
export declare const hasPermittedNavItems: (navItem: FoundationRouteNavItem, isUserPermitted: PermissionCheck) => boolean;
|
|
11
|
+
//# sourceMappingURL=nav-permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-permissions.d.ts","sourceRoot":"","sources":["../../../src/main/nav-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,OAAO,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,sBAAsB,EAC/B,iBAAiB,eAAe,KAC/B,OAAqE,CAAC;AAEzE,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,GAC/B,SAAS,sBAAsB,EAC/B,iBAAiB,eAAe,KAC/B,OAA0F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rapid.template.d.ts","sourceRoot":"","sources":["../../../src/templates/rapid.template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiB1C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,UAAU,CAIpD,CAAC;
|
|
1
|
+
{"version":3,"file":"rapid.template.d.ts","sourceRoot":"","sources":["../../../src/templates/rapid.template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiB1C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,UAAU,CAIpD,CAAC;AA0KF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,+BAqKzB,CAAC"}
|
package/dist/esm/main/main.js
CHANGED
|
@@ -13,6 +13,7 @@ import { rapidTemplate } from '../templates/rapid.template';
|
|
|
13
13
|
import { logger } from '../utils';
|
|
14
14
|
import { MainStyles as styles } from './main.styles';
|
|
15
15
|
import { LoadingTemplate, mainTemplate, dynamicTemplate as template } from './main.template';
|
|
16
|
+
import { hasPermittedNavItems, isNavItemPermitted } from './nav-permissions';
|
|
16
17
|
// Default values for inactivity monitoring
|
|
17
18
|
const DEFAULT_INACTIVITY_TIMEOUT_MINUTES = 30;
|
|
18
19
|
const DEFAULT_INACTIVITY_WARNING_MINUTES = 5;
|
|
@@ -461,6 +462,14 @@ let Navigation = class Navigation extends EventEmitter(GenesisElement) {
|
|
|
461
462
|
isUserPermitted(permission) {
|
|
462
463
|
return this.user.hasPermission(permission);
|
|
463
464
|
}
|
|
465
|
+
/** @internal */
|
|
466
|
+
isItemPermitted(navItem) {
|
|
467
|
+
return isNavItemPermitted(navItem, (permission) => this.isUserPermitted(permission));
|
|
468
|
+
}
|
|
469
|
+
/** @internal */
|
|
470
|
+
hasPermittedNavItems(navItem) {
|
|
471
|
+
return hasPermittedNavItems(navItem, (permission) => this.isUserPermitted(permission));
|
|
472
|
+
}
|
|
464
473
|
/**
|
|
465
474
|
* Opens the flyout menu on the left hand side
|
|
466
475
|
*
|
|
@@ -645,6 +654,9 @@ let Navigation = class Navigation extends EventEmitter(GenesisElement) {
|
|
|
645
654
|
const currentPath = this.pathName;
|
|
646
655
|
// Check if any child route matches current path
|
|
647
656
|
return navItem.navItems.some((child) => {
|
|
657
|
+
if (!this.isItemPermitted(child)) {
|
|
658
|
+
return false;
|
|
659
|
+
}
|
|
648
660
|
if (child.routePath &&
|
|
649
661
|
currentPath.split('/').filter(Boolean).pop() ===
|
|
650
662
|
child.routePath.split('/').filter(Boolean).pop()) {
|
|
@@ -92,8 +92,7 @@ const defaultRouteNavItemsTemplate = html `
|
|
|
92
92
|
const routeNavItemsTemplate = (navId) => html `
|
|
93
93
|
<template>
|
|
94
94
|
${repeat((x) => x.routeNavItems, html `
|
|
95
|
-
${when((x, c) => x.navId === navId &&
|
|
96
|
-
(!x.permission || (x.permission && c.parent.isUserPermitted(x.permission))), html `
|
|
95
|
+
${when((x, c) => x.navId === navId && c.parent.isItemPermitted(x), html `
|
|
97
96
|
<div class="nav-button-wrapper">
|
|
98
97
|
<${buttonTag}
|
|
99
98
|
appearance="neutral-grey"
|
|
@@ -112,13 +111,13 @@ const routeNavItemsTemplate = (navId) => html `
|
|
|
112
111
|
></${iconTag}>
|
|
113
112
|
`)}
|
|
114
113
|
${(x, c) => c.parent.toLocalisedText(x.title)}
|
|
115
|
-
${when((x) =>
|
|
114
|
+
${when((x, c) => c.parent.hasPermittedNavItems(x), html `
|
|
116
115
|
<span class="dropdown-indicator">
|
|
117
116
|
<${iconTag} name="chevron-down" size="12"></${iconTag}>
|
|
118
117
|
</span>
|
|
119
118
|
`)}
|
|
120
119
|
</${buttonTag}>
|
|
121
|
-
${when((x) => x
|
|
120
|
+
${when((x, c) => c.parent.hasPermittedNavItems(x), html `
|
|
122
121
|
${(x, c) => routeNavSubmenuItemsTemplate(x, c.parent)}
|
|
123
122
|
`)}
|
|
124
123
|
</div>
|
|
@@ -129,7 +128,7 @@ const routeNavItemsTemplate = (navId) => html `
|
|
|
129
128
|
const routeNavSubmenuItemsTemplate = (item, context) => html `
|
|
130
129
|
<div class="nav-submenu-wrapper" part="nav-submenu-wrapper">
|
|
131
130
|
${repeat(() => item.navItems, html `
|
|
132
|
-
${when((x) =>
|
|
131
|
+
${when((x) => context.isItemPermitted(x), html `
|
|
133
132
|
<div class="nav-button-wrapper" part="nav-button-wrapper">
|
|
134
133
|
<${buttonTag}
|
|
135
134
|
appearance="neutral-grey"
|
|
@@ -149,7 +148,7 @@ const routeNavSubmenuItemsTemplate = (item, context) => html `
|
|
|
149
148
|
`)}
|
|
150
149
|
${(x) => context.toLocalisedText(x.title)}
|
|
151
150
|
</${buttonTag}>
|
|
152
|
-
${when((x) => x
|
|
151
|
+
${when((x) => context.hasPermittedNavItems(x), html `
|
|
153
152
|
${(x) => routeNavSubmenuItemsTemplate(x, context)}
|
|
154
153
|
`)}
|
|
155
154
|
</div>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ignores child items: a parent still links to its own route, so it stays visible when none of its children are.
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export const isNavItemPermitted = (navItem, isUserPermitted) => !navItem.permission || isUserPermitted(navItem.permission);
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const hasPermittedNavItems = (navItem, isUserPermitted) => { var _a; return !!((_a = navItem.navItems) === null || _a === void 0 ? void 0 : _a.some((child) => isNavItemPermitted(child, isUserPermitted))); };
|
|
@@ -73,8 +73,7 @@ const defaultRouteNavItemsTemplate = html `
|
|
|
73
73
|
const routeNavItemsTemplate = (navId) => html `
|
|
74
74
|
<template>
|
|
75
75
|
${repeat((x) => x.routeNavItems, html `
|
|
76
|
-
${when((x, c) => x.navId === navId &&
|
|
77
|
-
(!x.permission || (x.permission && c.parent.isUserPermitted(x.permission))), html `
|
|
76
|
+
${when((x, c) => x.navId === navId && c.parent.isItemPermitted(x), html `
|
|
78
77
|
<div class="nav-button-wrapper">
|
|
79
78
|
<${buttonTag}
|
|
80
79
|
appearance="neutral-grey"
|
|
@@ -93,7 +92,7 @@ const routeNavItemsTemplate = (navId) => html `
|
|
|
93
92
|
`)}
|
|
94
93
|
${(x, c) => c.parent.toLocalisedText(x.title)}
|
|
95
94
|
</${buttonTag}>
|
|
96
|
-
${when((x) => x
|
|
95
|
+
${when((x, c) => c.parent.hasPermittedNavItems(x), html `
|
|
97
96
|
${(x, c) => routeNavSubmenuItemsTemplate(x, c.parent)}
|
|
98
97
|
`)}
|
|
99
98
|
</div>
|
|
@@ -104,27 +103,29 @@ const routeNavItemsTemplate = (navId) => html `
|
|
|
104
103
|
const routeNavSubmenuItemsTemplate = (item, context) => html `
|
|
105
104
|
<div class="nav-submenu-wrapper">
|
|
106
105
|
${repeat(() => item.navItems, html `
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
${(x) =>
|
|
126
|
-
|
|
127
|
-
|
|
106
|
+
${when((x) => context.isItemPermitted(x), html `
|
|
107
|
+
<div class="nav-button-wrapper">
|
|
108
|
+
<${buttonTag}
|
|
109
|
+
appearance="neutral-grey"
|
|
110
|
+
class="nav-button"
|
|
111
|
+
@click=${(x) => context.handleNavButtonClick(x)}
|
|
112
|
+
data-test-id="${(x) => `${x.routePath}-button`}"
|
|
113
|
+
aria-label=${(x) => x.title}
|
|
114
|
+
>
|
|
115
|
+
${when((x) => x.icon, html `
|
|
116
|
+
<${iconTag}
|
|
117
|
+
name="${(x) => x.icon.name}"
|
|
118
|
+
variant="${(x) => x.icon.variant}"
|
|
119
|
+
size="${(x) => x.icon.size}"
|
|
120
|
+
></${iconTag}>
|
|
121
|
+
`)}
|
|
122
|
+
${(x) => context.toLocalisedText(x.title)}
|
|
123
|
+
</${buttonTag}>
|
|
124
|
+
${when((x) => context.hasPermittedNavItems(x), html `
|
|
125
|
+
${(x) => routeNavSubmenuItemsTemplate(x, context)}
|
|
126
|
+
`)}
|
|
127
|
+
</div>
|
|
128
|
+
`)}
|
|
128
129
|
`)}
|
|
129
130
|
</div>
|
|
130
131
|
`;
|
|
@@ -734,7 +734,11 @@ export declare class Navigation extends Navigation_base {
|
|
|
734
734
|
*
|
|
735
735
|
* @internal
|
|
736
736
|
*/
|
|
737
|
-
isUserPermitted(permission: string): boolean;
|
|
737
|
+
isUserPermitted(permission: string | string[]): boolean;
|
|
738
|
+
/** @internal */
|
|
739
|
+
isItemPermitted(navItem: FoundationRouteNavItem): boolean;
|
|
740
|
+
/** @internal */
|
|
741
|
+
hasPermittedNavItems(navItem: FoundationRouteNavItem): boolean;
|
|
738
742
|
/**
|
|
739
743
|
* Opens the flyout menu on the left hand side
|
|
740
744
|
*
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-header",
|
|
3
3
|
"description": "Genesis Foundation Header",
|
|
4
|
-
"version": "15.
|
|
4
|
+
"version": "15.70.0",
|
|
5
5
|
"license": "SEE LICENSE IN license.txt",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
7
7
|
"types": "dist/foundation-header.d.ts",
|
|
@@ -84,27 +84,27 @@
|
|
|
84
84
|
}
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@genesislcap/foundation-testing": "15.
|
|
88
|
-
"@genesislcap/genx": "15.
|
|
89
|
-
"@genesislcap/ts-builder": "15.
|
|
90
|
-
"@genesislcap/uvu-playwright-builder": "15.
|
|
91
|
-
"@genesislcap/vite-builder": "15.
|
|
92
|
-
"@genesislcap/webpack-builder": "15.
|
|
87
|
+
"@genesislcap/foundation-testing": "15.70.0",
|
|
88
|
+
"@genesislcap/genx": "15.70.0",
|
|
89
|
+
"@genesislcap/ts-builder": "15.70.0",
|
|
90
|
+
"@genesislcap/uvu-playwright-builder": "15.70.0",
|
|
91
|
+
"@genesislcap/vite-builder": "15.70.0",
|
|
92
|
+
"@genesislcap/webpack-builder": "15.70.0"
|
|
93
93
|
},
|
|
94
94
|
"dependencies": {
|
|
95
|
-
"@genesislcap/foundation-ai": "15.
|
|
96
|
-
"@genesislcap/foundation-auth": "15.
|
|
97
|
-
"@genesislcap/foundation-comms": "15.
|
|
98
|
-
"@genesislcap/foundation-events": "15.
|
|
99
|
-
"@genesislcap/foundation-i18n": "15.
|
|
100
|
-
"@genesislcap/foundation-logger": "15.
|
|
101
|
-
"@genesislcap/foundation-shell": "15.
|
|
102
|
-
"@genesislcap/foundation-ui": "15.
|
|
103
|
-
"@genesislcap/foundation-user": "15.
|
|
104
|
-
"@genesislcap/foundation-utils": "15.
|
|
105
|
-
"@genesislcap/foundation-zero": "15.
|
|
106
|
-
"@genesislcap/rapid-design-system": "15.
|
|
107
|
-
"@genesislcap/web-core": "15.
|
|
95
|
+
"@genesislcap/foundation-ai": "15.70.0",
|
|
96
|
+
"@genesislcap/foundation-auth": "15.70.0",
|
|
97
|
+
"@genesislcap/foundation-comms": "15.70.0",
|
|
98
|
+
"@genesislcap/foundation-events": "15.70.0",
|
|
99
|
+
"@genesislcap/foundation-i18n": "15.70.0",
|
|
100
|
+
"@genesislcap/foundation-logger": "15.70.0",
|
|
101
|
+
"@genesislcap/foundation-shell": "15.70.0",
|
|
102
|
+
"@genesislcap/foundation-ui": "15.70.0",
|
|
103
|
+
"@genesislcap/foundation-user": "15.70.0",
|
|
104
|
+
"@genesislcap/foundation-utils": "15.70.0",
|
|
105
|
+
"@genesislcap/foundation-zero": "15.70.0",
|
|
106
|
+
"@genesislcap/rapid-design-system": "15.70.0",
|
|
107
|
+
"@genesislcap/web-core": "15.70.0"
|
|
108
108
|
},
|
|
109
109
|
"repository": {
|
|
110
110
|
"type": "git",
|