@hmcts/opal-frontend-common 0.0.30 → 0.0.32

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 (130) hide show
  1. package/README.md +66 -0
  2. package/components/alphagov/alphagov-accessible-autocomplete/index.d.ts +6 -0
  3. package/constants/index.d.ts +13 -1
  4. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-alias-base.mjs +3 -3
  5. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-array-base.mjs +3 -3
  6. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-array-removal-base.mjs +3 -3
  7. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-form-base.mjs +3 -3
  8. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-sortable-table-pagination.mjs +3 -3
  9. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-sortable-table.mjs +3 -3
  10. package/fesm2022/hmcts-opal-frontend-common-components-abstract-abstract-table-filter.mjs +3 -3
  11. package/fesm2022/hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.mjs +18 -4
  12. package/fesm2022/hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.mjs.map +1 -1
  13. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item-custom-account-information-item-label.mjs +3 -3
  14. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item-custom-account-information-item-value.mjs +3 -3
  15. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information-custom-account-information-item.mjs +3 -3
  16. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information.mjs +3 -3
  17. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-action-links.mjs +3 -3
  18. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-horizontal-scroll-pane.mjs +3 -3
  19. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-page-header.mjs +3 -3
  20. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-scrollable-panes-custom-scrollable-panes-inner-pane.mjs +3 -3
  21. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-scrollable-panes.mjs +3 -3
  22. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item-custom-summary-metric-bar-item-label.mjs +3 -3
  23. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item-custom-summary-metric-bar-item-value.mjs +3 -3
  24. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar-custom-summary-metric-bar-item.mjs +3 -3
  25. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar.mjs +3 -3
  26. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane-custom-vertical-scroll-pane-inner-pane.mjs +3 -3
  27. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane-custom-vertical-scroll-pane-outer-pane.mjs +3 -3
  28. package/fesm2022/hmcts-opal-frontend-common-components-custom-custom-vertical-scroll-pane.mjs +3 -3
  29. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-accordion.mjs +3 -3
  30. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-back-link.mjs +3 -3
  31. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-button.mjs +3 -3
  32. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-cancel-link.mjs +3 -3
  33. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-checkboxes.mjs +12 -12
  34. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-date-input.mjs +3 -3
  35. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-details.mjs +3 -3
  36. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-error-summary.mjs +3 -3
  37. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-footer.mjs +3 -3
  38. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-header.mjs +6 -6
  39. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-heading-with-caption.mjs +3 -3
  40. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-inset-text.mjs +3 -3
  41. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-list-govuk-list-link.mjs +3 -3
  42. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-list.mjs +3 -3
  43. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-notification-banner.mjs +3 -3
  44. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-pagination.mjs +3 -3
  45. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-panel.mjs +3 -3
  46. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-radio.mjs +12 -12
  47. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-select.mjs +3 -3
  48. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-summary-card-list.mjs +6 -6
  49. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-summary-list.mjs +12 -12
  50. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-table.mjs +12 -12
  51. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs-govuk-tabs-list-item.mjs +3 -3
  52. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs-govuk-tabs-panel.mjs +3 -3
  53. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tabs.mjs +3 -3
  54. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-tag.mjs +3 -3
  55. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-task-list.mjs +6 -6
  56. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-area.mjs +3 -3
  57. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-input-prefix-suffix.mjs +3 -3
  58. package/fesm2022/hmcts-opal-frontend-common-components-govuk-govuk-text-input.mjs +3 -3
  59. package/fesm2022/hmcts-opal-frontend-common-components-hod-hod-loading-spinner.mjs +3 -3
  60. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-alert.mjs +21 -21
  61. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-badge.mjs +3 -3
  62. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-button-menu-moj-button-menu-item.mjs +3 -3
  63. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-button-menu.mjs +3 -3
  64. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-date-picker.mjs +3 -3
  65. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-header.mjs +3 -3
  66. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option-moj-filter-panel-option-form-group-item.mjs +3 -3
  67. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option-moj-filter-panel-option-form-group-keyword.mjs +3 -3
  68. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-option.mjs +3 -3
  69. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-selected-moj-filter-panel-selected-tag.mjs +3 -3
  70. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel-moj-filter-panel-selected.mjs +3 -3
  71. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter-moj-filter-panel.mjs +3 -3
  72. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-filter.mjs +3 -3
  73. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-header.mjs +6 -6
  74. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-notification-badge.mjs +3 -3
  75. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-page-header.mjs +3 -3
  76. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-pagination.mjs +3 -3
  77. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-primary-navigation.mjs +6 -6
  78. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-sortable-table.mjs +18 -18
  79. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-sub-navigation.mjs +6 -6
  80. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-ticket-panel.mjs +3 -3
  81. package/fesm2022/hmcts-opal-frontend-common-components-moj-moj-timeline.mjs +6 -6
  82. package/fesm2022/hmcts-opal-frontend-common-constants.mjs +13 -1
  83. package/fesm2022/hmcts-opal-frontend-common-constants.mjs.map +1 -1
  84. package/fesm2022/hmcts-opal-frontend-common-directives-capitalisation.mjs +3 -3
  85. package/fesm2022/hmcts-opal-frontend-common-directives-govuk-button.mjs +3 -3
  86. package/fesm2022/{hmcts-opal-frontend-common-pages-access-denied.component-0Pl64thA.mjs → hmcts-opal-frontend-common-pages-access-denied.component-DE61xF9w.mjs} +4 -4
  87. package/fesm2022/{hmcts-opal-frontend-common-pages-access-denied.component-0Pl64thA.mjs.map → hmcts-opal-frontend-common-pages-access-denied.component-DE61xF9w.mjs.map} +1 -1
  88. package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in-stub.component-DvQOlQMW.mjs → hmcts-opal-frontend-common-pages-sign-in-stub.component-CGigL_1F.mjs} +4 -4
  89. package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in-stub.component-DvQOlQMW.mjs.map → hmcts-opal-frontend-common-pages-sign-in-stub.component-CGigL_1F.mjs.map} +1 -1
  90. package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in.component-yuoev8a3.mjs → hmcts-opal-frontend-common-pages-sign-in.component-cs_m2MgL.mjs} +4 -4
  91. package/fesm2022/{hmcts-opal-frontend-common-pages-sign-in.component-yuoev8a3.mjs.map → hmcts-opal-frontend-common-pages-sign-in.component-cs_m2MgL.mjs.map} +1 -1
  92. package/fesm2022/hmcts-opal-frontend-common-pages.mjs +2 -2
  93. package/fesm2022/hmcts-opal-frontend-common-pipes-date-format.mjs +3 -3
  94. package/fesm2022/hmcts-opal-frontend-common-pipes-days-ago.mjs +3 -3
  95. package/fesm2022/hmcts-opal-frontend-common-pipes-national-insurance.mjs +3 -3
  96. package/fesm2022/hmcts-opal-frontend-common-resolvers-title.mjs +3 -3
  97. package/fesm2022/hmcts-opal-frontend-common-services-app-initializer-service.mjs +3 -3
  98. package/fesm2022/hmcts-opal-frontend-common-services-app-insights-service.mjs +3 -3
  99. package/fesm2022/hmcts-opal-frontend-common-services-auth-service.mjs +3 -3
  100. package/fesm2022/hmcts-opal-frontend-common-services-date-service.mjs +3 -3
  101. package/fesm2022/hmcts-opal-frontend-common-services-launch-darkly-service.mjs +3 -3
  102. package/fesm2022/hmcts-opal-frontend-common-services-permissions-service.mjs +3 -3
  103. package/fesm2022/hmcts-opal-frontend-common-services-session-service.mjs +3 -3
  104. package/fesm2022/hmcts-opal-frontend-common-services-sort-service.mjs +3 -3
  105. package/fesm2022/hmcts-opal-frontend-common-services-transfer-state-service.mjs +3 -3
  106. package/fesm2022/hmcts-opal-frontend-common-services-transformation-service.mjs +3 -3
  107. package/fesm2022/hmcts-opal-frontend-common-services-utils-service.mjs +9 -4
  108. package/fesm2022/hmcts-opal-frontend-common-services-utils-service.mjs.map +1 -1
  109. package/package.json +1 -34
  110. package/fesm2022/hmcts-opal-frontend-common-validators-alphabetical-text.mjs +0 -16
  111. package/fesm2022/hmcts-opal-frontend-common-validators-alphabetical-text.mjs.map +0 -1
  112. package/fesm2022/hmcts-opal-frontend-common-validators-driving-licence-number.mjs +0 -23
  113. package/fesm2022/hmcts-opal-frontend-common-validators-driving-licence-number.mjs.map +0 -1
  114. package/fesm2022/hmcts-opal-frontend-common-validators-numerical-only.mjs +0 -16
  115. package/fesm2022/hmcts-opal-frontend-common-validators-numerical-only.mjs.map +0 -1
  116. package/fesm2022/hmcts-opal-frontend-common-validators-optional-valid-email-address.mjs +0 -17
  117. package/fesm2022/hmcts-opal-frontend-common-validators-optional-valid-email-address.mjs.map +0 -1
  118. package/fesm2022/hmcts-opal-frontend-common-validators-special-characters.mjs +0 -17
  119. package/fesm2022/hmcts-opal-frontend-common-validators-special-characters.mjs.map +0 -1
  120. package/fesm2022/hmcts-opal-frontend-common-validators-time-format.mjs +0 -20
  121. package/fesm2022/hmcts-opal-frontend-common-validators-time-format.mjs.map +0 -1
  122. package/fesm2022/hmcts-opal-frontend-common-validators-two-decimal-places.mjs +0 -18
  123. package/fesm2022/hmcts-opal-frontend-common-validators-two-decimal-places.mjs.map +0 -1
  124. package/validators/alphabetical-text/index.d.ts +0 -5
  125. package/validators/driving-licence-number/index.d.ts +0 -12
  126. package/validators/numerical-only/index.d.ts +0 -5
  127. package/validators/optional-valid-email-address/index.d.ts +0 -5
  128. package/validators/special-characters/index.d.ts +0 -5
  129. package/validators/time-format/index.d.ts +0 -9
  130. package/validators/two-decimal-places/index.d.ts +0 -5
package/README.md CHANGED
@@ -238,3 +238,69 @@ You are an expert in TypeScript, Angular, and scalable web application developme
238
238
  - Use the `providedIn: 'root'` option for singleton services
239
239
  - Use the `inject()` function instead of constructor injection
240
240
  ```
241
+
242
+ ## 💡 Copilot Prompt Examples for Angular MCP
243
+
244
+ ### 📘 1. Ask for Documentation Help
245
+
246
+ **Prompt:**
247
+
248
+ > “How do Angular signals work?”
249
+
250
+ **What Copilot does:**
251
+ Calls `search_documentation("signals")` and returns official Angular documentation context.
252
+
253
+ ---
254
+
255
+ ### 🧱 2. Generate Code
256
+
257
+ **Prompt:**
258
+
259
+ > “Generate a service for user authentication”
260
+
261
+ **What Copilot does:**
262
+ Runs `ng generate service user-auth` through the MCP server — adds the file in the correct directory.
263
+
264
+ ---
265
+
266
+ ### 📚 3. Get Project File Structure
267
+
268
+ **Prompt:**
269
+
270
+ > “List all Angular modules in this project”
271
+
272
+ **What Copilot does:**
273
+ Uses `list_projects` and `get_file_tree` to find and display modules across the workspace.
274
+
275
+ ---
276
+
277
+ ### 🧭 4. Navigate Routing Setup
278
+
279
+ **Prompt:**
280
+
281
+ > “What routes are defined in this app?”
282
+
283
+ **What Copilot does:**
284
+ Parses routing modules and shows route paths, guards, and lazy-loaded modules.
285
+
286
+ ---
287
+
288
+ ### 🧹 5. Refactor with AI Help
289
+
290
+ **Prompt:**
291
+
292
+ > “Convert this component to use the standalone API”
293
+
294
+ **What Copilot does:**
295
+ Updates component metadata with `standalone: true`, refactors imports, and removes old NgModule references.
296
+
297
+ ---
298
+
299
+ ### 🛠️ 6. Add Angular Libraries
300
+
301
+ **Prompt:**
302
+
303
+ > “Add Angular Material”
304
+
305
+ **What Copilot does:**
306
+ Triggers `ng add @angular/material` to install the package and configure animations + theming.
@@ -47,6 +47,12 @@ declare class AlphagovAccessibleAutocompleteComponent implements OnInit, OnDestr
47
47
  * @returns The props object for the AccessibleAutocomplete component.
48
48
  */
49
49
  private buildAutoCompleteProps;
50
+ /**
51
+ * Renders a custom dropdown arrow.
52
+ * @param className – The class to apply to the SVG.
53
+ * @returns An SVG string for the dropdown arrow.
54
+ */
55
+ private renderDropdownArrow;
50
56
  /**
51
57
  * Configures the auto-complete functionality using the accessible-autocomplete library.
52
58
  */
@@ -5,4 +5,16 @@ declare const FOOTER_LINKS: IGovukFooterLinks;
5
5
 
6
6
  declare const HEADER_LINKS: IMojHeaderLinks;
7
7
 
8
- export { FOOTER_LINKS, HEADER_LINKS };
8
+ declare const ALPHANUMERIC_WITH_SPACES_PATTERN: RegExp;
9
+ declare const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN: RegExp;
10
+ declare const LETTERS_WITH_SPACES_PATTERN: RegExp;
11
+ declare const LETTERS_WITH_SPACES_DOT_PATTERN: RegExp;
12
+ declare const LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN: RegExp;
13
+ declare const SPECIAL_CHARACTERS_PATTERN: RegExp;
14
+ declare const NUMERIC_PATTERN: RegExp;
15
+ declare const DRIVING_LICENCE_NUMBER_PATTERN: RegExp;
16
+ declare const EMAIL_ADDRESS_PATTERN: RegExp;
17
+ declare const TIME_FORMAT_PATTERN: RegExp;
18
+ declare const TWO_DECIMAL_PLACES_PATTERN: RegExp;
19
+
20
+ export { ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN };
@@ -190,10 +190,10 @@ class AbstractFormAliasBaseComponent extends AbstractFormBaseComponent {
190
190
  this['ngUnsubscribe'].complete();
191
191
  super.ngOnDestroy();
192
192
  }
193
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormAliasBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
194
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractFormAliasBaseComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormAliasBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractFormAliasBaseComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
195
195
  }
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormAliasBaseComponent, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormAliasBaseComponent, decorators: [{
197
197
  type: Component,
198
198
  args: [{
199
199
  template: '',
@@ -234,10 +234,10 @@ class AbstractFormArrayBaseComponent extends AbstractFormBaseComponent {
234
234
  this.ngUnsubscribe.complete();
235
235
  super.ngOnDestroy();
236
236
  }
237
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormArrayBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
238
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractFormArrayBaseComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormArrayBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractFormArrayBaseComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
239
239
  }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormArrayBaseComponent, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormArrayBaseComponent, decorators: [{
241
241
  type: Component,
242
242
  args: [{
243
243
  template: '',
@@ -77,10 +77,10 @@ class AbstractFormArrayRemovalComponent {
77
77
  this.router.navigate([route], { relativeTo: this.activatedRoute.parent });
78
78
  }
79
79
  }
80
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormArrayRemovalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractFormArrayRemovalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true });
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormArrayRemovalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractFormArrayRemovalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true });
82
82
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormArrayRemovalComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormArrayRemovalComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{
86
86
  template: '',
@@ -474,10 +474,10 @@ class AbstractFormBaseComponent {
474
474
  this.ngUnsubscribe.next();
475
475
  this.ngUnsubscribe.complete();
476
476
  }
477
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
478
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractFormBaseComponent, isStandalone: true, selector: "ng-component", outputs: { unsavedChanges: "unsavedChanges", formSubmit: "formSubmit" }, ngImport: i0, template: '', isInline: true });
477
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
478
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractFormBaseComponent, isStandalone: true, selector: "ng-component", outputs: { unsavedChanges: "unsavedChanges", formSubmit: "formSubmit" }, ngImport: i0, template: '', isInline: true });
479
479
  }
480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractFormBaseComponent, decorators: [{
480
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractFormBaseComponent, decorators: [{
481
481
  type: Component,
482
482
  args: [{
483
483
  template: '',
@@ -61,10 +61,10 @@ class AbstractSortableTablePaginationComponent extends AbstractSortableTableComp
61
61
  const totalPages = Math.ceil(this.displayTableDataSignal().length / this.itemsPerPageSignal());
62
62
  this.currentPageSignal.set(Math.max(1, Math.min(newPage, totalPages)));
63
63
  }
64
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractSortableTablePaginationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
65
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractSortableTablePaginationComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractSortableTablePaginationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractSortableTablePaginationComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractSortableTablePaginationComponent, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractSortableTablePaginationComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{
70
70
  template: '',
@@ -185,10 +185,10 @@ class AbstractSortableTableComponent extends AbstractTableFilterComponent {
185
185
  this.onSortChange({ key, sortType });
186
186
  }
187
187
  }
188
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractSortableTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
189
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractSortableTableComponent, isStandalone: true, selector: "ng-component", outputs: { abstractSortState: "abstractSortState" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractSortableTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
189
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractSortableTableComponent, isStandalone: true, selector: "ng-component", outputs: { abstractSortState: "abstractSortState" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
190
190
  }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractSortableTableComponent, decorators: [{
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractSortableTableComponent, decorators: [{
192
192
  type: Component,
193
193
  args: [{
194
194
  template: '',
@@ -168,10 +168,10 @@ class AbstractTableFilterComponent {
168
168
  this.appliedKeyword.set(keyword);
169
169
  this.applyFilterState();
170
170
  }
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractTableFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: AbstractTableFilterComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true });
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractTableFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AbstractTableFilterComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true });
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AbstractTableFilterComponent, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AbstractTableFilterComponent, decorators: [{
175
175
  type: Component,
176
176
  args: [{ template: '' }]
177
177
  }] });
@@ -81,9 +81,23 @@ class AlphagovAccessibleAutocompleteComponent {
81
81
  name: this.autoCompleteId,
82
82
  showAllValues: this.showAllValues,
83
83
  defaultValue: this.getDefaultValue(),
84
+ dropdownArrow: ({ className }) => this.renderDropdownArrow(className),
84
85
  onConfirm: (selectedName) => this.handleOnConfirm(selectedName),
85
86
  };
86
87
  }
88
+ /**
89
+ * Renders a custom dropdown arrow.
90
+ * @param className – The class to apply to the SVG.
91
+ * @returns An SVG string for the dropdown arrow.
92
+ */
93
+ renderDropdownArrow(className) {
94
+ return `
95
+ <svg class="${className}" style="top: 8px;" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
96
+ <path d="M256,298.3L256,298.3L256,298.3l174.2-167.2c4.3-4.2,11.4-4.1,15.8,0.2l30.6,29.9
97
+ c4.4,4.3,4.5,11.3,0.2,15.5L264.1,380.9c-2.2,2.2-5.2,3.2-8.1,3c-3,0.1-5.9-0.9-8.1-3L35.2,176.7
98
+ c-4.3-4.2-4.2-11.2,0.2-15.5L66,131.3c4.4-4.3,11.5-4.4,15.8-0.2L256,298.3z"></path>
99
+ </svg>`;
100
+ }
87
101
  /**
88
102
  * Configures the auto-complete functionality using the accessible-autocomplete library.
89
103
  */
@@ -120,12 +134,12 @@ class AlphagovAccessibleAutocompleteComponent {
120
134
  this.ngUnsubscribe.next();
121
135
  this.ngUnsubscribe.complete();
122
136
  }
123
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AlphagovAccessibleAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
124
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AlphagovAccessibleAutocompleteComponent, isStandalone: true, selector: "opal-lib-alphagov-accessible-autocomplete", inputs: { labelText: "labelText", labelClasses: "labelClasses", inputId: "inputId", inputName: "inputName", inputClasses: "inputClasses", hintText: "hintText", autoCompleteItems: "autoCompleteItems", showAllValues: "showAllValues", errors: "errors", control: "control" }, viewQueries: [{ propertyName: "autocompleteContainer", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"autoCompleteId\"> {{ labelText }} </label>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (errors) {\n <p id=\"{{ this.autoCompleteId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <div #autocomplete id=\"{{ autoCompleteId }}-container\" class=\"{{ inputClasses }}\"></div>\n <input [id]=\"inputId\" [name]=\"inputName\" type=\"hidden\" [formControl]=\"getControl\" />\n</div>\n", styles: [":host ::ng-deep .autocomplete__option{font-family:GDS Transport,arial,sans-serif}:host ::ng-deep .govuk-input--error input{border-color:#d4351c}:host ::ng-deep .autocomplete__input{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AlphagovAccessibleAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
138
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AlphagovAccessibleAutocompleteComponent, isStandalone: true, selector: "opal-lib-alphagov-accessible-autocomplete", inputs: { labelText: "labelText", labelClasses: "labelClasses", inputId: "inputId", inputName: "inputName", inputClasses: "inputClasses", hintText: "hintText", autoCompleteItems: "autoCompleteItems", showAllValues: "showAllValues", errors: "errors", control: "control" }, viewQueries: [{ propertyName: "autocompleteContainer", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"autoCompleteId\"> {{ labelText }} </label>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (errors) {\n <p id=\"{{ this.autoCompleteId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <div #autocomplete id=\"{{ autoCompleteId }}-container\" class=\"{{ inputClasses }}\"></div>\n <input [id]=\"inputId\" [name]=\"inputName\" type=\"hidden\" [formControl]=\"getControl\" />\n</div>\n", styles: [":host ::ng-deep .autocomplete__option{font-family:GDS Transport,arial,sans-serif}:host ::ng-deep .govuk-input--error input{border-color:#d4351c}:host ::ng-deep .autocomplete__input{background-color:#fff}:host ::ng-deep .autocomplete__dropdown-arrow-down{z-index:1!important;pointer-events:none!important}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
125
139
  }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AlphagovAccessibleAutocompleteComponent, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AlphagovAccessibleAutocompleteComponent, decorators: [{
127
141
  type: Component,
128
- args: [{ selector: 'opal-lib-alphagov-accessible-autocomplete', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"autoCompleteId\"> {{ labelText }} </label>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (errors) {\n <p id=\"{{ this.autoCompleteId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <div #autocomplete id=\"{{ autoCompleteId }}-container\" class=\"{{ inputClasses }}\"></div>\n <input [id]=\"inputId\" [name]=\"inputName\" type=\"hidden\" [formControl]=\"getControl\" />\n</div>\n", styles: [":host ::ng-deep .autocomplete__option{font-family:GDS Transport,arial,sans-serif}:host ::ng-deep .govuk-input--error input{border-color:#d4351c}:host ::ng-deep .autocomplete__input{background-color:#fff}\n"] }]
142
+ args: [{ selector: 'opal-lib-alphagov-accessible-autocomplete', imports: [ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"autoCompleteId\"> {{ labelText }} </label>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (errors) {\n <p id=\"{{ this.autoCompleteId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <div #autocomplete id=\"{{ autoCompleteId }}-container\" class=\"{{ inputClasses }}\"></div>\n <input [id]=\"inputId\" [name]=\"inputName\" type=\"hidden\" [formControl]=\"getControl\" />\n</div>\n", styles: [":host ::ng-deep .autocomplete__option{font-family:GDS Transport,arial,sans-serif}:host ::ng-deep .govuk-input--error input{border-color:#d4351c}:host ::ng-deep .autocomplete__input{background-color:#fff}:host ::ng-deep .autocomplete__dropdown-arrow-down{z-index:1!important;pointer-events:none!important}\n"] }]
129
143
  }], ctorParameters: () => [], propDecorators: { labelText: [{
130
144
  type: Input,
131
145
  args: [{ required: true }]
@@ -1 +1 @@
1
- {"version":3,"file":"hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.mjs","sources":["../../../projects/opal-frontend-common/components/alphagov/alphagov-accessible-autocomplete/alphagov-accessible-autocomplete.component.ts","../../../projects/opal-frontend-common/components/alphagov/alphagov-accessible-autocomplete/alphagov-accessible-autocomplete.component.html","../../../projects/opal-frontend-common/components/alphagov/alphagov-accessible-autocomplete/hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n afterNextRender,\n inject,\n} from '@angular/core';\nimport { FormControl, AbstractControl, ReactiveFormsModule } from '@angular/forms';\nimport { IAlphagovAccessibleAutocompleteItem } from './interfaces/alphagov-accessible-autocomplete-item.interface';\nimport { AccessibleAutocompleteProps } from 'accessible-autocomplete';\nimport { Subject, pairwise, startWith, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'opal-lib-alphagov-accessible-autocomplete',\n imports: [ReactiveFormsModule],\n templateUrl: './alphagov-accessible-autocomplete.component.html',\n styleUrl: './alphagov-accessible-autocomplete.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlphagovAccessibleAutocompleteComponent implements OnInit, OnDestroy {\n private readonly changeDetector: ChangeDetectorRef = inject(ChangeDetectorRef);\n private _control!: FormControl;\n private readonly ngUnsubscribe = new Subject<void>();\n\n @Input({ required: true }) labelText!: string;\n @Input({ required: false }) labelClasses!: string;\n @Input({ required: true }) inputId!: string;\n @Input({ required: true }) inputName!: string;\n @Input({ required: false }) inputClasses!: string;\n @Input({ required: false }) hintText!: string;\n @Input({ required: true }) autoCompleteItems: IAlphagovAccessibleAutocompleteItem[] = [];\n @Input() showAllValues = true;\n @Input({ required: false }) errors: string | null = null;\n\n @ViewChild('autocomplete') autocompleteContainer!: ElementRef<HTMLElement>;\n\n public autoCompleteId!: string;\n\n @Input({ required: true }) set control(abstractControl: AbstractControl | null) {\n // Form controls are passed in as abstract controls, we need to re-cast it.\n this._control = abstractControl as FormControl;\n }\n\n constructor() {\n afterNextRender(() => {\n // Only trigger the render of the component in the browser\n this.configureAutoComplete();\n });\n }\n\n /**\n * Gets the control for the alphagov-accessible-autocomplete component.\n * @returns The control for the component.\n */\n get getControl() {\n return this._control;\n }\n\n /**\n * Handles the confirmation of a selected name.\n *\n * @param selectedName - The selected name.\n * @returns void\n */\n\n private handleOnConfirm(selectedName: string | undefined): void {\n // selectedName is populated on selecting an option but is undefined onBlur, so we need to grab the input value directly from the input\n const control = this._control;\n const name = selectedName ?? (document.querySelector(`#${this.autoCompleteId}`) as HTMLInputElement).value;\n const selectedItem = this.autoCompleteItems.find((item) => item.name === name) ?? null;\n const previousValue = control.value;\n const selectedValue = selectedItem?.value ?? null;\n\n control.setValue(selectedValue);\n control.markAsTouched();\n\n // Handles initial empty state when the user clicks away from the input\n if (selectedItem === null && previousValue === null) {\n control.markAsPristine();\n } else if (selectedItem?.value !== previousValue) {\n control.markAsDirty();\n }\n\n control.updateValueAndValidity();\n this.changeDetector.detectChanges();\n }\n\n /**\n * Retrieves the default value for the autocomplete component.\n *\n * @returns The default value as a string.\n */\n\n private getDefaultValue() {\n return this.autoCompleteItems.find((item) => item.value === this._control.value)?.name ?? '';\n }\n\n /**\n * Builds the props object for the AccessibleAutocomplete component.\n * @returns The props object for the AccessibleAutocomplete component.\n */\n private buildAutoCompleteProps(): AccessibleAutocompleteProps {\n return {\n id: this.autoCompleteId,\n element: this.autocompleteContainer.nativeElement,\n source: this.autoCompleteItems.map((item) => item.name),\n name: this.autoCompleteId,\n showAllValues: this.showAllValues,\n defaultValue: this.getDefaultValue(),\n onConfirm: (selectedName: string) => this.handleOnConfirm(selectedName),\n };\n }\n\n /**\n * Configures the auto-complete functionality using the accessible-autocomplete library.\n */\n private configureAutoComplete(): void {\n import('accessible-autocomplete').then((accessibleAutocomplete) => {\n accessibleAutocomplete.default(this.buildAutoCompleteProps());\n });\n }\n\n /**\n * Sets up the control subscription for value changes.\n * Whenever the control value changes, this method is called to handle the changes.\n * If the new value is null, it clears the autocomplete container and configures the autocomplete.\n */\n private setupControlSub(): void {\n this._control.valueChanges\n .pipe(startWith(null), pairwise(), takeUntil(this.ngUnsubscribe))\n .subscribe(([prev, next]) => {\n // If both values are null, we don't need to do anything\n if (prev === null && next === null) {\n return;\n }\n\n // Otherwise, next is null, we need to clear the autocomplete\n if (next === null) {\n this.autocompleteContainer.nativeElement.innerHTML = '';\n this.configureAutoComplete();\n }\n });\n }\n\n ngOnInit(): void {\n this.autoCompleteId = this.inputId + '-autocomplete';\n this.setupControlSub();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"autoCompleteId\"> {{ labelText }} </label>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (errors) {\n <p id=\"{{ this.autoCompleteId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <div #autocomplete id=\"{{ autoCompleteId }}-container\" class=\"{{ inputClasses }}\"></div>\n <input [id]=\"inputId\" [name]=\"inputName\" type=\"hidden\" [formControl]=\"getControl\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.mjs","sources":["../../../projects/opal-frontend-common/components/alphagov/alphagov-accessible-autocomplete/alphagov-accessible-autocomplete.component.ts","../../../projects/opal-frontend-common/components/alphagov/alphagov-accessible-autocomplete/alphagov-accessible-autocomplete.component.html","../../../projects/opal-frontend-common/components/alphagov/alphagov-accessible-autocomplete/hmcts-opal-frontend-common-components-alphagov-alphagov-accessible-autocomplete.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n afterNextRender,\n inject,\n} from '@angular/core';\nimport { FormControl, AbstractControl, ReactiveFormsModule } from '@angular/forms';\nimport { IAlphagovAccessibleAutocompleteItem } from './interfaces/alphagov-accessible-autocomplete-item.interface';\nimport { AccessibleAutocompleteProps } from 'accessible-autocomplete';\nimport { Subject, pairwise, startWith, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'opal-lib-alphagov-accessible-autocomplete',\n imports: [ReactiveFormsModule],\n templateUrl: './alphagov-accessible-autocomplete.component.html',\n styleUrl: './alphagov-accessible-autocomplete.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlphagovAccessibleAutocompleteComponent implements OnInit, OnDestroy {\n private readonly changeDetector: ChangeDetectorRef = inject(ChangeDetectorRef);\n private _control!: FormControl;\n private readonly ngUnsubscribe = new Subject<void>();\n\n @Input({ required: true }) labelText!: string;\n @Input({ required: false }) labelClasses!: string;\n @Input({ required: true }) inputId!: string;\n @Input({ required: true }) inputName!: string;\n @Input({ required: false }) inputClasses!: string;\n @Input({ required: false }) hintText!: string;\n @Input({ required: true }) autoCompleteItems: IAlphagovAccessibleAutocompleteItem[] = [];\n @Input() showAllValues = true;\n @Input({ required: false }) errors: string | null = null;\n\n @ViewChild('autocomplete') autocompleteContainer!: ElementRef<HTMLElement>;\n\n public autoCompleteId!: string;\n\n @Input({ required: true }) set control(abstractControl: AbstractControl | null) {\n // Form controls are passed in as abstract controls, we need to re-cast it.\n this._control = abstractControl as FormControl;\n }\n\n constructor() {\n afterNextRender(() => {\n // Only trigger the render of the component in the browser\n this.configureAutoComplete();\n });\n }\n\n /**\n * Gets the control for the alphagov-accessible-autocomplete component.\n * @returns The control for the component.\n */\n get getControl() {\n return this._control;\n }\n\n /**\n * Handles the confirmation of a selected name.\n *\n * @param selectedName - The selected name.\n * @returns void\n */\n\n private handleOnConfirm(selectedName: string | undefined): void {\n // selectedName is populated on selecting an option but is undefined onBlur, so we need to grab the input value directly from the input\n const control = this._control;\n const name = selectedName ?? (document.querySelector(`#${this.autoCompleteId}`) as HTMLInputElement).value;\n const selectedItem = this.autoCompleteItems.find((item) => item.name === name) ?? null;\n const previousValue = control.value;\n const selectedValue = selectedItem?.value ?? null;\n\n control.setValue(selectedValue);\n control.markAsTouched();\n\n // Handles initial empty state when the user clicks away from the input\n if (selectedItem === null && previousValue === null) {\n control.markAsPristine();\n } else if (selectedItem?.value !== previousValue) {\n control.markAsDirty();\n }\n\n control.updateValueAndValidity();\n this.changeDetector.detectChanges();\n }\n\n /**\n * Retrieves the default value for the autocomplete component.\n *\n * @returns The default value as a string.\n */\n\n private getDefaultValue() {\n return this.autoCompleteItems.find((item) => item.value === this._control.value)?.name ?? '';\n }\n\n /**\n * Builds the props object for the AccessibleAutocomplete component.\n * @returns The props object for the AccessibleAutocomplete component.\n */\n private buildAutoCompleteProps(): AccessibleAutocompleteProps {\n return {\n id: this.autoCompleteId,\n element: this.autocompleteContainer.nativeElement,\n source: this.autoCompleteItems.map((item) => item.name),\n name: this.autoCompleteId,\n showAllValues: this.showAllValues,\n defaultValue: this.getDefaultValue(),\n dropdownArrow: ({ className }) => this.renderDropdownArrow(className),\n onConfirm: (selectedName: string) => this.handleOnConfirm(selectedName),\n };\n }\n\n /**\n * Renders a custom dropdown arrow.\n * @param className – The class to apply to the SVG.\n * @returns An SVG string for the dropdown arrow.\n */\n private renderDropdownArrow(className: string): string {\n return `\n <svg class=\"${className}\" style=\"top: 8px;\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M256,298.3L256,298.3L256,298.3l174.2-167.2c4.3-4.2,11.4-4.1,15.8,0.2l30.6,29.9\n c4.4,4.3,4.5,11.3,0.2,15.5L264.1,380.9c-2.2,2.2-5.2,3.2-8.1,3c-3,0.1-5.9-0.9-8.1-3L35.2,176.7\n c-4.3-4.2-4.2-11.2,0.2-15.5L66,131.3c4.4-4.3,11.5-4.4,15.8-0.2L256,298.3z\"></path>\n </svg>`;\n }\n\n /**\n * Configures the auto-complete functionality using the accessible-autocomplete library.\n */\n private configureAutoComplete(): void {\n import('accessible-autocomplete').then((accessibleAutocomplete) => {\n accessibleAutocomplete.default(this.buildAutoCompleteProps());\n });\n }\n\n /**\n * Sets up the control subscription for value changes.\n * Whenever the control value changes, this method is called to handle the changes.\n * If the new value is null, it clears the autocomplete container and configures the autocomplete.\n */\n private setupControlSub(): void {\n this._control.valueChanges\n .pipe(startWith(null), pairwise(), takeUntil(this.ngUnsubscribe))\n .subscribe(([prev, next]) => {\n // If both values are null, we don't need to do anything\n if (prev === null && next === null) {\n return;\n }\n\n // Otherwise, next is null, we need to clear the autocomplete\n if (next === null) {\n this.autocompleteContainer.nativeElement.innerHTML = '';\n this.configureAutoComplete();\n }\n });\n }\n\n ngOnInit(): void {\n this.autoCompleteId = this.inputId + '-autocomplete';\n this.setupControlSub();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","<div class=\"govuk-form-group\" [class.govuk-form-group--error]=\"!!errors\">\n <label class=\"govuk-label {{ labelClasses }}\" [for]=\"autoCompleteId\"> {{ labelText }} </label>\n @if (hintText) {\n <div id=\"{{ inputId }}-hint\" class=\"govuk-hint\">\n {{ hintText }}\n </div>\n }\n\n @if (errors) {\n <p id=\"{{ this.autoCompleteId }}-error-message\" class=\"govuk-error-message\">\n <span class=\"govuk-visually-hidden\">Error: </span> {{ errors }}\n </p>\n }\n\n <div #autocomplete id=\"{{ autoCompleteId }}-container\" class=\"{{ inputClasses }}\"></div>\n <input [id]=\"inputId\" [name]=\"inputName\" type=\"hidden\" [formControl]=\"getControl\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@ import { HostBinding, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class CustomAccountInformationItemLabelComponent {
5
5
  hostClass = 'govuk-body govuk-!-font-size-16 govuk-!-font-weight-bold govuk-!-margin-0';
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationItemLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomAccountInformationItemLabelComponent, isStandalone: true, selector: "opal-lib-custom-account-information-item-label, [opal-lib-custom-account-information-item-label]", host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationItemLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomAccountInformationItemLabelComponent, isStandalone: true, selector: "opal-lib-custom-account-information-item-label, [opal-lib-custom-account-information-item-label]", host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationItemLabelComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationItemLabelComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'opal-lib-custom-account-information-item-label, [opal-lib-custom-account-information-item-label]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
12
12
  }], propDecorators: { hostClass: [{
@@ -3,10 +3,10 @@ import { HostBinding, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class CustomAccountInformationItemValueComponent {
5
5
  hostClass = 'govuk-body govuk-!-font-size-16 govuk-!-margin-0';
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationItemValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomAccountInformationItemValueComponent, isStandalone: true, selector: "opal-lib-custom-account-information-item-value, [opal-lib-custom-account-information-item-value]", host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationItemValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomAccountInformationItemValueComponent, isStandalone: true, selector: "opal-lib-custom-account-information-item-value, [opal-lib-custom-account-information-item-value]", host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationItemValueComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationItemValueComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'opal-lib-custom-account-information-item-value, [opal-lib-custom-account-information-item-value]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
12
12
  }], propDecorators: { hostClass: [{
@@ -6,10 +6,10 @@ class CustomAccountInformationItemComponent {
6
6
  get hostClass() {
7
7
  return this.itemClasses;
8
8
  }
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomAccountInformationItemComponent, isStandalone: true, selector: "opal-lib-custom-account-information-item", inputs: { itemClasses: "itemClasses" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomAccountInformationItemComponent, isStandalone: true, selector: "opal-lib-custom-account-information-item", inputs: { itemClasses: "itemClasses" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationItemComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationItemComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'opal-lib-custom-account-information-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
15
15
  }], propDecorators: { itemClasses: [{
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class CustomAccountInformationComponent {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomAccountInformationComponent, isStandalone: true, selector: "opal-lib-custom-account-information, [opal-lib-custom-account-information]", ngImport: i0, template: "<div class=\"govuk-grid-row\">\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomAccountInformationComponent, isStandalone: true, selector: "opal-lib-custom-account-information, [opal-lib-custom-account-information]", ngImport: i0, template: "<div class=\"govuk-grid-row\">\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomAccountInformationComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomAccountInformationComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'opal-lib-custom-account-information, [opal-lib-custom-account-information]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"govuk-grid-row\">\n <ng-content></ng-content>\n</div>\n" }]
11
11
  }] });
@@ -10,10 +10,10 @@ class CustomActionLinksComponent {
10
10
  get hostClass() {
11
11
  return this.classSize;
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomActionLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomActionLinksComponent, isStandalone: true, selector: "opal-lib-custom-action-links", inputs: { id: "id", classSize: "classSize" }, host: { properties: { "attr.id": "this.hostId", "class": "this.hostClass" } }, ngImport: i0, template: "<hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible custom-section-break--2px\" />\n<ng-content select=\"[heading]\"></ng-content>\n<ng-content select=\"[links]\"></ng-content>\n" });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomActionLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomActionLinksComponent, isStandalone: true, selector: "opal-lib-custom-action-links", inputs: { id: "id", classSize: "classSize" }, host: { properties: { "attr.id": "this.hostId", "class": "this.hostClass" } }, ngImport: i0, template: "<hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible custom-section-break--2px\" />\n<ng-content select=\"[heading]\"></ng-content>\n<ng-content select=\"[links]\"></ng-content>\n" });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomActionLinksComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomActionLinksComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'opal-lib-custom-action-links', template: "<hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible custom-section-break--2px\" />\n<ng-content select=\"[heading]\"></ng-content>\n<ng-content select=\"[links]\"></ng-content>\n" }]
19
19
  }], propDecorators: { id: [{
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { Component } from '@angular/core';
3
3
 
4
4
  class CustomHorizontalScrollPaneComponent {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomHorizontalScrollPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomHorizontalScrollPaneComponent, isStandalone: true, selector: "opal-lib-custom-horizontal-scroll-pane", ngImport: i0, template: "<div class=\"custom-horizontal-scroll-pane\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-horizontal-scroll-pane{overflow-x:auto;overflow-y:hidden;width:100%}\n"] });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomHorizontalScrollPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomHorizontalScrollPaneComponent, isStandalone: true, selector: "opal-lib-custom-horizontal-scroll-pane", ngImport: i0, template: "<div class=\"custom-horizontal-scroll-pane\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-horizontal-scroll-pane{overflow-x:auto;overflow-y:hidden;width:100%}\n"] });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomHorizontalScrollPaneComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomHorizontalScrollPaneComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'opal-lib-custom-horizontal-scroll-pane', template: "<div class=\"custom-horizontal-scroll-pane\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-horizontal-scroll-pane{overflow-x:auto;overflow-y:hidden;width:100%}\n"] }]
11
11
  }] });
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class CustomPageHeaderComponent {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomPageHeaderComponent, isStandalone: true, selector: "opal-lib-custom-page-header", ngImport: i0, template: "<div class=\"govuk-grid-row custom-grid-class\">\n <div class=\"govuk-grid-column-one-half\">\n <ng-content select=\"[pageHeaderHeading]\"></ng-content>\n </div>\n <div class=\"govuk-grid-column-one-half custom-column-class\">\n <div class=\"moj-button-group moj-button-group--inline custom-button-group-class\">\n <ng-content select=\"[pageHeaderButtons]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".custom-grid-class{display:flex}.custom-column-class{display:flex;flex-direction:column;justify-content:end}.custom-button-group-class{justify-content:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomPageHeaderComponent, isStandalone: true, selector: "opal-lib-custom-page-header", ngImport: i0, template: "<div class=\"govuk-grid-row custom-grid-class\">\n <div class=\"govuk-grid-column-one-half\">\n <ng-content select=\"[pageHeaderHeading]\"></ng-content>\n </div>\n <div class=\"govuk-grid-column-one-half custom-column-class\">\n <div class=\"moj-button-group moj-button-group--inline custom-button-group-class\">\n <ng-content select=\"[pageHeaderButtons]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".custom-grid-class{display:flex}.custom-column-class{display:flex;flex-direction:column;justify-content:end}.custom-button-group-class{justify-content:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomPageHeaderComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomPageHeaderComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'opal-lib-custom-page-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"govuk-grid-row custom-grid-class\">\n <div class=\"govuk-grid-column-one-half\">\n <ng-content select=\"[pageHeaderHeading]\"></ng-content>\n </div>\n <div class=\"govuk-grid-column-one-half custom-column-class\">\n <div class=\"moj-button-group moj-button-group--inline custom-button-group-class\">\n <ng-content select=\"[pageHeaderButtons]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".custom-grid-class{display:flex}.custom-column-class{display:flex;flex-direction:column;justify-content:end}.custom-button-group-class{justify-content:right}\n"] }]
11
11
  }] });
@@ -6,10 +6,10 @@ import { Input, Component } from '@angular/core';
6
6
  class CustomScrollablePanesInnerPaneComponent {
7
7
  stickyHeadersEnabled = true;
8
8
  maxHeight = '500px';
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomScrollablePanesInnerPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomScrollablePanesInnerPaneComponent, isStandalone: true, selector: "opal-lib-custom-scrollable-panes-inner-pane", inputs: { stickyHeadersEnabled: "stickyHeadersEnabled", maxHeight: "maxHeight" }, ngImport: i0, template: "<div\n class=\"custom-scrollable-panes-inner-pane\"\n [style.max-height]=\"maxHeight\"\n [ngClass]=\"{ 'sticky-headers': stickyHeadersEnabled }\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".custom-scrollable-panes-inner-pane{overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomScrollablePanesInnerPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomScrollablePanesInnerPaneComponent, isStandalone: true, selector: "opal-lib-custom-scrollable-panes-inner-pane", inputs: { stickyHeadersEnabled: "stickyHeadersEnabled", maxHeight: "maxHeight" }, ngImport: i0, template: "<div\n class=\"custom-scrollable-panes-inner-pane\"\n [style.max-height]=\"maxHeight\"\n [ngClass]=\"{ 'sticky-headers': stickyHeadersEnabled }\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".custom-scrollable-panes-inner-pane{overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomScrollablePanesInnerPaneComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomScrollablePanesInnerPaneComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'opal-lib-custom-scrollable-panes-inner-pane', imports: [CommonModule], template: "<div\n class=\"custom-scrollable-panes-inner-pane\"\n [style.max-height]=\"maxHeight\"\n [ngClass]=\"{ 'sticky-headers': stickyHeadersEnabled }\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".custom-scrollable-panes-inner-pane{overflow-y:auto}\n"] }]
15
15
  }], propDecorators: { stickyHeadersEnabled: [{
@@ -3,10 +3,10 @@ import { Input, Component } from '@angular/core';
3
3
 
4
4
  class CustomScrollablePanesComponent {
5
5
  height = '100%';
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomScrollablePanesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomScrollablePanesComponent, isStandalone: true, selector: "opal-lib-custom-scrollable-panes", inputs: { height: "height" }, ngImport: i0, template: "<div class=\"custom-scrollable-pane\" [style.height]=\"height\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-scrollable-pane{width:100%}\n"] });
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomScrollablePanesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomScrollablePanesComponent, isStandalone: true, selector: "opal-lib-custom-scrollable-panes", inputs: { height: "height" }, ngImport: i0, template: "<div class=\"custom-scrollable-pane\" [style.height]=\"height\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-scrollable-pane{width:100%}\n"] });
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomScrollablePanesComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomScrollablePanesComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'opal-lib-custom-scrollable-panes', template: "<div class=\"custom-scrollable-pane\" [style.height]=\"height\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-scrollable-pane{width:100%}\n"] }]
12
12
  }], propDecorators: { height: [{
@@ -6,10 +6,10 @@ class CustomSummaryMetricBarItemLabelComponent {
6
6
  get hostClasses() {
7
7
  return `govuk-body govuk-!-font-size-19 govuk-!-font-weight-bold govuk-!-margin-0 ${this.textColour}`;
8
8
  }
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarItemLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomSummaryMetricBarItemLabelComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar-item-label, [opal-lib-custom-summary-metric-bar-item-label]", inputs: { textColour: "textColour" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarItemLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomSummaryMetricBarItemLabelComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar-item-label, [opal-lib-custom-summary-metric-bar-item-label]", inputs: { textColour: "textColour" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarItemLabelComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarItemLabelComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'opal-lib-custom-summary-metric-bar-item-label, [opal-lib-custom-summary-metric-bar-item-label]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
15
15
  }], propDecorators: { textColour: [{
@@ -6,10 +6,10 @@ class CustomSummaryMetricBarItemValueComponent {
6
6
  get hostClasses() {
7
7
  return `govuk-body govuk-!-font-size-24 govuk-!-font-weight-bold govuk-!-margin-0 ${this.textColour}`;
8
8
  }
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarItemValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomSummaryMetricBarItemValueComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar-item-value, [opal-lib-custom-summary-metric-bar-item-value]", inputs: { textColour: "textColour" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarItemValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomSummaryMetricBarItemValueComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar-item-value, [opal-lib-custom-summary-metric-bar-item-value]", inputs: { textColour: "textColour" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarItemValueComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarItemValueComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'opal-lib-custom-summary-metric-bar-item-value, [opal-lib-custom-summary-metric-bar-item-value]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
15
15
  }], propDecorators: { textColour: [{
@@ -18,10 +18,10 @@ class CustomSummaryMetricBarItemComponent {
18
18
  getSummaryMetricBarItemClasses() {
19
19
  return `custom-summary-metric-bar-item-frame ${this.backgroundColour}`;
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomSummaryMetricBarItemComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar-item", inputs: { backgroundColour: "backgroundColour", itemClasses: "itemClasses" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<div [class]=\"getSummaryMetricBarItemClasses()\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-summary-metric-bar-item-frame{padding:15px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomSummaryMetricBarItemComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar-item", inputs: { backgroundColour: "backgroundColour", itemClasses: "itemClasses" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<div [class]=\"getSummaryMetricBarItemClasses()\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-summary-metric-bar-item-frame{padding:15px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarItemComponent, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarItemComponent, decorators: [{
25
25
  type: Component,
26
26
  args: [{ selector: 'opal-lib-custom-summary-metric-bar-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"getSummaryMetricBarItemClasses()\">\n <ng-content></ng-content>\n</div>\n", styles: [".custom-summary-metric-bar-item-frame{padding:15px}\n"] }]
27
27
  }], propDecorators: { backgroundColour: [{
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class CustomSummaryMetricBarComponent {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomSummaryMetricBarComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar", ngImport: i0, template: "<div class=\"govuk-grid-row\">\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomSummaryMetricBarComponent, isStandalone: true, selector: "opal-lib-custom-summary-metric-bar", ngImport: i0, template: "<div class=\"govuk-grid-row\">\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomSummaryMetricBarComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomSummaryMetricBarComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'opal-lib-custom-summary-metric-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"govuk-grid-row\">\n <ng-content></ng-content>\n</div>\n" }]
11
11
  }] });
@@ -6,10 +6,10 @@ import { Input, Component } from '@angular/core';
6
6
  class CustomVerticalScrollPaneInnerPaneComponent {
7
7
  maxHeight = '500px';
8
8
  stickyHeadersEnabled = true;
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomVerticalScrollPaneInnerPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: CustomVerticalScrollPaneInnerPaneComponent, isStandalone: true, selector: "opal-lib-custom-vertical-scroll-pane-inner-pane", inputs: { maxHeight: "maxHeight", stickyHeadersEnabled: "stickyHeadersEnabled" }, ngImport: i0, template: "<div\n class=\"custom-vertical-scroll-pane-inner-pane\"\n [style.max-height]=\"maxHeight\"\n [ngClass]=\"{ 'sticky-headers': stickyHeadersEnabled }\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".custom-vertical-scroll-pane-inner-pane{overflow-y:auto;overflow-x:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomVerticalScrollPaneInnerPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: CustomVerticalScrollPaneInnerPaneComponent, isStandalone: true, selector: "opal-lib-custom-vertical-scroll-pane-inner-pane", inputs: { maxHeight: "maxHeight", stickyHeadersEnabled: "stickyHeadersEnabled" }, ngImport: i0, template: "<div\n class=\"custom-vertical-scroll-pane-inner-pane\"\n [style.max-height]=\"maxHeight\"\n [ngClass]=\"{ 'sticky-headers': stickyHeadersEnabled }\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".custom-vertical-scroll-pane-inner-pane{overflow-y:auto;overflow-x:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CustomVerticalScrollPaneInnerPaneComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CustomVerticalScrollPaneInnerPaneComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'opal-lib-custom-vertical-scroll-pane-inner-pane', imports: [CommonModule], template: "<div\n class=\"custom-vertical-scroll-pane-inner-pane\"\n [style.max-height]=\"maxHeight\"\n [ngClass]=\"{ 'sticky-headers': stickyHeadersEnabled }\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [".custom-vertical-scroll-pane-inner-pane{overflow-y:auto;overflow-x:hidden}\n"] }]
15
15
  }], propDecorators: { maxHeight: [{