@govuk-one-login/frontend-ui 2.0.0 → 3.1.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 (38) hide show
  1. package/README.md +37 -0
  2. package/build/all.css +1 -1
  3. package/build/cjs/backend/index.cjs +16 -2
  4. package/build/cjs/backend/index.d.cts +12 -0
  5. package/build/cjs/backend/index.d.ts +12 -0
  6. package/build/cjs/backend/index.d.ts.map +1 -1
  7. package/build/cjs/frontend/index.cjs +288 -268
  8. package/build/cjs/frontend/index.d.cts +3 -1
  9. package/build/cjs/frontend/index.d.ts +3 -1
  10. package/build/cjs/frontend/index.d.ts.map +1 -1
  11. package/build/cjs/frontend/progress-button/progress-button.d.ts +2 -0
  12. package/build/cjs/frontend/progress-button/progress-button.d.ts.map +1 -0
  13. package/build/cjs/frontend/spinner/__tests__/spinner.test.d.ts +0 -4
  14. package/build/cjs/frontend/spinner/__tests__/spinner.test.d.ts.map +1 -1
  15. package/build/cjs/frontend/spinner/spinner.d.ts +58 -84
  16. package/build/cjs/frontend/spinner/spinner.d.ts.map +1 -1
  17. package/build/components/_all.scss +1 -0
  18. package/build/components/progress-button/_index.scss +44 -0
  19. package/build/components/progress-button/macro.njk +2 -0
  20. package/build/components/progress-button/progress-button.yaml +13 -0
  21. package/build/components/progress-button/template.njk +115 -0
  22. package/build/components/spinner/README.md +75 -52
  23. package/build/components/spinner/_index.scss +2 -11
  24. package/build/components/spinner/template.njk +15 -8
  25. package/build/esm/backend/index.d.ts +12 -0
  26. package/build/esm/backend/index.d.ts.map +1 -1
  27. package/build/esm/backend/index.js +16 -2
  28. package/build/esm/frontend/index.d.ts +3 -1
  29. package/build/esm/frontend/index.d.ts.map +1 -1
  30. package/build/esm/frontend/index.js +288 -269
  31. package/build/esm/frontend/progress-button/progress-button.d.ts +2 -0
  32. package/build/esm/frontend/progress-button/progress-button.d.ts.map +1 -0
  33. package/build/esm/frontend/spinner/__tests__/spinner.test.d.ts +0 -4
  34. package/build/esm/frontend/spinner/__tests__/spinner.test.d.ts.map +1 -1
  35. package/build/esm/frontend/spinner/spinner.d.ts +58 -84
  36. package/build/esm/frontend/spinner/spinner.d.ts.map +1 -1
  37. package/package.json +3 -2
  38. package/build/components/spinner/api.njk +0 -27
@@ -1,90 +1,64 @@
1
- export declare function useSpinner(): void;
2
- type TVDOM = {
3
- classes: string[];
4
- buttonDisabled?: boolean;
5
- id?: string;
6
- innerHTML?: string;
7
- nodeName: string;
8
- text?: string;
1
+ export declare function useSpinner(containerId: string, pollingFunction: PollingFunction, successFunction: VoidFunction, errorFunction: VoidFunction): Promise<void>;
2
+ export type PollingFunction = (abortSignal: AbortSignal) => Promise<PollResult>;
3
+ export declare enum PollResult {
4
+ Success = 0,
5
+ Failure = 1,
6
+ Pending = 2,
7
+ Backoff = 3
8
+ }
9
+ declare enum SpinnerState {
10
+ Waiting = 0,
11
+ LongWaiting = 1,
12
+ Error = 2,
13
+ Complete = 3
14
+ }
15
+ type SpinnerConfig = {
16
+ msBeforeInformingOfLongWait: number;
17
+ msBeforeAbort: number;
18
+ msBetweenRequests: number;
19
+ msBetweenDomUpdate: number;
20
+ ariaAlertCompletionText?: string;
21
+ hideSpinnerOnError: boolean;
22
+ maxBackoffTries: number;
9
23
  };
10
24
  export declare class Spinner {
11
- container: HTMLElement;
12
- spinnerContainer: HTMLElement;
13
- ariaLiveContainer: HTMLElement;
14
- content: {
15
- complete: {
16
- ariaButtonEnabledMessage?: string;
17
- spinnerState: string;
18
- };
19
- continueButton: {
20
- text: string;
21
- };
22
- error: {
23
- heading: string;
24
- messageText: string;
25
- whatYouCanDo: {
26
- heading: string;
27
- message: {
28
- text1: string;
29
- link: {
30
- href: string;
31
- text: string;
32
- };
33
- text2: string;
34
- };
35
- };
36
- };
37
- initial: {
38
- heading: string;
39
- spinnerStateText: string;
40
- spinnerState: string;
41
- };
42
- longWait: {
43
- spinnerStateText: string;
44
- };
45
- };
46
- domRequirementsMet?: boolean;
47
- state: {
48
- ariaButtonEnabledMessage?: string;
49
- buttonDisabled: boolean;
50
- done: boolean;
51
- error: boolean;
52
- heading: string;
53
- messageText?: string;
54
- spinnerState: string;
55
- spinnerStateText: string;
56
- virtualDom: TVDOM[];
57
- };
58
- updateDomTimer: NodeJS.Timeout;
25
+ container: HTMLDivElement;
26
+ noJsContent: HTMLElement;
27
+ waitContent?: HTMLElement;
28
+ longWaitContent?: HTMLElement;
29
+ successContent?: HTMLElement;
30
+ errorContent?: HTMLElement;
31
+ ariaLiveContainer: HTMLDivElement;
32
+ visibleElementsContainer: HTMLDivElement;
33
+ state: SpinnerState;
34
+ displayState?: SpinnerState;
35
+ updateDomTimer?: NodeJS.Timeout;
59
36
  abortController: AbortController;
60
- config: {
61
- apiUrl: string;
62
- ariaButtonEnabledMessage?: string;
63
- msBeforeInformingOfLongWait: number;
64
- msBeforeAbort: number;
65
- msBetweenRequests: number;
66
- msBetweenDomUpdate: number;
67
- };
68
- notInErrorOrDoneState: () => boolean;
69
- reflectCompletion: () => void;
70
- reflectError: () => void;
71
- reflectLongWait(): void;
72
- updateAccordingToTimeElapsed: (initTime: number) => void;
73
- initialiseState(): void;
74
- initialiseContent(element: HTMLElement): void;
75
- createVirtualDom(): TVDOM[];
76
- vDomHasChanged: (currentVDom: TVDOM[], nextVDom: TVDOM[]) => boolean;
77
- convert: (node: TVDOM) => HTMLElement;
78
- updateAriaAlert: (messageText: string) => void;
79
- updateDom: () => void;
80
- requestIDProcessingStatus(initTime: number): Promise<void>;
81
- initialiseContainers: () => void;
82
- getInitTime(): number;
83
- initTimer: (initTime: number) => void;
84
- handleAbort: () => void;
85
- initialiseAbortController: () => void;
86
- init(): void;
87
- constructor(domContainer: HTMLElement);
37
+ config: SpinnerConfig;
38
+ backOffCount: number;
39
+ pollingFunction: PollingFunction;
40
+ onSuccess: VoidFunction;
41
+ onError: VoidFunction;
42
+ constructor(domContainer: HTMLDivElement, pollingFunction: PollingFunction, onSuccess: VoidFunction, onError: VoidFunction);
43
+ init(): Promise<void>;
44
+ private getElementOrThrow;
45
+ private getConfig;
46
+ private createAbortController;
47
+ private handleAbort;
48
+ private getInitTime;
49
+ private initTimer;
50
+ private hasCompleted;
51
+ private reflectSuccess;
52
+ private reflectError;
53
+ private reflectLongWait;
54
+ private updateStateAccordingToTimeElapsed;
55
+ private createSpinnerElement;
56
+ private updateDom;
57
+ private cloneAndAddIfExists;
58
+ private callPollingFunction;
59
+ private calculateBackoffTime;
60
+ private createAriaLiveContainer;
61
+ private updateAriaAlert;
88
62
  }
89
63
  export {};
90
64
  //# sourceMappingURL=spinner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../frontend-src/spinner/spinner.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,SAWzB;AAED,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,OAAO;IAClB,SAAS,cAAC;IACV,gBAAgB,EAAE,WAAW,CAAC;IAC9B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,wBAAwB,CAAC,EAAE,MAAM,CAAC;YAClC,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC;QACF,cAAc,EAAE;YACd,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,KAAK,EAAE;YACL,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE;gBACZ,OAAO,EAAE,MAAM,CAAC;gBAChB,OAAO,EAAE;oBACP,KAAK,EAAE,MAAM,CAAC;oBACd,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM,CAAC;wBACb,IAAI,EAAE,MAAM,CAAC;qBACd,CAAC;oBACF,KAAK,EAAE,MAAM,CAAC;iBACf,CAAC;aACH,CAAC;SACH,CAAC;QACF,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,MAAM,CAAC;YACzB,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC;QACF,QAAQ,EAAE;YACR,gBAAgB,EAAE,MAAM,CAAC;SAC1B,CAAC;KACH,CAAC;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE;QACL,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,cAAc,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,KAAK,EAAE,CAAC;KACrB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,2BAA2B,EAAE,MAAM,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAMC;IAEF,qBAAqB,gBAEnB;IAEF,iBAAiB,aAQf;IAEF,YAAY,aAQV;IAEF,eAAe;IAMf,4BAA4B,GAAI,UAAU,MAAM,UAO9C;IAEF,eAAe;IAef,iBAAiB,CAAC,OAAO,EAAE,WAAW;IA8EtC,gBAAgB,IAAI,KAAK,EAAE;IAwD3B,cAAc,GAAI,aAAa,KAAK,EAAE,EAAE,UAAU,KAAK,EAAE,aAEvD;IAEF,OAAO,GAAI,MAAM,KAAK,iBASpB;IAEF,eAAe,GAAI,aAAa,MAAM,UAQpC;IAEF,SAAS,aA0BP;IAEI,yBAAyB,CAAC,QAAQ,EAAE,MAAM;IAgChD,oBAAoB,aAUlB;IAEF,WAAW;IAYX,SAAS,GAAI,UAAU,MAAM,UAO3B;IAEF,WAAW,aAET;IAEF,yBAAyB,aAIvB;IAEF,IAAI;gBAWQ,YAAY,EAAE,WAAW;CAMtC"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../frontend-src/spinner/spinner.ts"],"names":[],"mappings":"AAAA,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,iBAoBjJ;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAEhF,oBAAY,UAAU;IACpB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,aAAK,YAAY;IACf,OAAO,IAAA;IACP,WAAW,IAAA;IACX,KAAK,IAAA;IACL,QAAQ,IAAA;CACT;AAED,KAAK,aAAa,GAAG;IACnB,2BAA2B,EAAE,MAAM,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,qBAAa,OAAO;IAClB,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,iBAAiB,EAAE,cAAc,CAAC;IAElC,wBAAwB,EAAE,cAAc,CAAC;IAEzC,KAAK,EAAE,YAAY,CAAwB;IAC3C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,CAAK;IAEzB,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;gBAGpB,YAAY,EAAE,cAAc,EAC5B,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY;IA2CjB,IAAI;IAUV,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,WAAW,CAEjB;IAEF,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc,CAGpB;IAEF,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iCAAiC,CAWvC;IAEF,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,SAAS,CAkDf;IAEF,OAAO,CAAC,mBAAmB;YASb,mBAAmB;IA2CjC,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,eAAe;CAWxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@govuk-one-login/frontend-ui",
3
- "version": "2.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "",
5
5
  "main": "build/cjs/backend/index.cjs",
6
6
  "module": "build/esm/backend/index.js",
@@ -22,7 +22,8 @@
22
22
  ],
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "git+https://github.com/govuk-one-login/govuk-one-login-frontend.git"
25
+ "url": "git+https://github.com/govuk-one-login/govuk-one-login-frontend.git",
26
+ "directory": "packages/frontend-ui"
26
27
  },
27
28
  "keywords": [
28
29
  "govuk-one-login",
@@ -1,27 +0,0 @@
1
- {% extends "layouts/main.njk" %}
2
-
3
- {% set url = "/api" %}
4
-
5
- {% block content %}
6
-
7
- <div id="spinner-container"
8
- data-initial-heading="Initial heading text"
9
- data-initial-spinnerStateText="Initial spinner state text"
10
- data-initial-spinnerState="pending"
11
- data-error-heading="Error heading"
12
- data-error-messageText="Error message text"
13
- data-error-whatYouCanDo-heading="Error what you can do heading"
14
- data-error-whatYouCanDo-message-text1="Error what you can do message text1"
15
- data-error-whatYouCanDo-message-link-href="Error what you can do message link href"
16
- data-error-whatYouCanDo-message-link-text="Error what you can do message link text"
17
- data-error-whatYouCanDo-message-text2="Error what you can do message link text2"
18
- data-complete-spinnerState="complete"
19
- data-longWait-spinnerStateText="Long wait spinner state">
20
- </div>
21
-
22
- {% endblock %}
23
-
24
- {% block pageScripts %}
25
-
26
- {% endblock %}
27
-