@genesislcap/foundation-header 14.497.0 → 14.498.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 +416 -2
- package/dist/dts/components/rapid-components.d.ts.map +1 -1
- package/dist/dts/components/zero-components.d.ts.map +1 -1
- package/dist/dts/config/templates.d.ts +1 -0
- package/dist/dts/config/templates.d.ts.map +1 -1
- package/dist/dts/main/feature-flags-nav.d.ts +19 -0
- package/dist/dts/main/feature-flags-nav.d.ts.map +1 -0
- package/dist/dts/main/main.d.ts +95 -1
- package/dist/dts/main/main.d.ts.map +1 -1
- package/dist/dts/main/main.styles.d.ts.map +1 -1
- package/dist/dts/main/main.template.d.ts.map +1 -1
- package/dist/dts/react.d.ts +3 -0
- package/dist/dts/tags/tags.d.ts +4 -0
- package/dist/dts/tags/tags.d.ts.map +1 -1
- package/dist/dts/templates/rapid.template.d.ts.map +1 -1
- package/dist/esm/components/rapid-components.js +2 -2
- package/dist/esm/components/zero-components.js +2 -2
- package/dist/esm/config/templates.js +2 -0
- package/dist/esm/main/feature-flags-nav.js +5 -0
- package/dist/esm/main/main.js +107 -2
- package/dist/esm/main/main.styles.js +40 -0
- package/dist/esm/main/main.template.js +41 -1
- package/dist/esm/tags/tags.js +4 -0
- package/dist/esm/templates/rapid.template.js +41 -0
- package/dist/foundation-header.api.json +270 -2
- package/dist/foundation-header.d.ts +98 -1
- package/dist/react.cjs +18 -3
- package/dist/react.mjs +18 -3
- package/package.json +22 -22
package/dist/dts/main/main.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export type NavEventDetailMap = {
|
|
|
30
30
|
'misc-icon-clicked': void;
|
|
31
31
|
'notification-icon-clicked': void;
|
|
32
32
|
'language-changed': void;
|
|
33
|
+
'feature-flags-changed': string[];
|
|
33
34
|
'nav-button-clicked': NavButtonClickDetail;
|
|
34
35
|
};
|
|
35
36
|
/**
|
|
@@ -40,8 +41,25 @@ export type LanguageOptions = {
|
|
|
40
41
|
availableLanguages: string[];
|
|
41
42
|
selectedLanguage: string;
|
|
42
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* A single feature flag option shown in the header multi-select.
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
export type FeatureFlagDefinition = {
|
|
49
|
+
/** Feature flag name used in the URL as `feature.<name>`. */
|
|
50
|
+
name: string;
|
|
51
|
+
/** Display label for the multi-select option. */
|
|
52
|
+
label: string;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Options for the feature flags selector
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
export type FeatureFlagOptions = {
|
|
59
|
+
availableFlags: FeatureFlagDefinition[];
|
|
60
|
+
};
|
|
43
61
|
declare const Navigation_base: abstract new (...args: any[]) => {
|
|
44
|
-
$emit<K extends "luminance-icon-clicked" | "logout-clicked" | "misc-icon-clicked" | "notification-icon-clicked" | "language-changed" | "nav-button-clicked">(...args: NavEventDetailMap[K] extends void ? [type: K, options?: import("@genesislcap/foundation-events").EmitOptions] : [type: K, detail: NavEventDetailMap[K], options?: import("@genesislcap/foundation-events").EmitOptions]): import("@genesislcap/foundation-events").EmitReturn;
|
|
62
|
+
$emit<K extends "luminance-icon-clicked" | "logout-clicked" | "misc-icon-clicked" | "notification-icon-clicked" | "language-changed" | "feature-flags-changed" | "nav-button-clicked">(...args: NavEventDetailMap[K] extends void ? [type: K, options?: import("@genesislcap/foundation-events").EmitOptions] : [type: K, detail: NavEventDetailMap[K], options?: import("@genesislcap/foundation-events").EmitOptions]): import("@genesislcap/foundation-events").EmitReturn;
|
|
45
63
|
accessKey: string;
|
|
46
64
|
readonly accessKeyLabel: string;
|
|
47
65
|
autocapitalize: string;
|
|
@@ -416,6 +434,7 @@ declare const Navigation_base: abstract new (...args: any[]) => {
|
|
|
416
434
|
* @param show-connection-indicator - Boolean attribute which controls whether the navigation bar will display the connection indicator.
|
|
417
435
|
* @param show-environment-indicator - Boolean attribute which controls whether the navigation bar will display the environment indicator.
|
|
418
436
|
* @param show-language-selector - Boolean attribute which controls whether the navigation bar will display the language selector.
|
|
437
|
+
* @param show-feature-flags-selector - Optional. Force-show the Feature Flags button; normally unnecessary because the button appears automatically when `featureFlagOptions.availableFlags` is non-empty.
|
|
419
438
|
* @param hide-side-bar - Boolean attribute which controls whether the navigation bar will display the side bar.
|
|
420
439
|
* @param show-account-menu - Boolean attribute which controls whether the navigation bar will display the account menu.
|
|
421
440
|
* @param logout-button-position - String attribute which controls the position of the logout button in the header.
|
|
@@ -424,6 +443,7 @@ declare const Navigation_base: abstract new (...args: any[]) => {
|
|
|
424
443
|
* @param routeButtons - Array of objects which define the route buttons to be displayed in the navigation bar.
|
|
425
444
|
* @param routeNavItems - Array of {@link @genesislcap/foundation-ui#FoundationRouteNavItem | FoundationRouteNavItems} which define the route buttons to be displayed in the navigation bar.
|
|
426
445
|
* @param languageOptions - Object which defines the language options to be displayed in the language selector.
|
|
446
|
+
* @param featureFlagOptions - Object which defines the feature flag options. When `availableFlags` is non-empty, the Feature Flags button is shown automatically.
|
|
427
447
|
* @param inactivity-timeout-minutes - Number attribute which sets the inactivity timeout in minutes (default: 30).
|
|
428
448
|
* @param inactivity-warning-minutes - Number attribute which sets the inactivity warning time in minutes before timeout (default: 5).
|
|
429
449
|
* @param enable-inactivity-monitoring - Boolean attribute which controls whether to enable inactivity monitoring (default: true).
|
|
@@ -434,6 +454,7 @@ declare const Navigation_base: abstract new (...args: any[]) => {
|
|
|
434
454
|
* @fires misc-icon-clicked - Dispatched when the user clicks on the miscellaneous behaviour icon in the navigation bar.
|
|
435
455
|
* @fires notification-icon-clicked - Dispatched when the user clicks on the notification icon in the navigation bar.
|
|
436
456
|
* @fires language-changed - Dispatched when the user changes the language in the language selector.
|
|
457
|
+
* @fires feature-flags-changed - Dispatched when the user changes the selected feature flags. detail: `string[]`
|
|
437
458
|
* @fires logout-clicked - Dispatched when the user clicks logout button.
|
|
438
459
|
* @fires nav-button-clicked - Dispatched when the user clicks a navigation button. detail: `NavButtonClickDetail`
|
|
439
460
|
*
|
|
@@ -498,6 +519,10 @@ export declare class Navigation extends Navigation_base {
|
|
|
498
519
|
* Called when the component is connected to the DOM
|
|
499
520
|
*/
|
|
500
521
|
connectedCallback(): Promise<void>;
|
|
522
|
+
/**
|
|
523
|
+
* @internal
|
|
524
|
+
*/
|
|
525
|
+
readyChanged(_previous: boolean, next: boolean): void;
|
|
501
526
|
setLuminance(): void;
|
|
502
527
|
/**
|
|
503
528
|
* Initialize the inactivity manager
|
|
@@ -596,6 +621,49 @@ export declare class Navigation extends Navigation_base {
|
|
|
596
621
|
* Object which defines the language options to be displayed in the language selector
|
|
597
622
|
*/
|
|
598
623
|
languageOptions: LanguageOptions;
|
|
624
|
+
/**
|
|
625
|
+
* Optional boolean attribute to force-show the Feature Flags button.
|
|
626
|
+
* Control via `show-feature-flags-selector`
|
|
627
|
+
*
|
|
628
|
+
* @remarks
|
|
629
|
+
*
|
|
630
|
+
* Usually unnecessary: the button is shown automatically when
|
|
631
|
+
* {@link Navigation.featureFlagOptions} has a non-empty `availableFlags` list.
|
|
632
|
+
*/
|
|
633
|
+
showFeatureFlagsSelector: boolean;
|
|
634
|
+
/**
|
|
635
|
+
* Feature flags available in the header selector.
|
|
636
|
+
*
|
|
637
|
+
* @remarks
|
|
638
|
+
*
|
|
639
|
+
* When `availableFlags` is non-empty, the Feature Flags button is shown automatically.
|
|
640
|
+
* Selected flags are synced to URL `feature.*` query params and the page reloads so
|
|
641
|
+
* boot-time consumers re-evaluate.
|
|
642
|
+
*/
|
|
643
|
+
featureFlagOptions: FeatureFlagOptions;
|
|
644
|
+
/**
|
|
645
|
+
* Whether the feature flags panel is open.
|
|
646
|
+
* @internal
|
|
647
|
+
*/
|
|
648
|
+
featureFlagsPanelOpen: boolean;
|
|
649
|
+
/**
|
|
650
|
+
* @internal
|
|
651
|
+
*/
|
|
652
|
+
featureFlagOptionsChanged(): void;
|
|
653
|
+
/**
|
|
654
|
+
* @internal
|
|
655
|
+
*/
|
|
656
|
+
showFeatureFlagsSelectorChanged(): void;
|
|
657
|
+
/**
|
|
658
|
+
* Re-run `[hidden]` bindings on the feature flags nav control.
|
|
659
|
+
*
|
|
660
|
+
* @remarks
|
|
661
|
+
* FAST `when(false)` does not reliably re-open when `featureFlagOptions` is assigned after
|
|
662
|
+
* connect (common with React props). The nav markup stays mounted; visibility uses `[hidden]`.
|
|
663
|
+
*
|
|
664
|
+
* @internal
|
|
665
|
+
*/
|
|
666
|
+
private notifyFeatureFlagsNavVisibility;
|
|
599
667
|
/**
|
|
600
668
|
* Boolean attribute which controls whether to include the sideNav component
|
|
601
669
|
* Control via`hide-side-bar`
|
|
@@ -801,6 +869,32 @@ export declare class Navigation extends Navigation_base {
|
|
|
801
869
|
* @experimental
|
|
802
870
|
*/
|
|
803
871
|
changeLanguage(e: CustomEvent): void;
|
|
872
|
+
/**
|
|
873
|
+
* Toggles the feature flags panel open/closed.
|
|
874
|
+
*/
|
|
875
|
+
toggleFeatureFlagsPanel(): void;
|
|
876
|
+
/**
|
|
877
|
+
* Changes the active URL feature flags and reloads the page.
|
|
878
|
+
*
|
|
879
|
+
* @remarks
|
|
880
|
+
*
|
|
881
|
+
* Activated when the user changes the selection in the feature flags multi-select.
|
|
882
|
+
* Writes presence-only `feature.<name>` query params via
|
|
883
|
+
* {@link @genesislcap/foundation-utils#setActivatedFeatures}.
|
|
884
|
+
*/
|
|
885
|
+
changeFeatureFlags(e: CustomEvent<string[]>): void;
|
|
886
|
+
/**
|
|
887
|
+
* Multiselect options derived from {@link Navigation.featureFlagOptions}.
|
|
888
|
+
*/
|
|
889
|
+
getFeatureFlagMultiselectOptions(): {
|
|
890
|
+
value: string;
|
|
891
|
+
label: string;
|
|
892
|
+
}[];
|
|
893
|
+
/**
|
|
894
|
+
* Currently selected feature flag names based on URL `feature.*` params.
|
|
895
|
+
* Multiselect expects selected option *values* (strings), not full option objects.
|
|
896
|
+
*/
|
|
897
|
+
getSelectedFeatureFlagValues(): string[];
|
|
804
898
|
/**
|
|
805
899
|
* To localised text
|
|
806
900
|
* @remarks
|
|
@@ -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;
|
|
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.styles.d.ts","sourceRoot":"","sources":["../../../src/main/main.styles.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"main.styles.d.ts","sourceRoot":"","sources":["../../../src/main/main.styles.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,iDA+bgD,CAAC"}
|
|
@@ -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;
|
|
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;AAuMF;;;;;;;;;;;;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"}
|
package/dist/dts/react.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ export declare const Navigation: React.ForwardRefExoticComponent<
|
|
|
54
54
|
onMiscIconClicked?: (event: CustomEvent<unknown>) => void;
|
|
55
55
|
onNotificationIconClicked?: (event: CustomEvent<unknown>) => void;
|
|
56
56
|
onLanguageChanged?: (event: CustomEvent<unknown>) => void;
|
|
57
|
+
onFeatureFlagsChanged?: (event: CustomEvent<string[]>) => void;
|
|
57
58
|
onLogoutClicked?: (event: CustomEvent<unknown>) => void;
|
|
58
59
|
onNavButtonClicked?: (event: CustomEvent<NavButtonClickDetail>) => void;
|
|
59
60
|
}
|
|
@@ -69,6 +70,7 @@ export declare const ZeroHeader: React.ForwardRefExoticComponent<
|
|
|
69
70
|
onMiscIconClicked?: (event: CustomEvent<unknown>) => void;
|
|
70
71
|
onNotificationIconClicked?: (event: CustomEvent<unknown>) => void;
|
|
71
72
|
onLanguageChanged?: (event: CustomEvent<unknown>) => void;
|
|
73
|
+
onFeatureFlagsChanged?: (event: CustomEvent<string[]>) => void;
|
|
72
74
|
onLogoutClicked?: (event: CustomEvent<unknown>) => void;
|
|
73
75
|
onNavButtonClicked?: (event: CustomEvent<NavButtonClickDetail>) => void;
|
|
74
76
|
}
|
|
@@ -84,6 +86,7 @@ export declare const RapidHeader: React.ForwardRefExoticComponent<
|
|
|
84
86
|
onMiscIconClicked?: (event: CustomEvent<unknown>) => void;
|
|
85
87
|
onNotificationIconClicked?: (event: CustomEvent<unknown>) => void;
|
|
86
88
|
onLanguageChanged?: (event: CustomEvent<unknown>) => void;
|
|
89
|
+
onFeatureFlagsChanged?: (event: CustomEvent<string[]>) => void;
|
|
87
90
|
onLogoutClicked?: (event: CustomEvent<unknown>) => void;
|
|
88
91
|
onNavButtonClicked?: (event: CustomEvent<NavButtonClickDetail>) => void;
|
|
89
92
|
}
|
package/dist/dts/tags/tags.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/tags/tags.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AAEH;;GAEG;AACH,eAAO,MAAQ,eAAe,+CACkB,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,OAAO,QAA+B,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAA8C,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAA+C,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,WAAW,QAAmC,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GAAI,aAAQ,EAAE,YAAO,WAc7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/tags/tags.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AAEH;;GAEG;AACH,eAAO,MAAQ,eAAe,+CACkB,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,OAAO,QAA+B,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAA8C,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAA+C,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,SAAS,QAAiC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,WAAW,QAAmC,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GAAI,aAAQ,EAAE,YAAO,WAc7C,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;
|
|
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;AAuKF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,+BAqKzB,CAAC"}
|
|
@@ -17,7 +17,7 @@ function rapidDesignSystemImport() {
|
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
19
|
export const registerCommonRapidComponents = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
-
const { provideDesignSystem, rapidIcon, rapidButton, designSystemProvider: rapidDesignSystemProvider, rapidSelect, rapidListboxOption, rapidFlyout, rapidConnectionIndicator, } = yield rapidDesignSystemImport();
|
|
20
|
+
const { provideDesignSystem, rapidIcon, rapidButton, designSystemProvider: rapidDesignSystemProvider, rapidSelect, rapidListboxOption, rapidMultiselect, rapidFlyout, rapidConnectionIndicator, } = yield rapidDesignSystemImport();
|
|
21
21
|
/**
|
|
22
22
|
* Register the components the app is using with the system.
|
|
23
23
|
*/
|
|
@@ -29,5 +29,5 @@ export const registerCommonRapidComponents = () => __awaiter(void 0, void 0, voi
|
|
|
29
29
|
/**
|
|
30
30
|
* Common across most routes, so batch register these lightweight components upfront.
|
|
31
31
|
*/
|
|
32
|
-
rapidIcon(), rapidButton(), rapidSelect(), rapidListboxOption(), rapidFlyout(), rapidConnectionIndicator);
|
|
32
|
+
rapidIcon(), rapidButton(), rapidSelect(), rapidListboxOption(), rapidMultiselect(), rapidFlyout(), rapidConnectionIndicator);
|
|
33
33
|
});
|
|
@@ -3,7 +3,7 @@ import { __awaiter } from "tslib";
|
|
|
3
3
|
* @public
|
|
4
4
|
*/
|
|
5
5
|
export const registerCommonZeroComponents = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
6
|
-
const { provideDesignSystem, zeroIcon, zeroButton, zeroDesignSystemProvider, zeroSelect, zeroListboxOption, zeroFlyout, } = yield import(
|
|
6
|
+
const { provideDesignSystem, zeroIcon, zeroButton, zeroDesignSystemProvider, zeroSelect, zeroListboxOption, zeroMultiselect, zeroFlyout, } = yield import(
|
|
7
7
|
/* webpackChunkName: "foundation-zero" */
|
|
8
8
|
'@genesislcap/foundation-zero');
|
|
9
9
|
/**
|
|
@@ -17,5 +17,5 @@ export const registerCommonZeroComponents = () => __awaiter(void 0, void 0, void
|
|
|
17
17
|
/**
|
|
18
18
|
* Common across most routes, so batch register these lightweight components upfront.
|
|
19
19
|
*/
|
|
20
|
-
zeroIcon(), zeroButton(), zeroSelect(), zeroListboxOption(), zeroFlyout());
|
|
20
|
+
zeroIcon(), zeroButton(), zeroSelect(), zeroListboxOption(), zeroMultiselect(), zeroFlyout());
|
|
21
21
|
});
|
|
@@ -13,6 +13,7 @@ export const templateOptionsByDesiginSystemPrefix = {
|
|
|
13
13
|
environmentIndicator: 'zero-environment-indicator',
|
|
14
14
|
select: 'zero-select',
|
|
15
15
|
option: 'zero-option',
|
|
16
|
+
multiselect: 'zero-multiselect',
|
|
16
17
|
flyout: 'zero-flyout',
|
|
17
18
|
provider: 'zero-design-system-provider',
|
|
18
19
|
},
|
|
@@ -24,6 +25,7 @@ export const templateOptionsByDesiginSystemPrefix = {
|
|
|
24
25
|
environmentIndicator: 'rapid-environment-indicator',
|
|
25
26
|
select: 'rapid-select',
|
|
26
27
|
option: 'rapid-option',
|
|
28
|
+
multiselect: 'rapid-multiselect',
|
|
27
29
|
flyout: 'rapid-flyout',
|
|
28
30
|
provider: 'rapid-design-system-provider',
|
|
29
31
|
},
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when the Feature Flags button should be visible in the header nav.
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export const isFeatureFlagsNavVisible = (host) => { var _a, _b, _c; return !!host.showFeatureFlagsSelector || ((_c = (_b = (_a = host.featureFlagOptions) === null || _a === void 0 ? void 0 : _a.availableFlags) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0; };
|
package/dist/esm/main/main.js
CHANGED
|
@@ -5,8 +5,8 @@ import { EventEmitter } from '@genesislcap/foundation-events';
|
|
|
5
5
|
import { I18next } from '@genesislcap/foundation-i18n';
|
|
6
6
|
import { FoundationRouteNav } from '@genesislcap/foundation-ui';
|
|
7
7
|
import { User } from '@genesislcap/foundation-user';
|
|
8
|
-
import { InactivityManager, RouteUtil } from '@genesislcap/foundation-utils';
|
|
9
|
-
import { attr, Container, customElement, GenesisElement, observable } from '@genesislcap/web-core';
|
|
8
|
+
import { InactivityManager, isFeatureActivated, RouteUtil, setActivatedFeatures, } from '@genesislcap/foundation-utils';
|
|
9
|
+
import { attr, Container, customElement, GenesisElement, observable, Observable, } from '@genesislcap/web-core';
|
|
10
10
|
import logo from '../assets/logo.svg';
|
|
11
11
|
import { HeaderConfig } from '../config/config';
|
|
12
12
|
import { rapidTemplate } from '../templates/rapid.template';
|
|
@@ -36,6 +36,7 @@ const DEFAULT_INACTIVITY_WARNING_MINUTES = 5;
|
|
|
36
36
|
* @param show-connection-indicator - Boolean attribute which controls whether the navigation bar will display the connection indicator.
|
|
37
37
|
* @param show-environment-indicator - Boolean attribute which controls whether the navigation bar will display the environment indicator.
|
|
38
38
|
* @param show-language-selector - Boolean attribute which controls whether the navigation bar will display the language selector.
|
|
39
|
+
* @param show-feature-flags-selector - Optional. Force-show the Feature Flags button; normally unnecessary because the button appears automatically when `featureFlagOptions.availableFlags` is non-empty.
|
|
39
40
|
* @param hide-side-bar - Boolean attribute which controls whether the navigation bar will display the side bar.
|
|
40
41
|
* @param show-account-menu - Boolean attribute which controls whether the navigation bar will display the account menu.
|
|
41
42
|
* @param logout-button-position - String attribute which controls the position of the logout button in the header.
|
|
@@ -44,6 +45,7 @@ const DEFAULT_INACTIVITY_WARNING_MINUTES = 5;
|
|
|
44
45
|
* @param routeButtons - Array of objects which define the route buttons to be displayed in the navigation bar.
|
|
45
46
|
* @param routeNavItems - Array of {@link @genesislcap/foundation-ui#FoundationRouteNavItem | FoundationRouteNavItems} which define the route buttons to be displayed in the navigation bar.
|
|
46
47
|
* @param languageOptions - Object which defines the language options to be displayed in the language selector.
|
|
48
|
+
* @param featureFlagOptions - Object which defines the feature flag options. When `availableFlags` is non-empty, the Feature Flags button is shown automatically.
|
|
47
49
|
* @param inactivity-timeout-minutes - Number attribute which sets the inactivity timeout in minutes (default: 30).
|
|
48
50
|
* @param inactivity-warning-minutes - Number attribute which sets the inactivity warning time in minutes before timeout (default: 5).
|
|
49
51
|
* @param enable-inactivity-monitoring - Boolean attribute which controls whether to enable inactivity monitoring (default: true).
|
|
@@ -54,6 +56,7 @@ const DEFAULT_INACTIVITY_WARNING_MINUTES = 5;
|
|
|
54
56
|
* @fires misc-icon-clicked - Dispatched when the user clicks on the miscellaneous behaviour icon in the navigation bar.
|
|
55
57
|
* @fires notification-icon-clicked - Dispatched when the user clicks on the notification icon in the navigation bar.
|
|
56
58
|
* @fires language-changed - Dispatched when the user changes the language in the language selector.
|
|
59
|
+
* @fires feature-flags-changed - Dispatched when the user changes the selected feature flags. detail: `string[]`
|
|
57
60
|
* @fires logout-clicked - Dispatched when the user clicks logout button.
|
|
58
61
|
* @fires nav-button-clicked - Dispatched when the user clicks a navigation button. detail: `NavButtonClickDetail`
|
|
59
62
|
*
|
|
@@ -157,6 +160,21 @@ let Navigation = class Navigation extends EventEmitter(GenesisElement) {
|
|
|
157
160
|
availableLanguages: Object.keys((_a = this.i18next.config.resources) !== null && _a !== void 0 ? _a : {}),
|
|
158
161
|
selectedLanguage: this.i18next.config.lng,
|
|
159
162
|
};
|
|
163
|
+
/**
|
|
164
|
+
* Optional boolean attribute to force-show the Feature Flags button.
|
|
165
|
+
* Control via `show-feature-flags-selector`
|
|
166
|
+
*
|
|
167
|
+
* @remarks
|
|
168
|
+
*
|
|
169
|
+
* Usually unnecessary: the button is shown automatically when
|
|
170
|
+
* {@link Navigation.featureFlagOptions} has a non-empty `availableFlags` list.
|
|
171
|
+
*/
|
|
172
|
+
this.showFeatureFlagsSelector = false;
|
|
173
|
+
/**
|
|
174
|
+
* Whether the feature flags panel is open.
|
|
175
|
+
* @internal
|
|
176
|
+
*/
|
|
177
|
+
this.featureFlagsPanelOpen = false;
|
|
160
178
|
/**
|
|
161
179
|
* String attribute which controls the position of the logout button in the header
|
|
162
180
|
* Control via `logout-button-position`
|
|
@@ -193,8 +211,19 @@ let Navigation = class Navigation extends EventEmitter(GenesisElement) {
|
|
|
193
211
|
this.userName = (_a = this.user.userName) !== null && _a !== void 0 ? _a : 'Genesis User';
|
|
194
212
|
}
|
|
195
213
|
this.initializeInactivityManager();
|
|
214
|
+
this.notifyFeatureFlagsNavVisibility();
|
|
215
|
+
// React and other hosts often assign object properties after connect.
|
|
216
|
+
queueMicrotask(() => this.notifyFeatureFlagsNavVisibility());
|
|
196
217
|
});
|
|
197
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* @internal
|
|
221
|
+
*/
|
|
222
|
+
readyChanged(_previous, next) {
|
|
223
|
+
if (next) {
|
|
224
|
+
this.notifyFeatureFlagsNavVisibility();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
198
227
|
setLuminance() {
|
|
199
228
|
localStorage.setItem('luminance', this.luminanceToggle ? 'light' : 'dark');
|
|
200
229
|
}
|
|
@@ -240,6 +269,31 @@ let Navigation = class Navigation extends EventEmitter(GenesisElement) {
|
|
|
240
269
|
showNotificationsButtonChanged() {
|
|
241
270
|
logger.deprecated('show-notification-button', 'Leave unset and add/remove PBC Notify instead.');
|
|
242
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* @internal
|
|
274
|
+
*/
|
|
275
|
+
featureFlagOptionsChanged() {
|
|
276
|
+
this.notifyFeatureFlagsNavVisibility();
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* @internal
|
|
280
|
+
*/
|
|
281
|
+
showFeatureFlagsSelectorChanged() {
|
|
282
|
+
this.notifyFeatureFlagsNavVisibility();
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Re-run `[hidden]` bindings on the feature flags nav control.
|
|
286
|
+
*
|
|
287
|
+
* @remarks
|
|
288
|
+
* FAST `when(false)` does not reliably re-open when `featureFlagOptions` is assigned after
|
|
289
|
+
* connect (common with React props). The nav markup stays mounted; visibility uses `[hidden]`.
|
|
290
|
+
*
|
|
291
|
+
* @internal
|
|
292
|
+
*/
|
|
293
|
+
notifyFeatureFlagsNavVisibility() {
|
|
294
|
+
Observable.notify(this, 'featureFlagOptions');
|
|
295
|
+
Observable.notify(this, 'showFeatureFlagsSelector');
|
|
296
|
+
}
|
|
243
297
|
/**
|
|
244
298
|
* @internal
|
|
245
299
|
*/
|
|
@@ -431,6 +485,48 @@ let Navigation = class Navigation extends EventEmitter(GenesisElement) {
|
|
|
431
485
|
this.$emit('language-changed', e.detail.value);
|
|
432
486
|
this.i18next.changeLanguageTo(e.detail.value);
|
|
433
487
|
}
|
|
488
|
+
/**
|
|
489
|
+
* Toggles the feature flags panel open/closed.
|
|
490
|
+
*/
|
|
491
|
+
toggleFeatureFlagsPanel() {
|
|
492
|
+
this.featureFlagsPanelOpen = !this.featureFlagsPanelOpen;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Changes the active URL feature flags and reloads the page.
|
|
496
|
+
*
|
|
497
|
+
* @remarks
|
|
498
|
+
*
|
|
499
|
+
* Activated when the user changes the selection in the feature flags multi-select.
|
|
500
|
+
* Writes presence-only `feature.<name>` query params via
|
|
501
|
+
* {@link @genesislcap/foundation-utils#setActivatedFeatures}.
|
|
502
|
+
*/
|
|
503
|
+
changeFeatureFlags(e) {
|
|
504
|
+
var _a;
|
|
505
|
+
const selected = ((_a = e.detail) !== null && _a !== void 0 ? _a : []).filter((name) => !!name);
|
|
506
|
+
this.featureFlagsPanelOpen = false;
|
|
507
|
+
this.$emit('feature-flags-changed', selected);
|
|
508
|
+
setActivatedFeatures(selected);
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Multiselect options derived from {@link Navigation.featureFlagOptions}.
|
|
512
|
+
*/
|
|
513
|
+
getFeatureFlagMultiselectOptions() {
|
|
514
|
+
var _a, _b;
|
|
515
|
+
return ((_b = (_a = this.featureFlagOptions) === null || _a === void 0 ? void 0 : _a.availableFlags) !== null && _b !== void 0 ? _b : []).map(({ name, label }) => ({
|
|
516
|
+
value: name,
|
|
517
|
+
label,
|
|
518
|
+
}));
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Currently selected feature flag names based on URL `feature.*` params.
|
|
522
|
+
* Multiselect expects selected option *values* (strings), not full option objects.
|
|
523
|
+
*/
|
|
524
|
+
getSelectedFeatureFlagValues() {
|
|
525
|
+
var _a, _b;
|
|
526
|
+
return ((_b = (_a = this.featureFlagOptions) === null || _a === void 0 ? void 0 : _a.availableFlags) !== null && _b !== void 0 ? _b : [])
|
|
527
|
+
.map(({ name }) => name)
|
|
528
|
+
.filter((name) => isFeatureActivated(name));
|
|
529
|
+
}
|
|
434
530
|
/**
|
|
435
531
|
* To localised text
|
|
436
532
|
* @remarks
|
|
@@ -567,6 +663,15 @@ __decorate([
|
|
|
567
663
|
__decorate([
|
|
568
664
|
observable
|
|
569
665
|
], Navigation.prototype, "languageOptions", void 0);
|
|
666
|
+
__decorate([
|
|
667
|
+
attr({ mode: 'boolean', attribute: 'show-feature-flags-selector' })
|
|
668
|
+
], Navigation.prototype, "showFeatureFlagsSelector", void 0);
|
|
669
|
+
__decorate([
|
|
670
|
+
observable
|
|
671
|
+
], Navigation.prototype, "featureFlagOptions", void 0);
|
|
672
|
+
__decorate([
|
|
673
|
+
observable
|
|
674
|
+
], Navigation.prototype, "featureFlagsPanelOpen", void 0);
|
|
570
675
|
__decorate([
|
|
571
676
|
attr({ mode: 'boolean', attribute: 'hide-side-bar' })
|
|
572
677
|
], Navigation.prototype, "hideSideBar", void 0);
|
|
@@ -186,6 +186,46 @@ export const MainStyles = css `
|
|
|
186
186
|
border-color: #333;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
.feature-flags-wrapper {
|
|
190
|
+
position: relative;
|
|
191
|
+
display: flex;
|
|
192
|
+
align-items: center;
|
|
193
|
+
padding: 0;
|
|
194
|
+
margin: 0;
|
|
195
|
+
line-height: 0;
|
|
196
|
+
font-size: 0;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.feature-flags-wrapper[hidden] {
|
|
200
|
+
display: none !important;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.feature-flags-button {
|
|
204
|
+
position: relative;
|
|
205
|
+
z-index: 2;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.feature-flags-panel {
|
|
209
|
+
position: absolute;
|
|
210
|
+
top: 100%;
|
|
211
|
+
right: 0;
|
|
212
|
+
z-index: 1000;
|
|
213
|
+
margin-top: calc(var(--design-unit) * 1px);
|
|
214
|
+
padding: calc(var(--design-unit) * 2px);
|
|
215
|
+
background: var(--foundation-header-background-color, var(--neutral-layer-2));
|
|
216
|
+
border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-rest);
|
|
217
|
+
border-radius: calc(var(--control-corner-radius) * 1px);
|
|
218
|
+
box-shadow: 0 4px 12px rgb(0 0 0 / 20%);
|
|
219
|
+
line-height: normal;
|
|
220
|
+
font-size: var(--type-ramp-base-font-size);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.feature-flags-selector {
|
|
224
|
+
width: 250px;
|
|
225
|
+
min-width: 250px;
|
|
226
|
+
max-width: 250px;
|
|
227
|
+
}
|
|
228
|
+
|
|
189
229
|
${flyoutTag}::part(flyout),
|
|
190
230
|
${flyoutTag}::part(footer) {
|
|
191
231
|
padding: 0;
|
|
@@ -3,7 +3,8 @@ import { getApp } from '@genesislcap/foundation-shell/app';
|
|
|
3
3
|
import { avoidTreeShaking } from '@genesislcap/foundation-utils';
|
|
4
4
|
import { ref, classNames, html, repeat, when } from '@genesislcap/web-core';
|
|
5
5
|
import { ControlPanel } from '../components';
|
|
6
|
-
import { aiIndicatorTag, buttonTag, connectionIndicatorTag, environmentIndicatorTag, flyoutTag, getTagHelper, iconTag, optionTag, providerTag, selectTag, } from '../tags';
|
|
6
|
+
import { aiIndicatorTag, buttonTag, connectionIndicatorTag, environmentIndicatorTag, flyoutTag, getTagHelper, iconTag, multiselectTag, optionTag, providerTag, selectTag, } from '../tags';
|
|
7
|
+
import { isFeatureFlagsNavVisible } from './feature-flags-nav';
|
|
7
8
|
avoidTreeShaking(ControlPanel);
|
|
8
9
|
const app = getApp();
|
|
9
10
|
/**
|
|
@@ -331,6 +332,45 @@ export const navTemplate = html `
|
|
|
331
332
|
`)}
|
|
332
333
|
</${selectTag}>
|
|
333
334
|
`)}
|
|
335
|
+
<div
|
|
336
|
+
class="feature-flags-wrapper"
|
|
337
|
+
part="feature-flags-wrapper"
|
|
338
|
+
?hidden=${(x) => !isFeatureFlagsNavVisible(x)}
|
|
339
|
+
>
|
|
340
|
+
<${buttonTag}
|
|
341
|
+
appearance="neutral-grey"
|
|
342
|
+
class="nav-button feature-flags-button"
|
|
343
|
+
data-test-id="feature-flags-button"
|
|
344
|
+
part="feature-flags-button"
|
|
345
|
+
aria-label="Feature flags"
|
|
346
|
+
aria-haspopup="true"
|
|
347
|
+
?aria-expanded=${(x) => x.featureFlagsPanelOpen}
|
|
348
|
+
@click=${(x) => x.toggleFeatureFlagsPanel()}
|
|
349
|
+
>
|
|
350
|
+
Feature Flags
|
|
351
|
+
</${buttonTag}>
|
|
352
|
+
${when((x) => x.featureFlagsPanelOpen, html `
|
|
353
|
+
<div
|
|
354
|
+
class="feature-flags-panel"
|
|
355
|
+
data-test-id="feature-flags-selector"
|
|
356
|
+
part="feature-flags-panel"
|
|
357
|
+
>
|
|
358
|
+
<${multiselectTag}
|
|
359
|
+
class="feature-flags-selector"
|
|
360
|
+
name="Features"
|
|
361
|
+
?search="${() => false}"
|
|
362
|
+
?all="${() => false}"
|
|
363
|
+
?creatable="${() => false}"
|
|
364
|
+
:options=${(x) => x.getFeatureFlagMultiselectOptions()}
|
|
365
|
+
:selectedOptions=${(x) => x.getSelectedFeatureFlagValues()}
|
|
366
|
+
@selectionChange="${(x, c) => x.changeFeatureFlags(c.event)}"
|
|
367
|
+
aria-label="Select Features"
|
|
368
|
+
>
|
|
369
|
+
<span slot="label">Select Features</span>
|
|
370
|
+
</${multiselectTag}>
|
|
371
|
+
</div>
|
|
372
|
+
`)}
|
|
373
|
+
</div>
|
|
334
374
|
${() => accountMenuTemplate}
|
|
335
375
|
</div>
|
|
336
376
|
${when((x) => x.showControlPanel, html `
|
package/dist/esm/tags/tags.js
CHANGED
|
@@ -42,6 +42,10 @@ export const selectTag = tagFor(templateOptions.select);
|
|
|
42
42
|
* @internal
|
|
43
43
|
*/
|
|
44
44
|
export const optionTag = tagFor(templateOptions.option);
|
|
45
|
+
/**
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
export const multiselectTag = tagFor(templateOptions.multiselect);
|
|
45
49
|
/**
|
|
46
50
|
* @internal
|
|
47
51
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isAIFeatureEnabled } from '@genesislcap/foundation-ai';
|
|
2
2
|
import { getApp } from '@genesislcap/foundation-shell/app';
|
|
3
3
|
import { html, repeat, when } from '@genesislcap/web-core';
|
|
4
|
+
import { isFeatureFlagsNavVisible } from '../main/feature-flags-nav';
|
|
4
5
|
import { getTagHelper } from '../tags';
|
|
5
6
|
const app = getApp();
|
|
6
7
|
const getTagHelperRapid = getTagHelper.bind(null, 'rapid');
|
|
@@ -12,6 +13,7 @@ const connectionIndicatorTag = getTagHelperRapid('connectionIndicator');
|
|
|
12
13
|
const aiIndicatorTag = getTagHelperRapid('aiIndicator');
|
|
13
14
|
const optionTag = getTagHelperRapid('option');
|
|
14
15
|
const selectTag = getTagHelperRapid('select');
|
|
16
|
+
const multiselectTag = getTagHelperRapid('multiselect');
|
|
15
17
|
/**
|
|
16
18
|
* Top level template for Navigation class
|
|
17
19
|
*
|
|
@@ -276,6 +278,45 @@ ${when((x) => !x.hideSideBar, sideNavTemplate)}
|
|
|
276
278
|
`)}
|
|
277
279
|
</${selectTag}>
|
|
278
280
|
`)}
|
|
281
|
+
<div
|
|
282
|
+
class="feature-flags-wrapper"
|
|
283
|
+
part="feature-flags-wrapper"
|
|
284
|
+
?hidden=${(x) => !isFeatureFlagsNavVisible(x)}
|
|
285
|
+
>
|
|
286
|
+
<${buttonTag}
|
|
287
|
+
appearance="neutral-grey"
|
|
288
|
+
class="nav-button feature-flags-button"
|
|
289
|
+
data-test-id="feature-flags-button"
|
|
290
|
+
part="feature-flags-button"
|
|
291
|
+
aria-label="Feature flags"
|
|
292
|
+
aria-haspopup="true"
|
|
293
|
+
?aria-expanded=${(x) => x.featureFlagsPanelOpen}
|
|
294
|
+
@click=${(x) => x.toggleFeatureFlagsPanel()}
|
|
295
|
+
>
|
|
296
|
+
Feature Flags
|
|
297
|
+
</${buttonTag}>
|
|
298
|
+
${when((x) => x.featureFlagsPanelOpen, html `
|
|
299
|
+
<div
|
|
300
|
+
class="feature-flags-panel"
|
|
301
|
+
data-test-id="feature-flags-selector"
|
|
302
|
+
part="feature-flags-panel"
|
|
303
|
+
>
|
|
304
|
+
<${multiselectTag}
|
|
305
|
+
class="feature-flags-selector"
|
|
306
|
+
name="Features"
|
|
307
|
+
?search="${() => false}"
|
|
308
|
+
?all="${() => false}"
|
|
309
|
+
?creatable="${() => false}"
|
|
310
|
+
:options=${(x) => x.getFeatureFlagMultiselectOptions()}
|
|
311
|
+
:selectedOptions=${(x) => x.getSelectedFeatureFlagValues()}
|
|
312
|
+
@selectionChange="${(x, c) => x.changeFeatureFlags(c.event)}"
|
|
313
|
+
aria-label="Select Features"
|
|
314
|
+
>
|
|
315
|
+
<span slot="label">Select Features</span>
|
|
316
|
+
</${multiselectTag}>
|
|
317
|
+
</div>
|
|
318
|
+
`)}
|
|
319
|
+
</div>
|
|
279
320
|
|
|
280
321
|
<${buttonTag} appearance="neutral-grey" data-test-id="user-button" class="nav-button" aria-label="User button">
|
|
281
322
|
<${iconTag} name="user-circle"></${iconTag}>
|