@genesislcap/foundation-utils 14.319.0 → 14.320.1-alpha-9a9ec86.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.
Files changed (62) hide show
  1. package/dist/custom-elements.json +750 -115
  2. package/dist/dts/env/variables.d.ts +5 -0
  3. package/dist/dts/env/variables.d.ts.map +1 -1
  4. package/dist/dts/inactivity/inactivity-dialog.d.ts +23 -0
  5. package/dist/dts/inactivity/inactivity-dialog.d.ts.map +1 -0
  6. package/dist/dts/inactivity/inactivity-manager.d.ts +24 -0
  7. package/dist/dts/inactivity/inactivity-manager.d.ts.map +1 -0
  8. package/dist/dts/inactivity/inactivity-service.d.ts +34 -0
  9. package/dist/dts/inactivity/inactivity-service.d.ts.map +1 -0
  10. package/dist/dts/inactivity/index.d.ts +4 -0
  11. package/dist/dts/inactivity/index.d.ts.map +1 -0
  12. package/dist/dts/index.d.ts +1 -0
  13. package/dist/dts/index.d.ts.map +1 -1
  14. package/dist/esm/env/variables.js +8 -0
  15. package/dist/esm/inactivity/inactivity-dialog.js +213 -0
  16. package/dist/esm/inactivity/inactivity-manager.js +85 -0
  17. package/dist/esm/inactivity/inactivity-service.js +128 -0
  18. package/dist/esm/inactivity/index.js +3 -0
  19. package/dist/esm/index.js +1 -0
  20. package/dist/foundation-utils.api.json +1240 -0
  21. package/dist/foundation-utils.d.ts +88 -0
  22. package/docs/api/foundation-utils.accept_terms_url.md +12 -0
  23. package/docs/api/foundation-utils.inactivityconfig.md +71 -0
  24. package/docs/api/foundation-utils.inactivityconfig.timeoutminutes.md +11 -0
  25. package/docs/api/foundation-utils.inactivityconfig.warningminutes.md +11 -0
  26. package/docs/api/foundation-utils.inactivitydialog.disconnectedcallback.md +15 -0
  27. package/docs/api/foundation-utils.inactivitydialog.handlecontinue.md +15 -0
  28. package/docs/api/foundation-utils.inactivitydialog.handlelogout.md +15 -0
  29. package/docs/api/foundation-utils.inactivitydialog.hide.md +15 -0
  30. package/docs/api/foundation-utils.inactivitydialog.isvisible.md +11 -0
  31. package/docs/api/foundation-utils.inactivitydialog.md +152 -0
  32. package/docs/api/foundation-utils.inactivitydialog.remainingseconds.md +11 -0
  33. package/docs/api/foundation-utils.inactivitydialog.show.md +50 -0
  34. package/docs/api/foundation-utils.inactivitydialogoptions.md +88 -0
  35. package/docs/api/foundation-utils.inactivitydialogoptions.oncontinue.md +11 -0
  36. package/docs/api/foundation-utils.inactivitydialogoptions.onlogout.md +11 -0
  37. package/docs/api/foundation-utils.inactivitydialogoptions.remainingseconds.md +11 -0
  38. package/docs/api/foundation-utils.inactivityevents._inactivity-reset_.md +11 -0
  39. package/docs/api/foundation-utils.inactivityevents._inactivity-timeout_.md +11 -0
  40. package/docs/api/foundation-utils.inactivityevents._inactivity-warning_.md +13 -0
  41. package/docs/api/foundation-utils.inactivityevents.md +88 -0
  42. package/docs/api/foundation-utils.inactivitymanager._constructor_.md +48 -0
  43. package/docs/api/foundation-utils.inactivitymanager.destroy.md +15 -0
  44. package/docs/api/foundation-utils.inactivitymanager.getservice.md +15 -0
  45. package/docs/api/foundation-utils.inactivitymanager.iswarningvisible.md +15 -0
  46. package/docs/api/foundation-utils.inactivitymanager.md +138 -0
  47. package/docs/api/foundation-utils.inactivitymanager.reset.md +15 -0
  48. package/docs/api/foundation-utils.inactivitymanager.start.md +15 -0
  49. package/docs/api/foundation-utils.inactivitymanager.stop.md +15 -0
  50. package/docs/api/foundation-utils.inactivitymanagerconfig.md +55 -0
  51. package/docs/api/foundation-utils.inactivitymanagerconfig.onlogout.md +11 -0
  52. package/docs/api/foundation-utils.inactivityservice._constructor_.md +48 -0
  53. package/docs/api/foundation-utils.inactivityservice.destroy.md +15 -0
  54. package/docs/api/foundation-utils.inactivityservice.md +138 -0
  55. package/docs/api/foundation-utils.inactivityservice.off.md +64 -0
  56. package/docs/api/foundation-utils.inactivityservice.on.md +64 -0
  57. package/docs/api/foundation-utils.inactivityservice.resettimer.md +15 -0
  58. package/docs/api/foundation-utils.inactivityservice.start.md +15 -0
  59. package/docs/api/foundation-utils.inactivityservice.stop.md +15 -0
  60. package/docs/api/foundation-utils.md +73 -0
  61. package/docs/api-report.md.api.md +93 -0
  62. package/package.json +11 -11
@@ -134,4 +134,9 @@ export { SSO_LOGIN_URL };
134
134
  */
135
135
  declare let ENVIRONMENT_LEVEL: string;
136
136
  export { ENVIRONMENT_LEVEL };
137
+ /**
138
+ * @public
139
+ */
140
+ declare let ACCEPT_TERMS_URL: string;
141
+ export { ACCEPT_TERMS_URL };
137
142
  //# sourceMappingURL=variables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/env/variables.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,QAAA,IAAI,QAAQ,EAAE,MAAkB,CAAC;AAQjC,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;AAG/B;;;;;;;GAOG;AACH,QAAA,IAAI,YAAY,EAAE,MAAY,CAAC;AAS/B,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAGvC;;;;;;;;GAQG;AACH,QAAA,IAAI,WAAW,EAAE,MAAc,CAAC;AAQhC,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC;AAGrC;;;;GAIG;AACH,QAAA,IAAI,WAAW,EAAE,MAAM,CAAC;AAMxB,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAgG,CAAC;AAOhI;;;;;;GAMG;AACH,QAAA,IAAI,SAAS,EAAE,MAAwD,CAAC;AAQxE,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC;AAGjC;;;;GAIG;AACH,QAAA,IAAI,YAAY,EAAE,MAAM,CAAC;AAMzB,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAKvC;;;;GAIG;AACH,QAAA,IAAI,qBAAqB,EAAE,MAAM,CAAC;AAMlC,OAAO,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;AAGzD;;;;GAIG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAM,CAAC;AAM9B,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;AAGjD;;;;GAIG;AACH,QAAA,IAAI,aAAa,EAAE,MAAM,CAAC;AAM1B,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,CAAC;AAGzC;;GAEG;AACH,QAAA,IAAI,SAAS,EAAE,MAA+B,CAAC;AAM/C,OAAO,EAAE,SAAS,EAAE,CAAC;AAGrB;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAA+B,CAAC;AAMvD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAkC,CAAC;AAM1D,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,UAAU,EAAE,MAA2B,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB;;GAEG;AACH,QAAA,IAAI,mBAAmB,EAAE,MAAyC,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B;;GAEG;AACH,QAAA,IAAI,mBAAmB,EAAE,MAAgD,CAAC;AAM1E,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B;;GAEG;AACH,QAAA,IAAI,kBAAkB,EAAE,MAA0C,CAAC;AAMnE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAG9B;;GAEG;AACH,QAAA,IAAI,YAAY,EAAE,MAAuB,CAAC;AAM1C,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB;;GAEG;AACH,QAAA,IAAI,aAAa,EAAE,MAAoC,CAAC;AAMxD,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAkB,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/env/variables.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,QAAA,IAAI,QAAQ,EAAE,MAAkB,CAAC;AAQjC,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;AAG/B;;;;;;;GAOG;AACH,QAAA,IAAI,YAAY,EAAE,MAAY,CAAC;AAS/B,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAGvC;;;;;;;;GAQG;AACH,QAAA,IAAI,WAAW,EAAE,MAAc,CAAC;AAQhC,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC;AAGrC;;;;GAIG;AACH,QAAA,IAAI,WAAW,EAAE,MAAM,CAAC;AAMxB,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAgG,CAAC;AAOhI;;;;;;GAMG;AACH,QAAA,IAAI,SAAS,EAAE,MAAwD,CAAC;AAQxE,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC;AAGjC;;;;GAIG;AACH,QAAA,IAAI,YAAY,EAAE,MAAM,CAAC;AAMzB,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAKvC;;;;GAIG;AACH,QAAA,IAAI,qBAAqB,EAAE,MAAM,CAAC;AAMlC,OAAO,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;AAGzD;;;;GAIG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAM,CAAC;AAM9B,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;AAGjD;;;;GAIG;AACH,QAAA,IAAI,aAAa,EAAE,MAAM,CAAC;AAM1B,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,CAAC;AAGzC;;GAEG;AACH,QAAA,IAAI,SAAS,EAAE,MAA+B,CAAC;AAM/C,OAAO,EAAE,SAAS,EAAE,CAAC;AAGrB;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAA+B,CAAC;AAMvD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAkC,CAAC;AAM1D,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,UAAU,EAAE,MAA2B,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB;;GAEG;AACH,QAAA,IAAI,mBAAmB,EAAE,MAAyC,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B;;GAEG;AACH,QAAA,IAAI,mBAAmB,EAAE,MAAgD,CAAC;AAM1E,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B;;GAEG;AACH,QAAA,IAAI,kBAAkB,EAAE,MAA0C,CAAC;AAMnE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAG9B;;GAEG;AACH,QAAA,IAAI,YAAY,EAAE,MAAuB,CAAC;AAM1C,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB;;GAEG;AACH,QAAA,IAAI,aAAa,EAAE,MAAoC,CAAC;AAMxD,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAkB,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,gBAAgB,EAAE,MAAgC,CAAC;AAMvD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { FASTElement } from '@microsoft/fast-element';
2
+ export interface InactivityDialogOptions {
3
+ remainingSeconds: number;
4
+ onContinue: () => void;
5
+ onLogout: () => void;
6
+ }
7
+ export declare class InactivityDialog extends FASTElement {
8
+ isVisible: boolean;
9
+ remainingSeconds: number;
10
+ private onContinue?;
11
+ private onLogout?;
12
+ private countdownInterval?;
13
+ private startTime;
14
+ private totalSeconds;
15
+ show(options: InactivityDialogOptions): void;
16
+ hide(): void;
17
+ private startCountdown;
18
+ private stopCountdown;
19
+ handleContinue(): void;
20
+ handleLogout(): void;
21
+ disconnectedCallback(): void;
22
+ }
23
+ //# sourceMappingURL=inactivity-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inactivity-dialog.d.ts","sourceRoot":"","sources":["../../../src/inactivity/inactivity-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAyB,MAAM,yBAAyB,CAAC;AAM5F,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AA0CD,qBAgGa,gBAAiB,SAAQ,WAAW;IACnC,SAAS,EAAE,OAAO,CAAS;IAC3B,gBAAgB,EAAE,MAAM,CAAK;IAEzC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAa;IAE1B,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAS5C,IAAI,IAAI,IAAI;IAKnB,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,aAAa;IAOd,cAAc,IAAI,IAAI;IAOtB,YAAY,IAAI,IAAI;IAO3B,oBAAoB,IAAI,IAAI;CAI7B"}
@@ -0,0 +1,24 @@
1
+ import { InactivityService, InactivityConfig } from './inactivity-service';
2
+ export interface InactivityManagerConfig extends InactivityConfig {
3
+ onLogout: () => void;
4
+ }
5
+ export declare class InactivityManager {
6
+ private service;
7
+ private dialog;
8
+ private config;
9
+ private isDialogVisible;
10
+ constructor(config: InactivityManagerConfig);
11
+ private setupEventListeners;
12
+ private showWarningDialog;
13
+ private hideWarningDialog;
14
+ private handleContinue;
15
+ private handleLogout;
16
+ private handleTimeout;
17
+ start(): void;
18
+ stop(): void;
19
+ reset(): void;
20
+ destroy(): void;
21
+ getService(): InactivityService;
22
+ isWarningVisible(): boolean;
23
+ }
24
+ //# sourceMappingURL=inactivity-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inactivity-manager.d.ts","sourceRoot":"","sources":["../../../src/inactivity/inactivity-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,EAAE,uBAAuB;IAS3C,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAQd,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAKZ,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAKf,UAAU,IAAI,iBAAiB;IAI/B,gBAAgB,IAAI,OAAO;CAGnC"}
@@ -0,0 +1,34 @@
1
+ export interface InactivityConfig {
2
+ timeoutMinutes: number;
3
+ warningMinutes: number;
4
+ }
5
+ export interface InactivityEvents {
6
+ 'inactivity-warning': {
7
+ remainingSeconds: number;
8
+ };
9
+ 'inactivity-timeout': void;
10
+ 'inactivity-reset': void;
11
+ }
12
+ type EventListener<T = any> = (data: T) => void;
13
+ export declare class InactivityService {
14
+ private config;
15
+ private warningId;
16
+ private timeoutId;
17
+ private lastActivity;
18
+ private isActive;
19
+ private eventListeners;
20
+ constructor(config: InactivityConfig);
21
+ private setupActivityListeners;
22
+ private checkTimeout;
23
+ on<K extends keyof InactivityEvents>(event: K, listener: EventListener<InactivityEvents[K]>): void;
24
+ off<K extends keyof InactivityEvents>(event: K, listener: EventListener<InactivityEvents[K]>): void;
25
+ private emit;
26
+ start(): void;
27
+ stop(): void;
28
+ resetTimer(): void;
29
+ private scheduleTimers;
30
+ private clearTimers;
31
+ destroy(): void;
32
+ }
33
+ export {};
34
+ //# sourceMappingURL=inactivity-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inactivity-service.d.ts","sourceRoot":"","sources":["../../../src/inactivity/inactivity-service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,oBAAoB,EAAE,IAAI,CAAC;IAC3B,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,KAAK,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAA2D;gBAErE,MAAM,EAAE,gBAAgB;IAKpC,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,YAAY;IAkBb,EAAE,CAAC,CAAC,SAAS,MAAM,gBAAgB,EACxC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAKA,GAAG,CAAC,CAAC,SAAS,MAAM,gBAAgB,EACzC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAOP,OAAO,CAAC,IAAI;IAYL,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAKZ,UAAU,IAAI,IAAI;IAQzB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,WAAW;IAWZ,OAAO,IAAI,IAAI;CAIvB"}
@@ -0,0 +1,4 @@
1
+ export * from './inactivity-dialog';
2
+ export * from './inactivity-manager';
3
+ export * from './inactivity-service';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inactivity/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -19,4 +19,5 @@ export * from './styles';
19
19
  export * from './utils';
20
20
  export * from './uuid';
21
21
  export * from './window';
22
+ export * from './inactivity';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
@@ -211,3 +211,11 @@ if (typeof GENX_ENVIRONMENT_LEVEL !== 'undefined') {
211
211
  ENVIRONMENT_LEVEL = GENX_ENVIRONMENT_LEVEL;
212
212
  }
213
213
  export { ENVIRONMENT_LEVEL };
214
+ /**
215
+ * @public
216
+ */
217
+ let ACCEPT_TERMS_URL = 'gwf/auth/accept-terms';
218
+ if (typeof GENX_ACCEPT_TERMS_URL !== 'undefined') {
219
+ ACCEPT_TERMS_URL = GENX_ACCEPT_TERMS_URL;
220
+ }
221
+ export { ACCEPT_TERMS_URL };
@@ -0,0 +1,213 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement, FASTElement, observable, html, css } from '@microsoft/fast-element';
3
+ import { getCurrentDesignSystemPrefix } from '../design-system/design-system';
4
+ // Constants for time conversions
5
+ const MILLISECONDS_PER_SECOND = 1000;
6
+ const getPrefixedInactivityDialog = (prefix) => html `
7
+ <div class="inactivity-overlay" ?hidden=${(x) => !x.isVisible}>
8
+ <${prefix}-card class="dialog-card">
9
+ <div class="card-body">
10
+ <div class="dialog-header">
11
+ <${prefix}-icon name="warning" class="warning-icon"></${prefix}-icon>
12
+ <h2>Session Timeout Warning</h2>
13
+ </div>
14
+ <div class="dialog-content">
15
+ <p>
16
+ You have been inactive for too long. You will be automatically logged out in
17
+ <strong>${(x) => x.remainingSeconds}</strong>
18
+ seconds.
19
+ </p>
20
+ <p>
21
+ Click "Continue Session" to stay logged in, or "Logout Now" to end your session
22
+ immediately.
23
+ </p>
24
+ </div>
25
+ <div class="dialog-actions">
26
+ <${prefix}-button
27
+ appearance="accent"
28
+ @click=${(x) => x.handleContinue()}
29
+ class="continue-button"
30
+ >
31
+ Continue Session
32
+ </${prefix}-button>
33
+ <${prefix}-button
34
+ appearance="outline"
35
+ @click=${(x) => x.handleLogout()}
36
+ class="logout-button"
37
+ >
38
+ Logout Now
39
+ </${prefix}-button>
40
+ </div>
41
+ </div>
42
+ </${prefix}-card>
43
+ </div>
44
+ `;
45
+ let InactivityDialog = class InactivityDialog extends FASTElement {
46
+ constructor() {
47
+ super(...arguments);
48
+ this.isVisible = false;
49
+ this.remainingSeconds = 0;
50
+ this.startTime = 0;
51
+ this.totalSeconds = 0;
52
+ }
53
+ show(options) {
54
+ this.totalSeconds = options.remainingSeconds;
55
+ this.remainingSeconds = options.remainingSeconds;
56
+ this.onContinue = options.onContinue;
57
+ this.onLogout = options.onLogout;
58
+ this.isVisible = true;
59
+ this.startCountdown();
60
+ }
61
+ hide() {
62
+ this.isVisible = false;
63
+ this.stopCountdown();
64
+ }
65
+ startCountdown() {
66
+ this.startTime = Date.now();
67
+ this.countdownInterval = window.setInterval(() => {
68
+ try {
69
+ // Calculate actual elapsed time since dialog started
70
+ const elapsedMs = Date.now() - this.startTime;
71
+ const elapsedSeconds = Math.floor(elapsedMs / MILLISECONDS_PER_SECOND);
72
+ // Calculate remaining time based on actual elapsed time
73
+ this.remainingSeconds = Math.max(0, this.totalSeconds - elapsedSeconds);
74
+ if (this.remainingSeconds <= 0) {
75
+ this.stopCountdown();
76
+ this.handleLogout();
77
+ }
78
+ }
79
+ catch (error) {
80
+ // If there's an error during countdown, stop the timer
81
+ this.stopCountdown();
82
+ console.warn('Error during inactivity countdown:', error);
83
+ }
84
+ }, MILLISECONDS_PER_SECOND);
85
+ }
86
+ stopCountdown() {
87
+ if (this.countdownInterval) {
88
+ clearInterval(this.countdownInterval);
89
+ this.countdownInterval = undefined;
90
+ }
91
+ }
92
+ handleContinue() {
93
+ this.hide();
94
+ if (this.onContinue) {
95
+ this.onContinue();
96
+ }
97
+ }
98
+ handleLogout() {
99
+ this.hide();
100
+ if (this.onLogout) {
101
+ this.onLogout();
102
+ }
103
+ }
104
+ disconnectedCallback() {
105
+ super.disconnectedCallback();
106
+ this.stopCountdown();
107
+ }
108
+ };
109
+ __decorate([
110
+ observable
111
+ ], InactivityDialog.prototype, "isVisible", void 0);
112
+ __decorate([
113
+ observable
114
+ ], InactivityDialog.prototype, "remainingSeconds", void 0);
115
+ InactivityDialog = __decorate([
116
+ customElement({
117
+ name: 'inactivity-dialog',
118
+ template: html `
119
+ ${(x) => getPrefixedInactivityDialog(getCurrentDesignSystemPrefix(x, 'rapid'))}
120
+ `,
121
+ styles: css `
122
+ .inactivity-overlay {
123
+ position: fixed;
124
+ inset: 0;
125
+ width: 100vw;
126
+ height: 100vh;
127
+ background-color: rgba(0, 0, 0, 0.6);
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ z-index: 9999;
132
+ backdrop-filter: blur(2px);
133
+ }
134
+
135
+ .dialog-card {
136
+ height: 260px;
137
+ max-height: 260px;
138
+ max-width: 520px;
139
+ width: 92%;
140
+ }
141
+
142
+ .card-body {
143
+ padding: 24px;
144
+ box-sizing: border-box;
145
+ }
146
+
147
+ .dialog-header {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 12px;
151
+ margin-bottom: 16px;
152
+ }
153
+
154
+ .warning-icon {
155
+ color: var(--accent-fill-rest);
156
+ font-size: 24px;
157
+ }
158
+
159
+ .dialog-header h2 {
160
+ margin: 0;
161
+ color: var(--neutral-foreground-rest);
162
+ font-size: 20px;
163
+ font-weight: 600;
164
+ }
165
+
166
+ .dialog-content {
167
+ margin-bottom: 24px;
168
+ }
169
+
170
+ .dialog-content p {
171
+ margin: 0 0 12px 0;
172
+ color: var(--neutral-foreground-rest);
173
+ line-height: 1.5;
174
+ }
175
+
176
+ .dialog-content p:last-child {
177
+ margin-bottom: 0;
178
+ }
179
+
180
+ .dialog-content strong {
181
+ color: var(--accent-foreground-rest);
182
+ font-weight: 600;
183
+ }
184
+
185
+ .dialog-actions {
186
+ display: flex;
187
+ gap: 12px;
188
+ justify-content: flex-end;
189
+ }
190
+
191
+ .continue-button {
192
+ min-width: 140px;
193
+ }
194
+ .logout-button {
195
+ min-width: 120px;
196
+ }
197
+
198
+ @media (max-width: 480px) {
199
+ .card-body {
200
+ padding: 20px;
201
+ }
202
+ .dialog-actions {
203
+ flex-direction: column;
204
+ }
205
+ .continue-button,
206
+ .logout-button {
207
+ width: 100%;
208
+ }
209
+ }
210
+ `,
211
+ })
212
+ ], InactivityDialog);
213
+ export { InactivityDialog };
@@ -0,0 +1,85 @@
1
+ import { InactivityService } from './inactivity-service';
2
+ export class InactivityManager {
3
+ constructor(config) {
4
+ this.dialog = null;
5
+ this.isDialogVisible = false;
6
+ this.config = config;
7
+ this.service = new InactivityService({
8
+ timeoutMinutes: config.timeoutMinutes,
9
+ warningMinutes: config.warningMinutes,
10
+ });
11
+ this.setupEventListeners();
12
+ }
13
+ setupEventListeners() {
14
+ this.service.on('inactivity-warning', (data) => {
15
+ this.showWarningDialog(data.remainingSeconds);
16
+ });
17
+ this.service.on('inactivity-timeout', () => {
18
+ this.handleTimeout();
19
+ });
20
+ }
21
+ showWarningDialog(remainingSeconds) {
22
+ if (this.isDialogVisible)
23
+ return;
24
+ if (!this.dialog) {
25
+ this.dialog = document.createElement('inactivity-dialog');
26
+ }
27
+ if (!this.dialog.isConnected) {
28
+ document.body.appendChild(this.dialog);
29
+ }
30
+ this.isDialogVisible = true;
31
+ this.dialog.show({
32
+ remainingSeconds,
33
+ onContinue: () => this.handleContinue(),
34
+ onLogout: () => this.handleLogout(),
35
+ });
36
+ }
37
+ hideWarningDialog() {
38
+ if (!this.isDialogVisible || !this.dialog)
39
+ return;
40
+ this.isDialogVisible = false;
41
+ this.dialog.hide();
42
+ // Remove from DOM
43
+ if (this.dialog.parentNode) {
44
+ this.dialog.parentNode.removeChild(this.dialog);
45
+ }
46
+ }
47
+ handleContinue() {
48
+ this.service.resetTimer();
49
+ this.hideWarningDialog();
50
+ }
51
+ handleLogout() {
52
+ this.hideWarningDialog();
53
+ this.service.stop();
54
+ if (this.config.onLogout)
55
+ this.config.onLogout();
56
+ }
57
+ handleTimeout() {
58
+ // If dialog is visible, let it handle the countdown
59
+ if (this.isDialogVisible)
60
+ return;
61
+ // Otherwise, logout immediately
62
+ this.handleLogout();
63
+ }
64
+ start() {
65
+ this.service.start();
66
+ }
67
+ stop() {
68
+ this.service.stop();
69
+ this.hideWarningDialog();
70
+ }
71
+ reset() {
72
+ this.service.resetTimer();
73
+ this.hideWarningDialog();
74
+ }
75
+ destroy() {
76
+ this.service.destroy();
77
+ this.hideWarningDialog();
78
+ }
79
+ getService() {
80
+ return this.service;
81
+ }
82
+ isWarningVisible() {
83
+ return this.isDialogVisible;
84
+ }
85
+ }
@@ -0,0 +1,128 @@
1
+ // Constants for time conversions
2
+ const SECONDS_PER_MINUTE = 60;
3
+ const MILLISECONDS_PER_SECOND = 1000;
4
+ const MILLISECONDS_PER_MINUTE = SECONDS_PER_MINUTE * MILLISECONDS_PER_SECOND;
5
+ export class InactivityService {
6
+ constructor(config) {
7
+ this.warningId = null;
8
+ this.timeoutId = null;
9
+ this.lastActivity = Date.now();
10
+ this.isActive = false;
11
+ this.eventListeners = new Map();
12
+ this.config = config;
13
+ this.setupActivityListeners();
14
+ }
15
+ setupActivityListeners() {
16
+ const events = [
17
+ 'mousedown',
18
+ 'mousemove',
19
+ 'keydown',
20
+ 'touchstart',
21
+ 'click',
22
+ 'focus',
23
+ 'blur',
24
+ 'wheel',
25
+ 'touchmove',
26
+ ];
27
+ const handler = () => this.resetTimer();
28
+ events.forEach((event) => {
29
+ document.addEventListener(event, handler, { passive: true });
30
+ });
31
+ // Handle scroll events
32
+ window.addEventListener('scroll', handler, { passive: true, capture: true });
33
+ document.addEventListener('scroll', handler, { passive: true, capture: true });
34
+ // Handle sleep/wake cycles
35
+ document.addEventListener('visibilitychange', () => {
36
+ if (document.visibilityState === 'visible' && this.isActive) {
37
+ this.checkTimeout();
38
+ }
39
+ });
40
+ }
41
+ checkTimeout() {
42
+ const timeSinceLastActivity = Date.now() - this.lastActivity;
43
+ const timeoutMs = this.config.timeoutMinutes * MILLISECONDS_PER_MINUTE;
44
+ const warningMs = (this.config.timeoutMinutes - this.config.warningMinutes) * MILLISECONDS_PER_MINUTE;
45
+ if (timeSinceLastActivity >= timeoutMs) {
46
+ this.emit('inactivity-timeout');
47
+ }
48
+ else if (timeSinceLastActivity >= warningMs) {
49
+ const remainingSeconds = Math.round((timeoutMs - timeSinceLastActivity) / MILLISECONDS_PER_SECOND);
50
+ this.emit('inactivity-warning', { remainingSeconds });
51
+ }
52
+ else {
53
+ this.resetTimer();
54
+ }
55
+ }
56
+ on(event, listener) {
57
+ if (!this.eventListeners.has(event))
58
+ this.eventListeners.set(event, []);
59
+ this.eventListeners.get(event).push(listener);
60
+ }
61
+ off(event, listener) {
62
+ const listeners = this.eventListeners.get(event);
63
+ if (!listeners)
64
+ return;
65
+ const i = listeners.indexOf(listener);
66
+ if (i > -1)
67
+ listeners.splice(i, 1);
68
+ }
69
+ emit(event, data) {
70
+ const listeners = this.eventListeners.get(event);
71
+ if (!listeners)
72
+ return;
73
+ for (const l of listeners) {
74
+ try {
75
+ l(data);
76
+ }
77
+ catch (e) {
78
+ console.error(`InactivityService listener error for event "${event}":`, e);
79
+ }
80
+ }
81
+ }
82
+ start() {
83
+ this.isActive = true;
84
+ this.lastActivity = Date.now();
85
+ this.scheduleTimers();
86
+ }
87
+ stop() {
88
+ this.isActive = false;
89
+ this.clearTimers();
90
+ }
91
+ resetTimer() {
92
+ if (!this.isActive)
93
+ return;
94
+ this.lastActivity = Date.now();
95
+ this.clearTimers();
96
+ this.scheduleTimers();
97
+ this.emit('inactivity-reset');
98
+ }
99
+ scheduleTimers() {
100
+ const warningDelayMs = (this.config.timeoutMinutes - this.config.warningMinutes) * MILLISECONDS_PER_MINUTE;
101
+ this.warningId = window.setTimeout(() => {
102
+ if (this.isActive) {
103
+ const remainingSeconds = Math.round(this.config.warningMinutes * SECONDS_PER_MINUTE);
104
+ this.emit('inactivity-warning', { remainingSeconds });
105
+ }
106
+ }, warningDelayMs);
107
+ const timeoutDelayMs = this.config.timeoutMinutes * MILLISECONDS_PER_MINUTE;
108
+ this.timeoutId = window.setTimeout(() => {
109
+ if (this.isActive) {
110
+ this.emit('inactivity-timeout');
111
+ }
112
+ }, timeoutDelayMs);
113
+ }
114
+ clearTimers() {
115
+ if (this.warningId) {
116
+ clearTimeout(this.warningId);
117
+ this.warningId = null;
118
+ }
119
+ if (this.timeoutId) {
120
+ clearTimeout(this.timeoutId);
121
+ this.timeoutId = null;
122
+ }
123
+ }
124
+ destroy() {
125
+ this.stop();
126
+ this.eventListeners.clear();
127
+ }
128
+ }
@@ -0,0 +1,3 @@
1
+ export * from './inactivity-dialog';
2
+ export * from './inactivity-manager';
3
+ export * from './inactivity-service';
package/dist/esm/index.js CHANGED
@@ -19,3 +19,4 @@ export * from './styles';
19
19
  export * from './utils';
20
20
  export * from './uuid';
21
21
  export * from './window';
22
+ export * from './inactivity';