@govuk-one-login/frontend-ui 1.2.0 → 1.3.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 (42) hide show
  1. package/README.md +3 -3
  2. package/build/all.css +1 -1
  3. package/build/cjs/index-fe.cjs +102 -116
  4. package/build/cjs/index.cjs +6 -4
  5. package/build/cjs/index.d.ts +1 -37
  6. package/build/cjs/index.d.ts.map +1 -1
  7. package/build/cjs/typescript/spinner.d.ts +6 -0
  8. package/build/cjs/typescript/spinner.d.ts.map +1 -0
  9. package/build/cjs/utils/types.d.ts +51 -0
  10. package/build/cjs/utils/types.d.ts.map +1 -0
  11. package/build/components/bases/auth/auth-base.njk +1 -1
  12. package/build/components/bases/home/home-base.njk +1 -1
  13. package/build/components/bases/identity/identity-base-form.njk +1 -1
  14. package/build/components/bases/identity/identity-base-page.njk +10 -1
  15. package/build/components/bases/ipv-core/ipv-core-base.njk +1 -1
  16. package/build/components/bases/mobile/mobile-base.njk +1 -1
  17. package/build/components/cookie-banner/template.njk +12 -3
  18. package/build/components/footer/_index.scss +9 -0
  19. package/build/components/footer/template.njk +1 -1
  20. package/build/components/header/_index.scss +63 -34
  21. package/build/components/header/template.njk +4 -4
  22. package/build/components/phase-banner/_index.scss +6 -0
  23. package/build/components/phase-banner/template.njk +2 -1
  24. package/build/components/skip-link/template.njk +5 -1
  25. package/build/esm/index-fe.js +102 -116
  26. package/build/esm/index.d.ts +1 -37
  27. package/build/esm/index.d.ts.map +1 -1
  28. package/build/esm/index.js +6 -4
  29. package/build/esm/typescript/spinner.d.ts +6 -0
  30. package/build/esm/typescript/spinner.d.ts.map +1 -0
  31. package/build/esm/utils/types.d.ts +51 -0
  32. package/build/esm/utils/types.d.ts.map +1 -0
  33. package/package.json +11 -6
  34. package/build/cjs/__tests__/index.spec.d.ts +0 -2
  35. package/build/cjs/__tests__/index.spec.d.ts.map +0 -1
  36. package/build/cjs/__tests__/logger.spec.d.ts +0 -2
  37. package/build/cjs/__tests__/logger.spec.d.ts.map +0 -1
  38. package/build/components/spinner/javascript/spinner.js +0 -118
  39. package/build/esm/__tests__/index.spec.d.ts +0 -2
  40. package/build/esm/__tests__/index.spec.d.ts.map +0 -1
  41. package/build/esm/__tests__/logger.spec.d.ts +0 -2
  42. package/build/esm/__tests__/logger.spec.d.ts.map +0 -1
@@ -1,73 +1,102 @@
1
1
  @media (max-width: 640px) {
2
- .govuk-header__navigation-item {
3
- border-left: none !important;
4
- }
5
- .govuk-template--rebranded .govuk-header__navigation-list{
6
- padding-bottom: 0px !important;
7
- }
2
+ .govuk-header__navigation-item {
3
+ border-left: none !important;
4
+ }
5
+ .govuk-template--rebranded .govuk-header__navigation-list {
6
+ padding-bottom: 0px !important;
7
+ }
8
8
 
9
9
  .govuk-header__navigation-item{
10
- padding-top: 5px !important;
10
+ padding-top: 8px !important;
11
11
  }
12
12
  }
13
13
 
14
- .frontendUi_header_signOut-item{
15
- padding: 5px 0px 5px 30px;
16
- border-left: 1px solid #b1b4b6;
17
- margin-left: auto;
14
+ .frontendUi_header_signOut-item {
15
+ padding: 5px 0px 5px 30px;
16
+ border-left: 1px solid #b1b4b6;
17
+ margin-left: auto;
18
18
  }
19
19
 
20
- .frontendUi_header_signOut-item--rebrand{
20
+ .frontendUi_header_signOut-item--rebrand {
21
21
  border-left: none;
22
- padding: 5px 0px 5px 30px;
22
+ padding: 5px 0px 5px 0px;
23
23
  margin-left: auto;
24
24
  font-weight: 700 !important;
25
25
  }
26
26
 
27
- .frontendUi_header__signOut{
28
- display: flex;
29
- flex-wrap: wrap;
27
+ .frontendUi_header__signOut {
28
+ display: flex;
29
+ flex-wrap: wrap;
30
30
  }
31
31
 
32
- .frontendUi-header__content{
33
- margin-left: auto;
32
+ .frontendUi-header__content {
33
+ margin-left: auto;
34
34
  }
35
35
 
36
- .govuk-header__navigation--signOut{
36
+ .govuk-header__navigation--signOut {
37
37
  padding: 15px 0 15px !important;
38
38
  }
39
39
 
40
- .govuk-template--rebranded .govuk-header__navigation{
40
+ .govuk-template--rebranded .govuk-header__navigation {
41
41
  padding: 15px 0 15px !important;
42
42
  }
43
43
 
44
44
  @media (max-width: 640px) {
45
- .govuk-header__navigation--signOut{
46
- padding: 18px 0 8px !important;
47
- }
45
+ .govuk-header__navigation--signOut {
46
+ padding: 18px 0 8px !important;
47
+ }
48
48
 
49
- .govuk-template--rebranded .govuk-header__navigation{
50
- padding: 18px 0 8px !important;
49
+ .govuk-template--rebranded .govuk-header__navigation {
50
+ padding: 18px 0 8px !important;
51
+ }
51
52
  }
52
- }
53
-
54
53
 
55
54
  .govuk-template--rebranded .govuk-header__navigation-item a {
56
55
  font-weight: 700 !important;
57
56
  }
58
57
 
59
- .govuk-template--rebranded .govuk-header__navigation-item{
58
+ .govuk-template--rebranded .govuk-header__navigation-item {
60
59
  padding-top: 5px !important;
61
60
  }
62
61
 
63
62
  @media (min-width: 20em) and (max-width: 48.0525em) {
64
- .govuk-template--rebranded .govuk-header__navigation-list {
65
- padding-bottom: 0px;
66
- }
63
+ .govuk-template--rebranded .govuk-header__navigation-list {
64
+ padding-bottom: 0px;
65
+ }
66
+ }
67
+
68
+ @media (max-width: 323px) {
69
+
70
+ .govuk-header__logo{
71
+ padding-right: 5px;
67
72
  }
68
73
 
69
- @media (max-width: 340px) {
70
- .frontendUi-header__content {
74
+ .frontendUi_header_signOut-item
75
+ {
76
+ padding-left: 0px;
77
+ }
78
+ }
79
+
80
+ @media (max-width: 261px) {
81
+
82
+ .frontendUi-header__content {
71
83
  margin-left: unset;
72
84
  }
73
- }
85
+
86
+
87
+
88
+
89
+ .govuk-template--rebranded .govuk-header__navigation {
90
+ padding: 0px 0 8px !important;
91
+ }
92
+
93
+ .govuk-header__logotype{
94
+ max-width: 100%;
95
+ max-height: auto;
96
+ }
97
+
98
+ .govuk-template--rebranded .govuk-header__logo{
99
+ padding-top: 5% !important;
100
+ padding-bottom: 5% !important;
101
+ }
102
+ }
@@ -1,7 +1,7 @@
1
1
  {% from "../macros/logo.njk" import govukLogo %}
2
2
  {% set header = params.translations %}
3
3
 
4
- {%if May_2025_Rebrand%}
4
+ {%if MAY_2025_REBRAND_ENABLED%}
5
5
  {%- set _rebrand = params.rebrand | default(govukRebrand() if govukRebrand is callable else govukRebrand) -%}
6
6
  {% endif %}
7
7
  <header class="govuk-header {%- if params.classes %} {{ params.classes }}{% endif %}" data-module="govuk-header">
@@ -16,7 +16,7 @@
16
16
  classes: "govuk-header__logotype",
17
17
  ariaLabelText: "GOV.UK",
18
18
  useTudorCrown: params.useTudorCrown,
19
- rebrand: May_2025_Rebrand
19
+ rebrand: MAY_2025_REBRAND_ENABLED
20
20
  }) | trim | indent(8) }}
21
21
  {% if not params.isEmbeddedMobileApp %}
22
22
  </a>
@@ -24,9 +24,9 @@
24
24
  </div>
25
25
  {% if params.signOutLink %}
26
26
  <div class="frontendUi-header__content govuk-header__content">
27
- <nav aria-label="{{header.ariaLabel}}" class="govuk-header__navigation {{ govuk-header__navigation--signOut if params.May_2025_Rebrand }}">
27
+ <nav aria-label="{{header.ariaLabel}}" class="govuk-header__navigation {{ govuk-header__navigation--signOut if params.MAY_2025_REBRAND_ENABLED }}">
28
28
  <ul id="navigation" class="frontendUi_header__signOut govuk-header__navigation-list">
29
- <li class="{{ 'frontendUi_header_signOut-item--rebrand' if May_2025_Rebrand }} {{'frontendUi_header_signOut-item' if not May_2025_Rebrand}} govuk-header__navigation-item{{ ' govuk-header__navigation-item--active' if item.active }}">
29
+ <li class="{{ 'frontendUi_header_signOut-item--rebrand' if MAY_2025_REBRAND_ENABLED }} {{'frontendUi_header_signOut-item' if not MAY_2025_REBRAND_ENABLED}} govuk-header__navigation-item{{ ' govuk-header__navigation-item--active' if item.active }}">
30
30
  <a aria-label="{{header.signOutAriaLabel}}" class="govuk-header__link" href="{{params.signOutLink}}">
31
31
  {{header.signOut}}
32
32
  </a>
@@ -18,3 +18,9 @@
18
18
  text-decoration: none !important;
19
19
  text-transform: uppercase !important;
20
20
  }
21
+
22
+ @media (max-width: 256px) {
23
+ .govuk-phase-banner__content{
24
+ display: block;
25
+ }
26
+ }
@@ -1,7 +1,7 @@
1
1
  {% set phaseBanner = params.translations %}
2
2
  {% from "./tag/macro.njk" import frontendUiTag -%}
3
3
 
4
- <div class="govuk-phase-banner
4
+ <div role="region" class="govuk-phase-banner
5
5
  {%- if params.classes %} {{ params.classes }}{% endif %}"{% for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
6
6
  <p class="govuk-phase-banner__content">
7
7
  {{ frontendUiTag({
@@ -16,6 +16,7 @@
16
16
  {{ phaseBanner.text }}
17
17
  {% endif %}
18
18
  <a class="govuk-link"
19
+ aria-label= "{{ phaseBanner.ariaLabel }}"
19
20
  rel="noopener"
20
21
  target="_blank"
21
22
  href="{{ contactUsUrl(params.contactUrl, params.url) or contactUsUrl('https://signin.account.gov.uk/contact-us', params.url) }}">
@@ -4,7 +4,11 @@
4
4
 
5
5
  {{ govukSkipLink({
6
6
  href: "#main-content",
7
- text: skipLink.title
7
+ text: skipLink.title,
8
+ attributes: {
9
+ "role": "button",
10
+ "aria-label": skipLink.title
11
+ }
8
12
  }) }}
9
13
 
10
14
 
@@ -1,120 +1,106 @@
1
1
  const WaitInteractions = (() => {
2
- const content = {
3
- initial: {
4
- spinnerState: "pending",
5
- },
6
- complete: { spinnerState: "completed" },
7
- };
8
-
9
- const state = {
10
- spinnerState: content.initial.spinnerState,
11
- done: false,
12
- virtualDom: [],
13
- };
14
-
15
- const timers = {};
16
-
17
- const createVirtualDom = () => {
18
- const initialState = [
19
- {
20
- nodeName: "div",
21
- id: "spinner",
22
- classes: ["spinner", "spinner__pending", "centre", state.spinnerState],
23
- },
24
- ];
25
-
26
- return initialState;
27
- };
28
-
29
- const vDomHasChanged = (currentVDom, nextVDom) => {
30
- return JSON.stringify(currentVDom) !== JSON.stringify(nextVDom);
31
- };
32
-
33
- const updateDom = () => {
34
- const vDomChanged = vDomHasChanged(state.virtualDom, createVirtualDom());
35
- const container = document.getElementById("spinner-container");
36
-
37
- if (vDomChanged) {
38
- state.virtualDom = createVirtualDom();
39
- const elements = state?.virtualDom?.map(convert);
40
- container?.replaceChildren(...elements);
41
- }
42
-
43
- if (state.error) {
44
- container?.classList.add("spinner-container__error");
45
- }
46
-
47
- if (state.done) {
48
- clearInterval(timers.updateDomTimer);
49
- }
50
- };
51
-
52
- const reflectCompletion = () => {
53
- state.spinnerState = "spinner__ready";
54
- state.spinnerStateText = content.complete.spinnerState;
55
- state.done = true;
56
- };
57
-
58
- const reflectError = () => {
59
- state.spinnerState = "spinner__failed";
60
- state.done = true;
61
- state.error = true;
62
- };
63
-
64
- const convert = (node) => {
65
- const el = document.createElement(node.nodeName);
66
- if (node.text) el.textContent = node.text;
67
- if (node.innerHTML) el.innerHTML = node.innerHTML;
68
- if (node.id) el.id = node.id;
69
- if (node.classes) el.classList.add(...node.classes);
70
- return el;
71
- };
72
-
73
- const notInErrorOrDoneState = () => {
74
- return !(state.done || state.error);
75
- };
76
-
77
- const requestIDProcessingStatus = async () => {
78
- const apiRoute =
79
- document?.getElementById("spinner-container")?.dataset.apiRoute;
80
- try {
81
- const response = await fetch(apiRoute);
82
-
83
- if (response.status !== 200) {
84
- throw new Error(`Status code ${response.status} received`);
85
- }
86
-
87
- const data = await response.json();
88
-
89
- if (data.status === "Clear to proceed") {
90
- reflectCompletion();
91
- } else if (notInErrorOrDoneState()) {
92
- setTimeout(async () => {
93
- await requestIDProcessingStatus();
94
- }, 1000);
95
- }
96
- } catch (e) {
97
- console.log(e);
98
- reflectError();
99
- }
100
- };
101
-
102
- return {
103
- state: state,
104
- init: () => {
105
- timers.updateDomTimer = setInterval(updateDom, 2000);
106
-
107
- timers.abortUnresponsiveRequest = setTimeout(() => {
108
- reflectError();
109
- }, 15000);
110
-
111
- updateDom();
112
-
113
- requestIDProcessingStatus().then(() => {
114
- updateDom();
115
- });
116
- },
117
- };
2
+ const content = {
3
+ initial: {
4
+ spinnerState: "pending",
5
+ },
6
+ complete: { spinnerState: "completed" },
7
+ };
8
+ const state = {
9
+ spinnerState: content.initial.spinnerState,
10
+ done: false,
11
+ virtualDom: [],
12
+ };
13
+ const timers = {};
14
+ const createVirtualDom = () => {
15
+ const initialState = [
16
+ {
17
+ nodeName: "div",
18
+ id: "spinner",
19
+ classes: ["spinner", "spinner__pending", "centre", state.spinnerState],
20
+ },
21
+ ];
22
+ return initialState;
23
+ };
24
+ const vDomHasChanged = (currentVDom, nextVDom) => {
25
+ return JSON.stringify(currentVDom) !== JSON.stringify(nextVDom);
26
+ };
27
+ const updateDom = () => {
28
+ var _a;
29
+ const vDomChanged = vDomHasChanged(state.virtualDom, createVirtualDom());
30
+ const container = document.getElementById("spinner-container");
31
+ if (vDomChanged) {
32
+ state.virtualDom = createVirtualDom();
33
+ const elements = (_a = state === null || state === void 0 ? void 0 : state.virtualDom) === null || _a === void 0 ? void 0 : _a.map(convert);
34
+ container === null || container === void 0 ? void 0 : container.replaceChildren(...elements);
35
+ }
36
+ if (state.error) {
37
+ container === null || container === void 0 ? void 0 : container.classList.add("spinner-container__error");
38
+ }
39
+ if (state.done) {
40
+ clearInterval(timers.updateDomTimer);
41
+ }
42
+ };
43
+ const reflectCompletion = () => {
44
+ state.spinnerState = "spinner__ready";
45
+ state.spinnerStateText = content.complete.spinnerState;
46
+ state.done = true;
47
+ };
48
+ const reflectError = () => {
49
+ state.spinnerState = "spinner__failed";
50
+ state.done = true;
51
+ state.error = true;
52
+ };
53
+ const convert = (node) => {
54
+ const el = document.createElement(node.nodeName);
55
+ if (node.text)
56
+ el.textContent = node.text;
57
+ if (node.innerHTML)
58
+ el.innerHTML = node.innerHTML;
59
+ if (node.id)
60
+ el.id = node.id;
61
+ if (node.classes)
62
+ el.classList.add(...node.classes);
63
+ return el;
64
+ };
65
+ const notInErrorOrDoneState = () => {
66
+ return !(state.done || state.error);
67
+ };
68
+ const requestIDProcessingStatus = async () => {
69
+ var _a;
70
+ const apiRoute = (_a = document === null || document === void 0 ? void 0 : document.getElementById("spinner-container")) === null || _a === void 0 ? void 0 : _a.dataset.apiRoute;
71
+ try {
72
+ const response = await fetch(apiRoute);
73
+ if (response.status !== 200) {
74
+ throw new Error(`Status code ${response.status} received`);
75
+ }
76
+ const data = await response.json();
77
+ if (data.status === "Clear to proceed") {
78
+ reflectCompletion();
79
+ }
80
+ else if (notInErrorOrDoneState()) {
81
+ setTimeout(async () => {
82
+ await requestIDProcessingStatus();
83
+ }, 1000);
84
+ }
85
+ }
86
+ catch (e) {
87
+ console.log(e);
88
+ reflectError();
89
+ }
90
+ };
91
+ return {
92
+ state: state,
93
+ init: () => {
94
+ timers.updateDomTimer = setInterval(updateDom, 2000);
95
+ timers.abortUnresponsiveRequest = setTimeout(() => {
96
+ reflectError();
97
+ }, 15000);
98
+ updateDom();
99
+ requestIDProcessingStatus().then(() => {
100
+ updateDom();
101
+ });
102
+ },
103
+ };
118
104
  })();
119
105
 
120
106
  export { WaitInteractions };
@@ -1,38 +1,2 @@
1
- import i18next from "i18next";
2
- import { NextFunction, Request, Response } from "express";
3
- interface I18nData {
4
- language: string;
5
- store: {
6
- data: {
7
- [key: string]: unknown;
8
- };
9
- };
10
- }
11
- interface ExpressRequest extends Request {
12
- i18n: I18nData;
13
- }
14
- interface ExpressResponse extends Response {
15
- locals: {
16
- translations: unknown;
17
- basePath?: string;
18
- };
19
- }
20
- interface PlainRequest {
21
- i18n: I18nData;
22
- }
23
- interface PlainResponse {
24
- locals: {
25
- translations: unknown;
26
- basePath?: string;
27
- };
28
- }
29
- export declare function frontendUiMiddleware(req: ExpressRequest, res: ExpressResponse, next: NextFunction): void;
30
- export declare function frontendUiMiddleware(req: PlainRequest, res: PlainResponse, next: NextFunction): void;
31
- export declare const setFrontendUiTranslations: (instanceI18n: typeof i18next) => void;
32
- export declare const frontendUiMiddlewareIdentityBypass: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void;
33
- export declare function addLanguageParam(language: string, url?: URL): string;
34
- export declare function contactUsUrl(baseUrl: string, urlToAppend: string): string | null;
35
- export declare const setBaseTranslations: (instanceI18n: typeof i18next, filePath?: string) => void;
36
- export declare const getTranslationObject: (locale: string, filepath?: string) => Record<string, unknown>;
37
- export {};
1
+ export { WaitInteractions } from "./typescript/spinner";
38
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQ1D,UAAU,QAAQ;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;KAClC,CAAC;CACH;AAED,UAAU,cAAe,SAAQ,OAAO;IACtC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,eAAgB,SAAQ,QAAQ;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI,CAAC;AAER,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,YAAY,GACjB,IAAI,CAAC;AAaR,eAAO,MAAM,yBAAyB,GAAI,cAAc,OAAO,OAAO,SAerE,CAAC;AAGF,eAAO,MAAM,kCAAkC,GAC7C,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,YAAY,SAUnB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,UAU3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAMhE;AAED,eAAO,MAAM,mBAAmB,GAC9B,cAAc,OAAO,OAAO,EAC5B,WAAW,MAAM,SASlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAuBxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../frontend-src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -36,7 +36,7 @@ var footer$1 = {
36
36
  text: "Telerau ac amodau"
37
37
  },
38
38
  {
39
- href: "https://signin.account.gov.uk/privacy-notice",
39
+ href: "https://www.gov.uk/government/publications/govuk-one-login-privacy-notice",
40
40
  text: "Hysbysiad preifatrwydd"
41
41
  },
42
42
  {
@@ -66,7 +66,8 @@ var languageSelect$1 = {
66
66
  var phaseBanner$1 = {
67
67
  tag: "BETA",
68
68
  text: "Mae hwn yn wasanaeth newydd. Helpwch ni i'w wella a ",
69
- link: "rhoi eich adborth (agor mewn tab newydd)."
69
+ link: "rhoi eich adborth (agor mewn tab newydd).",
70
+ ariaLabel: "Rhyddhau Baner Cyfnod"
70
71
  };
71
72
  var skipLink$1 = {
72
73
  title: "Neidio i'r prif gynnwys"
@@ -115,7 +116,7 @@ var footer = {
115
116
  text: "Terms and conditions"
116
117
  },
117
118
  {
118
- href: "https://signin.account.gov.uk/privacy-notice",
119
+ href: "https://www.gov.uk/government/publications/govuk-one-login-privacy-notice",
119
120
  text: "Privacy notice"
120
121
  },
121
122
  {
@@ -145,7 +146,8 @@ var languageSelect = {
145
146
  var phaseBanner = {
146
147
  tag: "BETA",
147
148
  text: "This is a new service. Help us improve it and ",
148
- link: "give your feedback (opens in a new tab)."
149
+ link: "give your feedback (opens in a new tab).",
150
+ ariaLabel: "Release Phase Banner"
149
151
  };
150
152
  var skipLink = {
151
153
  title: "Skip to main content"
@@ -0,0 +1,6 @@
1
+ import { state } from "../utils/types";
2
+ export declare const WaitInteractions: {
3
+ state: state;
4
+ init: () => void;
5
+ };
6
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../frontend-src/typescript/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAEN,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;CA2HzB,CAAC"}
@@ -0,0 +1,51 @@
1
+ export interface virtualDom {
2
+ nodeName?: string;
3
+ id?: string;
4
+ classes?: string[];
5
+ }
6
+ export type error = {
7
+ spinnerState: string;
8
+ done: boolean;
9
+ virtualDom: never[];
10
+ state: {
11
+ error: boolean;
12
+ };
13
+ };
14
+ export type apiRoute = RequestInfo | URL;
15
+ export type content = {
16
+ initial: {
17
+ spinnerState: string | virtualDom;
18
+ };
19
+ complete: {
20
+ spinnerState: string;
21
+ };
22
+ };
23
+ export type timers = {
24
+ updateDomTimer?: unknown | number;
25
+ abortUnresponsiveRequest?: unknown | number;
26
+ };
27
+ export type state = {
28
+ error?: boolean | error;
29
+ spinnerState?: string;
30
+ done?: boolean;
31
+ virtualDom?: unknown[];
32
+ timers?: {
33
+ timers: timers;
34
+ };
35
+ spinnerStateText?: string;
36
+ };
37
+ export type node = {
38
+ text: object;
39
+ innerHTML: HTMLElement;
40
+ id: string;
41
+ classes: string[];
42
+ nodeName: keyof HTMLElementTagNameMap;
43
+ textContent: unknown | HTMLElement | string;
44
+ el: unknown | HTMLElement | string;
45
+ };
46
+ export type initialState = {
47
+ nodeName: string;
48
+ id: string;
49
+ classes: (string | undefined)[];
50
+ }[];
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../frontend-src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,GAAG,CAAC;AAEzC,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,GAAG,UAAU,CAAC;KACnC,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;IACtC,WAAW,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;IAC5C,EAAE,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CACjC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@govuk-one-login/frontend-ui",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "main": "build/cjs/index.cjs",
6
6
  "module": "build/esm/index.js",
@@ -11,8 +11,7 @@
11
11
  "scripts": {
12
12
  "build": "rollup -c",
13
13
  "dev": "rollup -c --watch",
14
- "test": "jest",
15
- "test:coverage": "jest --coverage src"
14
+ "test": "jest --coverage src"
16
15
  },
17
16
  "files": [
18
17
  "build/",
@@ -38,17 +37,23 @@
38
37
  "devDependencies": {
39
38
  "@rollup/plugin-json": "^6.1.0",
40
39
  "@types/express": "5.0.1",
41
- "@types/jest": "29.5.12",
40
+ "@types/jest": "^29.5.12",
42
41
  "@types/jest-axe": "3.5.9",
43
42
  "@types/js-yaml": "^4.0.9",
43
+ "@types/jsdom": "^21.1.7",
44
44
  "@types/lodash": "4.17.15",
45
45
  "@types/node": "22.12.0",
46
- "jest": "29.5.0",
46
+ "axe-core": "^4.10.3",
47
+ "jest": "^29.5.0",
48
+ "jest-axe": "^10.0.0",
49
+ "jest-environment-jsdom": "^30.0.0-beta.3",
50
+ "jsdom": "^26.1.0",
51
+ "nunjucks": "^3.2.4",
47
52
  "rollup": "4.37.0",
48
53
  "rollup-plugin-scss": "4.0.1",
49
54
  "rollup-plugin-typescript2": "0.36.0",
50
55
  "sass": "1.86.0",
51
- "ts-jest": "29.3.0",
56
+ "ts-jest": "^29.3.4",
52
57
  "tsx": "4.19.3",
53
58
  "typescript": "5.8.2"
54
59
  },
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../src/__tests__/index.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=logger.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.spec.d.ts","sourceRoot":"","sources":["../../../src/__tests__/logger.spec.ts"],"names":[],"mappings":""}