@hmcts/rpx-xui-common-lib 3.2.18-innerHtml-update → 3.2.18

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.
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, EventEmitter, ViewEncapsulation, Input, Output, Injectable, InjectionToken, DOCUMENT, Inject, ViewChild, Pipe, ChangeDetectionStrategy, Directive, ElementRef, NgModule } from '@angular/core';
2
+ import { Component, EventEmitter, ViewEncapsulation, Input, Output, Injectable, InjectionToken, DOCUMENT, Inject, ViewChild, Pipe, ChangeDetectionStrategy, Directive, SecurityContext, ElementRef, NgModule } from '@angular/core';
3
3
  import * as i2 from 'rpx-xui-translation';
4
4
  import { RpxTranslationModule } from 'rpx-xui-translation';
5
5
  import * as i1 from '@angular/common';
6
- import { formatDate, DOCUMENT as DOCUMENT$1, CommonModule } from '@angular/common';
6
+ import { formatDate, CommonModule } from '@angular/common';
7
7
  import * as i2$3 from '@angular/forms';
8
8
  import { FormGroup, FormControl, Validators, FormArray, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
9
  import { combineLatest, BehaviorSubject, Subject, of as of$1, forkJoin, zip, iif } from 'rxjs';
@@ -21,7 +21,6 @@ import * as i2$2 from '@ng-idle/keepalive';
21
21
  import * as i4 from '@angular/material/legacy-autocomplete';
22
22
  import { MatLegacyAutocompleteModule } from '@angular/material/legacy-autocomplete';
23
23
  import * as i5 from '@angular/material/legacy-core';
24
- import DOMPurify from 'dompurify';
25
24
  import * as i1$4 from '@angular/material/legacy-tabs';
26
25
  import { MatLegacyTabsModule } from '@angular/material/legacy-tabs';
27
26
  import * as i2$4 from 'ngx-pagination';
@@ -1709,11 +1708,11 @@ class GoogleAnalyticsService {
1709
1708
  script1.src = `https://www.googletagmanager.com/gtag/js?id=${this.googleAnalyticsKey}`;
1710
1709
  this.document.head.appendChild(script1);
1711
1710
  const script2 = this.document.createElement('script');
1712
- script2.text = `
1711
+ script2.innerHTML = `
1713
1712
  window.dataLayer = window.dataLayer || [];
1714
1713
  function gtag(){dataLayer.push(arguments);}
1715
1714
  gtag('js', new Date());
1716
- gtag('config', ${JSON.stringify(this.googleAnalyticsKey)}, {'send_page_view': false});
1715
+ gtag('config', '${this.googleAnalyticsKey}', {'send_page_view': false});
1717
1716
  `;
1718
1717
  this.document.head.appendChild(script2);
1719
1718
  }
@@ -1725,11 +1724,11 @@ class GoogleAnalyticsService {
1725
1724
  }
1726
1725
  listenForRouteChanges() {
1727
1726
  if (this.googleAnalyticsKey) {
1728
- this.router.events.subscribe((event) => {
1727
+ this.router.events.subscribe(event => {
1729
1728
  if (event instanceof NavigationEnd) {
1730
1729
  this.window.gtag('config', this.googleAnalyticsKey, {
1731
1730
  page_path: event.urlAfterRedirects,
1732
- page_title: this.title.getTitle()
1731
+ page_title: this.title.getTitle(),
1733
1732
  });
1734
1733
  }
1735
1734
  });
@@ -6517,134 +6516,26 @@ class SelectedCaseListComponent {
6517
6516
  }] }); })();
6518
6517
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectedCaseListComponent, { className: "SelectedCaseListComponent", filePath: "lib/components/selected-case-list/selected-case-list.component.ts", lineNumber: 12 }); })();
6519
6518
 
6520
- class SafeHtmlDirective {
6521
- constructor(elementRef, renderer, document) {
6522
- this.elementRef = elementRef;
6523
- this.renderer = renderer;
6524
- this.document = document;
6525
- this.allowedAttributes = [
6526
- 'aria-label',
6527
- 'class',
6528
- 'href',
6529
- 'rel',
6530
- 'target',
6531
- 'title'
6532
- ];
6533
- this.allowedTags = [
6534
- 'a',
6535
- 'b',
6536
- 'br',
6537
- 'div',
6538
- 'em',
6539
- 'h1',
6540
- 'h2',
6541
- 'h3',
6542
- 'h4',
6543
- 'h5',
6544
- 'h6',
6545
- 'li',
6546
- 'ol',
6547
- 'p',
6548
- 'span',
6549
- 'strong',
6550
- 'u',
6551
- 'ul'
6552
- ];
6553
- }
6554
- ngOnChanges() {
6555
- this.clearContent();
6556
- if (!this.xuilibSafeHtml) {
6557
- return;
6558
- }
6559
- // DOMPurify is the primary XSS sanitisation boundary.
6560
- const sanitizedContent = DOMPurify.sanitize(this.xuilibSafeHtml, {
6561
- ALLOWED_ATTR: this.allowedAttributes,
6562
- ALLOWED_TAGS: this.allowedTags
6563
- });
6564
- const parsedDocument = new DOMParser().parseFromString(sanitizedContent, 'text/html');
6565
- Array.from(parsedDocument.body.childNodes).forEach((node) => {
6566
- this.renderer.appendChild(this.elementRef.nativeElement, this.createSafeNode(node));
6567
- });
6568
- }
6569
- clearContent() {
6570
- const element = this.elementRef.nativeElement;
6571
- while (element.firstChild) {
6572
- this.renderer.removeChild(element, element.firstChild);
6573
- }
6574
- }
6575
- /**
6576
- * Rebuild the DOM instead of assigning sanitized content to innerHTML.
6577
- *
6578
- * DOMPurify performs the security sanitisation. Rebuilding the DOM also
6579
- * avoids introducing another innerHTML sink that security tooling may flag.
6580
- */
6581
- createSafeNode(node) {
6582
- if (node.nodeType === Node.TEXT_NODE) {
6583
- return this.renderer.createText(node.textContent ?? '');
6584
- }
6585
- if (node.nodeType !== Node.ELEMENT_NODE) {
6586
- return this.renderer.createText('');
6587
- }
6588
- const sourceElement = node;
6589
- const tagName = sourceElement.tagName.toLowerCase();
6590
- if (!this.allowedTags.includes(tagName)) {
6591
- return this.createSafeFragment(sourceElement);
6592
- }
6593
- const safeElement = this.renderer.createElement(tagName);
6594
- Array.from(sourceElement.attributes).forEach((attribute) => {
6595
- if (!this.allowedAttributes.includes(attribute.name.toLowerCase())) {
6596
- return;
6597
- }
6598
- this.renderer.setAttribute(safeElement, attribute.name, attribute.value);
6599
- });
6600
- // Defence in depth for links opened in a new browsing context.
6601
- if (tagName === 'a' &&
6602
- safeElement.getAttribute('target')?.toLowerCase() === '_blank') {
6603
- this.renderer.setAttribute(safeElement, 'rel', 'noopener noreferrer');
6604
- }
6605
- Array.from(sourceElement.childNodes).forEach((childNode) => {
6606
- this.renderer.appendChild(safeElement, this.createSafeNode(childNode));
6607
- });
6608
- return safeElement;
6609
- }
6610
- createSafeFragment(element) {
6611
- const fragment = this.document.createDocumentFragment();
6612
- Array.from(element.childNodes).forEach((childNode) => {
6613
- fragment.appendChild(this.createSafeNode(childNode));
6614
- });
6615
- return fragment;
6616
- }
6617
- static { this.ɵfac = function SafeHtmlDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SafeHtmlDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(DOCUMENT$1)); }; }
6618
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SafeHtmlDirective, selectors: [["", "xuilibSafeHtml", ""]], inputs: { xuilibSafeHtml: "xuilibSafeHtml" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature] }); }
6619
- }
6620
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SafeHtmlDirective, [{
6621
- type: Directive,
6622
- args: [{
6623
- selector: '[xuilibSafeHtml]',
6624
- standalone: false
6625
- }]
6626
- }], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: Document, decorators: [{
6627
- type: Inject,
6628
- args: [DOCUMENT$1]
6629
- }] }], { xuilibSafeHtml: [{
6630
- type: Input
6631
- }] }); })();
6632
-
6633
6519
  function ServiceMessageComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
6634
6520
  i0.ɵɵelement(0, "h2", 5);
6635
6521
  } if (rf & 2) {
6636
6522
  const ctx_r0 = i0.ɵɵnextContext();
6637
- i0.ɵɵproperty("xuilibSafeHtml", ctx_r0.message_cy);
6523
+ i0.ɵɵproperty("innerHTML", ctx_r0.sanitizeHtml(ctx_r0.message_cy), i0.ɵɵsanitizeHtml);
6638
6524
  } }
6639
6525
  class ServiceMessageComponent {
6640
- constructor() {
6526
+ constructor(sanitizer) {
6527
+ this.sanitizer = sanitizer;
6641
6528
  this.hideMessage = new EventEmitter();
6642
6529
  }
6643
6530
  onHideMessageEvent(key) {
6644
6531
  this.hideMessage.emit(key);
6645
6532
  }
6646
- static { this.ɵfac = function ServiceMessageComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ServiceMessageComponent)(); }; }
6647
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceMessageComponent, selectors: [["xuilib-service-message"]], inputs: { message_en: "message_en", message_cy: "message_cy", key: "key" }, outputs: { hideMessage: "hideMessage" }, standalone: false, decls: 12, vars: 8, consts: [[1, "hmcts-banner", "hmcts-banner--warning"], ["fill", "currentColor", "role", "img", "aria-label", "hmcts-warning-icon", "focusable", "false", "xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 25 25", "height", "25", "width", "25", 1, "hmcts-banner__icon"], ["d", "M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z"], [1, "hmcts-banner__message"], [1, "hmcts-banner__assistive"], [1, "govuk-heading-s", 3, "xuilibSafeHtml"], ["tabindex", "0", 1, "govuk-link--no-visited-state", 3, "click", "keyup.enter", "routerLink"]], template: function ServiceMessageComponent_Template(rf, ctx) { if (rf & 1) {
6533
+ // ensure no dangerous HTML is rendered in the service message banner
6534
+ sanitizeHtml(content) {
6535
+ return this.sanitizer.sanitize(SecurityContext.HTML, content ?? '') ?? '';
6536
+ }
6537
+ static { this.ɵfac = function ServiceMessageComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ServiceMessageComponent)(i0.ɵɵdirectiveInject(i2$1.DomSanitizer)); }; }
6538
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceMessageComponent, selectors: [["xuilib-service-message"]], inputs: { message_en: "message_en", message_cy: "message_cy", key: "key" }, outputs: { hideMessage: "hideMessage" }, standalone: false, decls: 12, vars: 8, consts: [[1, "hmcts-banner", "hmcts-banner--warning"], ["fill", "currentColor", "role", "img", "aria-label", "hmcts-warning-icon", "focusable", "false", "xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 25 25", "height", "25", "width", "25", 1, "hmcts-banner__icon"], ["d", "M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z"], [1, "hmcts-banner__message"], [1, "hmcts-banner__assistive"], [1, "govuk-heading-s", 3, "innerHTML"], ["tabindex", "0", 1, "govuk-link--no-visited-state", 3, "click", "keyup.enter", "routerLink"]], template: function ServiceMessageComponent_Template(rf, ctx) { if (rf & 1) {
6648
6539
  i0.ɵɵelementStart(0, "div", 0);
6649
6540
  i0.ɵɵnamespaceSVG();
6650
6541
  i0.ɵɵelementStart(1, "svg", 1);
@@ -6666,17 +6557,17 @@ class ServiceMessageComponent {
6666
6557
  i0.ɵɵadvance(5);
6667
6558
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, "Warning"));
6668
6559
  i0.ɵɵadvance(2);
6669
- i0.ɵɵproperty("xuilibSafeHtml", ctx.message_en);
6560
+ i0.ɵɵproperty("innerHTML", ctx.sanitizeHtml(ctx.message_en), i0.ɵɵsanitizeHtml);
6670
6561
  i0.ɵɵadvance();
6671
6562
  i0.ɵɵconditional(ctx.message_cy ? 8 : -1);
6672
6563
  i0.ɵɵadvance(2);
6673
6564
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 6, "Hide message"));
6674
- } }, dependencies: [i1$1.RouterLink, SafeHtmlDirective, i2.RpxTranslatePipe], styles: [".govuk-link--no-visited-state[_ngcontent-%COMP%]{cursor:pointer}"] }); }
6565
+ } }, dependencies: [i1$1.RouterLink, i2.RpxTranslatePipe], styles: [".govuk-link--no-visited-state[_ngcontent-%COMP%]{cursor:pointer}"] }); }
6675
6566
  }
6676
6567
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceMessageComponent, [{
6677
6568
  type: Component,
6678
- args: [{ selector: 'xuilib-service-message', standalone: false, template: "<div class=\"hmcts-banner hmcts-banner--warning\">\n\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"img\" aria-label=\"hmcts-warning-icon\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" />\n </svg>\n\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">{{'Warning' | rpxTranslate}}</span>\n <h2 class=\"govuk-heading-s\" [xuilibSafeHtml]=\"message_en\"></h2>\n @if (message_cy) {\n <h2 class=\"govuk-heading-s\" [xuilibSafeHtml]=\"message_cy\"></h2>\n }\n <a [routerLink]=\"\" tabindex=\"0\" class=\"govuk-link--no-visited-state\" (click)=\"onHideMessageEvent(key)\" (keyup.enter)=\"onHideMessageEvent(key)\">{{'Hide message' | rpxTranslate}}</a>\n </div>\n\n</div>\n", styles: [".govuk-link--no-visited-state{cursor:pointer}\n"] }]
6679
- }], () => [], { message_en: [{
6569
+ args: [{ selector: 'xuilib-service-message', standalone: false, template: "<div class=\"hmcts-banner hmcts-banner--warning\">\n\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"img\" aria-label=\"hmcts-warning-icon\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" />\n </svg>\n\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">{{'Warning' | rpxTranslate}}</span>\n <h2 class=\"govuk-heading-s\" [innerHTML]=\"sanitizeHtml(message_en)\"></h2>\n @if (message_cy) {\n <h2 class=\"govuk-heading-s\" [innerHTML]=\"sanitizeHtml(message_cy)\"></h2>\n }\n <a [routerLink]=\"\" tabindex=\"0\" class=\"govuk-link--no-visited-state\" (click)=\"onHideMessageEvent(key)\" (keyup.enter)=\"onHideMessageEvent(key)\">{{'Hide message' | rpxTranslate}}</a>\n </div>\n\n</div>", styles: [".govuk-link--no-visited-state{cursor:pointer}\n"] }]
6570
+ }], () => [{ type: i2$1.DomSanitizer }], { message_en: [{
6680
6571
  type: Input
6681
6572
  }], message_cy: [{
6682
6573
  type: Input
@@ -6685,7 +6576,7 @@ class ServiceMessageComponent {
6685
6576
  }], hideMessage: [{
6686
6577
  type: Output
6687
6578
  }] }); })();
6688
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceMessageComponent, { className: "ServiceMessageComponent", filePath: "lib/components/service-message/service-message.component.ts", lineNumber: 10 }); })();
6579
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceMessageComponent, { className: "ServiceMessageComponent", filePath: "lib/components/service-message/service-message.component.ts", lineNumber: 11 }); })();
6689
6580
 
6690
6581
  function ServiceMessagesComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
6691
6582
  i0.ɵɵelementStart(0, "div", 1);
@@ -6701,19 +6592,18 @@ function ServiceMessagesComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf
6701
6592
  i0.ɵɵelementStart(7, "h2", 6);
6702
6593
  i0.ɵɵtext(8, "Error:");
6703
6594
  i0.ɵɵelementEnd();
6704
- i0.ɵɵelementStart(9, "p");
6705
- i0.ɵɵtext(10);
6706
- i0.ɵɵelementEnd()()();
6595
+ i0.ɵɵelement(9, "p", 7);
6596
+ i0.ɵɵelementEnd()();
6707
6597
  } if (rf & 2) {
6708
6598
  const errMsg_r1 = ctx.$implicit;
6709
6599
  i0.ɵɵadvance(5);
6710
6600
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 2, "Warning"));
6711
- i0.ɵɵadvance(5);
6712
- i0.ɵɵtextInterpolate(errMsg_r1.message);
6601
+ i0.ɵɵadvance(4);
6602
+ i0.ɵɵproperty("innerHTML", errMsg_r1.message, i0.ɵɵsanitizeHtml);
6713
6603
  } }
6714
6604
  function ServiceMessagesComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6715
6605
  i0.ɵɵelementStart(0, "div", 0);
6716
- i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_0_For_2_Template, 11, 4, "div", 1, i0.ɵɵrepeaterTrackByIdentity);
6606
+ i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_0_For_2_Template, 10, 4, "div", 1, i0.ɵɵrepeaterTrackByIdentity);
6717
6607
  i0.ɵɵelementEnd();
6718
6608
  } if (rf & 2) {
6719
6609
  const ctx_r1 = i0.ɵɵnextContext();
@@ -6722,7 +6612,7 @@ function ServiceMessagesComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
6722
6612
  } }
6723
6613
  function ServiceMessagesComponent_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
6724
6614
  const _r3 = i0.ɵɵgetCurrentView();
6725
- i0.ɵɵelementStart(0, "xuilib-service-message", 8);
6615
+ i0.ɵɵelementStart(0, "xuilib-service-message", 9);
6726
6616
  i0.ɵɵpipe(1, "rpxTranslate");
6727
6617
  i0.ɵɵpipe(2, "rpxTranslate");
6728
6618
  i0.ɵɵlistener("hideMessage", function ServiceMessagesComponent_Conditional_1_For_2_Template_xuilib_service_message_hideMessage_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.hideMessage($event)); });
@@ -6733,7 +6623,7 @@ function ServiceMessagesComponent_Conditional_1_For_2_Template(rf, ctx) { if (rf
6733
6623
  } }
6734
6624
  function ServiceMessagesComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6735
6625
  i0.ɵɵelementStart(0, "div", 0);
6736
- i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_1_For_2_Template, 3, 7, "xuilib-service-message", 7, i0.ɵɵrepeaterTrackByIdentity);
6626
+ i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_1_For_2_Template, 3, 7, "xuilib-service-message", 8, i0.ɵɵrepeaterTrackByIdentity);
6737
6627
  i0.ɵɵelementEnd();
6738
6628
  } if (rf & 2) {
6739
6629
  const ctx_r1 = i0.ɵɵnextContext();
@@ -6835,7 +6725,7 @@ class ServiceMessagesComponent {
6835
6725
  return cookie ? JSON.parse(decodeURIComponent(cookie.split("=")[1])) : [];
6836
6726
  }
6837
6727
  static { this.ɵfac = function ServiceMessagesComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ServiceMessagesComponent)(i0.ɵɵdirectiveInject(FeatureToggleService)); }; }
6838
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceMessagesComponent, selectors: [["xuilib-service-messages"]], inputs: { userRoles: "userRoles", featureToggleKey: "featureToggleKey", serviceMessageCookie: "serviceMessageCookie" }, standalone: false, decls: 2, vars: 2, consts: [[1, "govuk-width-container", "govuk-!-margin-top-6"], [1, "hmcts-banner", "hmcts-banner--warning"], ["fill", "currentColor", "role", "presentation", "focusable", "false", "xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 25 25", "height", "25", "width", "25", 1, "hmcts-banner__icon"], ["d", "M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z"], [1, "hmcts-banner__message"], [1, "hmcts-banner__assistive"], [1, "govuk-heading-s"], [3, "key", "message_en", "message_cy"], [3, "hideMessage", "key", "message_en", "message_cy"]], template: function ServiceMessagesComponent_Template(rf, ctx) { if (rf & 1) {
6728
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceMessagesComponent, selectors: [["xuilib-service-messages"]], inputs: { userRoles: "userRoles", featureToggleKey: "featureToggleKey", serviceMessageCookie: "serviceMessageCookie" }, standalone: false, decls: 2, vars: 2, consts: [[1, "govuk-width-container", "govuk-!-margin-top-6"], [1, "hmcts-banner", "hmcts-banner--warning"], ["fill", "currentColor", "role", "presentation", "focusable", "false", "xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 25 25", "height", "25", "width", "25", 1, "hmcts-banner__icon"], ["d", "M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z"], [1, "hmcts-banner__message"], [1, "hmcts-banner__assistive"], [1, "govuk-heading-s"], [3, "innerHTML"], [3, "key", "message_en", "message_cy"], [3, "hideMessage", "key", "message_en", "message_cy"]], template: function ServiceMessagesComponent_Template(rf, ctx) { if (rf & 1) {
6839
6729
  i0.ɵɵconditionalCreate(0, ServiceMessagesComponent_Conditional_0_Template, 3, 0, "div", 0);
6840
6730
  i0.ɵɵconditionalCreate(1, ServiceMessagesComponent_Conditional_1_Template, 3, 0, "div", 0);
6841
6731
  } if (rf & 2) {
@@ -6846,7 +6736,7 @@ class ServiceMessagesComponent {
6846
6736
  }
6847
6737
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceMessagesComponent, [{
6848
6738
  type: Component,
6849
- args: [{ selector: "xuilib-service-messages", standalone: false, template: "@if (isBannerError) {\n <div class=\"govuk-width-container govuk-!-margin-top-6\">\n @for (errMsg of bannerErrorMsgs; track errMsg) {\n <div class=\"hmcts-banner hmcts-banner--warning\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" />\n </svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">{{'Warning' | rpxTranslate}}</span>\n <h2 class=\"govuk-heading-s\">Error:</h2>\n <p>{{ errMsg.message }}</p>\n </div>\n </div>\n }\n </div>\n}\n@if (filteredMessages?.length > 0) {\n <div class=\"govuk-width-container govuk-!-margin-top-6\">\n @for (message of filteredMessages; track message) {\n <xuilib-service-message [key]=\"message\"\n [message_en]=\"message?.message_en | rpxTranslate\"\n [message_cy]=\"message?.message_cy | rpxTranslate\"\n (hideMessage)=\"hideMessage($event)\">\n </xuilib-service-message>\n }\n </div>\n}\n" }]
6739
+ args: [{ selector: "xuilib-service-messages", standalone: false, template: "@if (isBannerError) {\n <div class=\"govuk-width-container govuk-!-margin-top-6\">\n @for (errMsg of bannerErrorMsgs; track errMsg) {\n <div class=\"hmcts-banner hmcts-banner--warning\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" />\n </svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">{{'Warning' | rpxTranslate}}</span>\n <h2 class=\"govuk-heading-s\">Error:</h2>\n <p [innerHTML]=\"errMsg.message\"></p>\n </div>\n </div>\n }\n </div>\n}\n@if (filteredMessages?.length > 0) {\n <div class=\"govuk-width-container govuk-!-margin-top-6\">\n @for (message of filteredMessages; track message) {\n <xuilib-service-message [key]=\"message\"\n [message_en]=\"message?.message_en | rpxTranslate\"\n [message_cy]=\"message?.message_cy | rpxTranslate\"\n (hideMessage)=\"hideMessage($event)\">\n </xuilib-service-message>\n }\n </div>\n}" }]
6850
6740
  }], () => [{ type: FeatureToggleService }], { userRoles: [{
6851
6741
  type: Input
6852
6742
  }], featureToggleKey: [{
@@ -7693,7 +7583,7 @@ function TermsAndConditionsComponent_Case_0_Template(rf, ctx) { if (rf & 1) {
7693
7583
  } if (rf & 2) {
7694
7584
  const ctx_r0 = i0.ɵɵnextContext();
7695
7585
  i0.ɵɵadvance();
7696
- i0.ɵɵproperty("xuilibSafeHtml", i0.ɵɵpipeBind1(2, 1, ctx_r0.document.content));
7586
+ i0.ɵɵproperty("innerHTML", ctx_r0.sanitizeHtml(i0.ɵɵpipeBind1(2, 1, ctx_r0.document.content)), i0.ɵɵsanitizeHtml);
7697
7587
  } }
7698
7588
  function TermsAndConditionsComponent_Case_1_Template(rf, ctx) { if (rf & 1) {
7699
7589
  i0.ɵɵelementStart(0, "xuilib-tc-display-plain");
@@ -7715,22 +7605,28 @@ function TermsAndConditionsComponent_Case_2_Template(rf, ctx) { if (rf & 1) {
7715
7605
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "An error occured. Please try again."), " ");
7716
7606
  } }
7717
7607
  class TermsAndConditionsComponent {
7718
- constructor() { }
7719
- static { this.ɵfac = function TermsAndConditionsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TermsAndConditionsComponent)(); }; }
7720
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TermsAndConditionsComponent, selectors: [["xuilib-terms-and-conditions"]], inputs: { document: "document" }, standalone: false, decls: 3, vars: 1, consts: [[3, "xuilibSafeHtml"]], template: function TermsAndConditionsComponent_Template(rf, ctx) { if (rf & 1) {
7608
+ constructor(sanitizer) {
7609
+ this.sanitizer = sanitizer;
7610
+ }
7611
+ // ensure no dangerous HTML is rendered in the terms and conditions document
7612
+ sanitizeHtml(content) {
7613
+ return this.sanitizer.sanitize(SecurityContext.HTML, content ?? '') ?? '';
7614
+ }
7615
+ static { this.ɵfac = function TermsAndConditionsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TermsAndConditionsComponent)(i0.ɵɵdirectiveInject(i2$1.DomSanitizer)); }; }
7616
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TermsAndConditionsComponent, selectors: [["xuilib-terms-and-conditions"]], inputs: { document: "document" }, standalone: false, decls: 3, vars: 1, consts: [[3, "innerHTML"]], template: function TermsAndConditionsComponent_Template(rf, ctx) { if (rf & 1) {
7721
7617
  i0.ɵɵconditionalCreate(0, TermsAndConditionsComponent_Case_0_Template, 3, 3, "xuilib-tc-display-html")(1, TermsAndConditionsComponent_Case_1_Template, 3, 3, "xuilib-tc-display-plain")(2, TermsAndConditionsComponent_Case_2_Template, 3, 3, "div");
7722
7618
  } if (rf & 2) {
7723
7619
  let tmp_0_0;
7724
7620
  i0.ɵɵconditional((tmp_0_0 = ctx.document.mimeType) === "text/html" ? 0 : tmp_0_0 === "text/plain" ? 1 : 2);
7725
- } }, dependencies: [TcDisplayHtmlComponent, TcDisplayPlainComponent, SafeHtmlDirective, i2.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}"] }); }
7621
+ } }, dependencies: [TcDisplayHtmlComponent, TcDisplayPlainComponent, i2.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}"] }); }
7726
7622
  }
7727
7623
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TermsAndConditionsComponent, [{
7728
7624
  type: Component,
7729
- args: [{ selector: 'xuilib-terms-and-conditions', standalone: false, template: "\n@switch (document.mimeType) {\n @case ('text/html') {\n <xuilib-tc-display-html>\n <div [xuilibSafeHtml]=\"document.content | rpxTranslate\"></div>\n </xuilib-tc-display-html>\n }\n @case ('text/plain') {\n <xuilib-tc-display-plain>\n {{ document.content | rpxTranslate}}\n </xuilib-tc-display-plain>\n }\n @default {\n <div>\n {{'An error occured. Please try again.' | rpxTranslate}}\n </div>\n }\n}\n", styles: [":host{display:block;width:100%}\n"] }]
7730
- }], () => [], { document: [{
7625
+ args: [{ selector: 'xuilib-terms-and-conditions', standalone: false, template: "\n@switch (document.mimeType) {\n @case ('text/html') {\n <xuilib-tc-display-html>\n <div [innerHTML]=\"sanitizeHtml(document.content | rpxTranslate)\"></div>\n </xuilib-tc-display-html>\n }\n @case ('text/plain') {\n <xuilib-tc-display-plain>\n {{ document.content | rpxTranslate}}\n </xuilib-tc-display-plain>\n }\n @default {\n <div>\n {{'An error occured. Please try again.' | rpxTranslate}}\n </div>\n }\n}\n", styles: [":host{display:block;width:100%}\n"] }]
7626
+ }], () => [{ type: i2$1.DomSanitizer }], { document: [{
7731
7627
  type: Input
7732
7628
  }] }); })();
7733
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TermsAndConditionsComponent, { className: "TermsAndConditionsComponent", filePath: "lib/components/terms-and-conditions/terms-and-conditions.component.ts", lineNumber: 10 }); })();
7629
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TermsAndConditionsComponent, { className: "TermsAndConditionsComponent", filePath: "lib/components/terms-and-conditions/terms-and-conditions.component.ts", lineNumber: 11 }); })();
7734
7630
 
7735
7631
  function UserDetailsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7736
7632
  i0.ɵɵelementStart(0, "div", 0)(1, "span", 4);
@@ -10444,23 +10340,21 @@ function HmctsPrimaryNavigationComponent_Conditional_0_Conditional_2_Template(rf
10444
10340
  i0.ɵɵelement(0, "div", 2);
10445
10341
  } }
10446
10342
  function HmctsPrimaryNavigationComponent_Conditional_0_For_5_Template(rf, ctx) { if (rf & 1) {
10447
- i0.ɵɵelementStart(0, "li", 4)(1, "a", 5);
10448
- i0.ɵɵtext(2);
10449
- i0.ɵɵpipe(3, "rpxTranslate");
10450
- i0.ɵɵelementEnd()();
10343
+ i0.ɵɵelementStart(0, "li", 4);
10344
+ i0.ɵɵelement(1, "a", 5);
10345
+ i0.ɵɵpipe(2, "rpxTranslate");
10346
+ i0.ɵɵelementEnd();
10451
10347
  } if (rf & 2) {
10452
10348
  const item_r1 = ctx.$implicit;
10453
10349
  i0.ɵɵadvance();
10454
- i0.ɵɵproperty("routerLink", item_r1.href);
10350
+ i0.ɵɵproperty("routerLink", item_r1.href)("innerHTML", i0.ɵɵpipeBind1(2, 3, item_r1.text), i0.ɵɵsanitizeHtml);
10455
10351
  i0.ɵɵattribute("aria-current", item_r1.active ? true : null);
10456
- i0.ɵɵadvance();
10457
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 3, item_r1.text));
10458
10352
  } }
10459
10353
  function HmctsPrimaryNavigationComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10460
10354
  i0.ɵɵelementStart(0, "nav", 0)(1, "div", 1);
10461
10355
  i0.ɵɵconditionalCreate(2, HmctsPrimaryNavigationComponent_Conditional_0_Conditional_2_Template, 1, 0, "div", 2);
10462
10356
  i0.ɵɵelementStart(3, "ul", 3);
10463
- i0.ɵɵrepeaterCreate(4, HmctsPrimaryNavigationComponent_Conditional_0_For_5_Template, 4, 5, "li", 4, i0.ɵɵrepeaterTrackByIdentity);
10357
+ i0.ɵɵrepeaterCreate(4, HmctsPrimaryNavigationComponent_Conditional_0_For_5_Template, 3, 5, "li", 4, i0.ɵɵrepeaterTrackByIdentity);
10464
10358
  i0.ɵɵelementEnd()()();
10465
10359
  } if (rf & 2) {
10466
10360
  const ctx_r1 = i0.ɵɵnextContext();
@@ -10477,7 +10371,7 @@ class HmctsPrimaryNavigationComponent {
10477
10371
  constructor() {
10478
10372
  }
10479
10373
  static { this.ɵfac = function HmctsPrimaryNavigationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HmctsPrimaryNavigationComponent)(); }; }
10480
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HmctsPrimaryNavigationComponent, selectors: [["xuilib-hmcts-primary-navigation"]], inputs: { userLoggedIn: "userLoggedIn", label: "label", items: "items", isBrandedHeader: "isBrandedHeader" }, standalone: false, decls: 1, vars: 1, consts: [[1, "hmcts-primary-navigation"], [1, "hmcts-primary-navigation__container"], [1, "govuk-header__logo"], [1, "hmcts-primary-navigation__list"], [1, "hmcts-primary-navigation__item"], [1, "hmcts-primary-navigation__link", 3, "routerLink"]], template: function HmctsPrimaryNavigationComponent_Template(rf, ctx) { if (rf & 1) {
10374
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HmctsPrimaryNavigationComponent, selectors: [["xuilib-hmcts-primary-navigation"]], inputs: { userLoggedIn: "userLoggedIn", label: "label", items: "items", isBrandedHeader: "isBrandedHeader" }, standalone: false, decls: 1, vars: 1, consts: [[1, "hmcts-primary-navigation"], [1, "hmcts-primary-navigation__container"], [1, "govuk-header__logo"], [1, "hmcts-primary-navigation__list"], [1, "hmcts-primary-navigation__item"], [1, "hmcts-primary-navigation__link", 3, "routerLink", "innerHTML"]], template: function HmctsPrimaryNavigationComponent_Template(rf, ctx) { if (rf & 1) {
10481
10375
  i0.ɵɵconditionalCreate(0, HmctsPrimaryNavigationComponent_Conditional_0_Template, 6, 2, "nav", 0);
10482
10376
  } if (rf & 2) {
10483
10377
  i0.ɵɵconditional(ctx.isUserLoggedIn ? 0 : -1);
@@ -10485,7 +10379,7 @@ class HmctsPrimaryNavigationComponent {
10485
10379
  }
10486
10380
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HmctsPrimaryNavigationComponent, [{
10487
10381
  type: Component,
10488
- args: [{ selector: 'xuilib-hmcts-primary-navigation', standalone: false, template: "@if (isUserLoggedIn) {\n <nav class=\"hmcts-primary-navigation\" [attr.aria-label]=\"label\">\n <div class=\"hmcts-primary-navigation__container\">\n @if (isBrandedHeader) {\n <div class=\"govuk-header__logo\"></div>\n }\n <ul class=\"hmcts-primary-navigation__list\">\n @for (item of items; track item) {\n <li class=\"hmcts-primary-navigation__item\" >\n <a class=\"hmcts-primary-navigation__link\" [attr.aria-current]=\"item.active ? true: null\" [routerLink]=\"item.href\">{{ item.text | rpxTranslate }}</a>\n </li>\n }\n </ul>\n </div>\n </nav>\n}\n" }]
10382
+ args: [{ selector: 'xuilib-hmcts-primary-navigation', standalone: false, template: "@if (isUserLoggedIn) {\n <nav class=\"hmcts-primary-navigation\" [attr.aria-label]=\"label\">\n <div class=\"hmcts-primary-navigation__container\">\n @if (isBrandedHeader) {\n <div class=\"govuk-header__logo\"></div>\n }\n <ul class=\"hmcts-primary-navigation__list\">\n @for (item of items; track item) {\n <li class=\"hmcts-primary-navigation__item\" >\n <a class=\"hmcts-primary-navigation__link\" [attr.aria-current]=\"item.active ? true: null\" [routerLink]=\"item.href\" [innerHTML]=\"item.text | rpxTranslate\"></a>\n </li>\n }\n </ul>\n </div>\n </nav>\n}\n" }]
10489
10383
  }], () => [], { userLoggedIn: [{
10490
10384
  type: Input
10491
10385
  }], label: [{
@@ -10559,7 +10453,6 @@ const COMMON_COMPONENTS = [
10559
10453
  ContactDetailsComponent,
10560
10454
  FeatureToggleDirective,
10561
10455
  LetDirective,
10562
- SafeHtmlDirective,
10563
10456
  HmctsSessionDialogComponent,
10564
10457
  UserListComponent,
10565
10458
  UserDetailsComponent,
@@ -10674,7 +10567,6 @@ class ExuiCommonLibModule {
10674
10567
  ContactDetailsComponent,
10675
10568
  FeatureToggleDirective,
10676
10569
  LetDirective,
10677
- SafeHtmlDirective,
10678
10570
  HmctsSessionDialogComponent,
10679
10571
  UserListComponent,
10680
10572
  UserDetailsComponent,
@@ -10741,7 +10633,6 @@ class ExuiCommonLibModule {
10741
10633
  ContactDetailsComponent,
10742
10634
  FeatureToggleDirective,
10743
10635
  LetDirective,
10744
- SafeHtmlDirective,
10745
10636
  HmctsSessionDialogComponent,
10746
10637
  UserListComponent,
10747
10638
  UserDetailsComponent,
@@ -10877,5 +10768,5 @@ function radioGroupValidator() {
10877
10768
  * Generated bundle index. Do not edit.
10878
10769
  */
10879
10770
 
10880
- export { AccessibilityComponent, AddressMessageEnum, AddressModel, AddressOption, AddressService, AnonymousFeatureUser, BadgeColour, BookingCheckType, COMMON_COMPONENTS, CapitalizePipe, CheckboxListComponent, ContactDetailsComponent, CookieBannerComponent, CookieService, DateBadgeColour, DueDateComponent, ExuiCommonLibModule, ExuiPageWrapperComponent, FeatureToggleDirective, FeatureToggleGuard, FeatureToggleService, FilterService, FindLocationComponent, FindPersonComponent, FindServiceComponent, FindTaskNameComponent, FindWorkTypeComponent, GOV_UI_COMPONENTS, GenericFilterComponent, GoogleAnalyticsService, GoogleTagManagerService, GovUiService, GovUkCheckboxComponent, GovUkCheckboxesComponent, GovUkDateComponent, GovUkErrorMessageComponent, GovUkFieldsetComponent, GovUkFileUploadComponent, GovUkFormGroupWrapperComponent, GovUkInputComponent, GovUkLabelComponent, GovUkRadioComponent, GovUkRadiosComponent, GovUkSelectComponent, GovUkTextareaComponent, GovukTableColumnConfig, GovukTableComponent, HasLoadingState, HmctsBannerComponent, HmctsErrorSummaryComponent, HmctsIdentityBarComponent, HmctsMainWrapperComponent, HmctsPaginationComponent, HmctsPrimaryNavigationComponent, HmctsSessionDialogComponent, HmctsSubNavigationComponent, InviteUserFormComponent, InviteUserPermissionComponent, LaunchDarklyService, LetContext, LetDirective, LoadingService, LoadingSpinnerComponent, LocationService, LoggedInFeatureUser, ManageSessionServices, PaginationComponent, PersonRole, RadioFilterFieldConfig, RefDataService, RemoveHostDirective, RoleCategory, RoleGuard, RoleMatching, RoleService, SECONDS_IN_A_DAY, SafeHtmlDirective, SearchJudicialsComponent, SearchLocationComponent, SearchServiceComponent, SearchVenueComponent, SearchWorkTypeComponent, SelectedCaseComponent, SelectedCaseConfirmComponent, SelectedCaseListComponent, ServiceMessageComponent, ServiceMessagesComponent, ShareCaseComponent, ShareCaseConfirmComponent, SharedCaseErrorMessages, TabComponent, TaskService, TcConfirmComponent, TcDisplayHtmlComponent, TcDisplayPlainComponent, TermsAndConditionsComponent, TimeoutNotificationsService, UserDetailsComponent, UserListComponent, UserSelectComponent, WriteAddressFieldComponent, WriteAddressInputsComponent, checkboxesBeCheckedValidator, dateValidator, radioGroupValidator, windowProvider, windowToken };
10771
+ export { AccessibilityComponent, AddressMessageEnum, AddressModel, AddressOption, AddressService, AnonymousFeatureUser, BadgeColour, BookingCheckType, COMMON_COMPONENTS, CapitalizePipe, CheckboxListComponent, ContactDetailsComponent, CookieBannerComponent, CookieService, DateBadgeColour, DueDateComponent, ExuiCommonLibModule, ExuiPageWrapperComponent, FeatureToggleDirective, FeatureToggleGuard, FeatureToggleService, FilterService, FindLocationComponent, FindPersonComponent, FindServiceComponent, FindTaskNameComponent, FindWorkTypeComponent, GOV_UI_COMPONENTS, GenericFilterComponent, GoogleAnalyticsService, GoogleTagManagerService, GovUiService, GovUkCheckboxComponent, GovUkCheckboxesComponent, GovUkDateComponent, GovUkErrorMessageComponent, GovUkFieldsetComponent, GovUkFileUploadComponent, GovUkFormGroupWrapperComponent, GovUkInputComponent, GovUkLabelComponent, GovUkRadioComponent, GovUkRadiosComponent, GovUkSelectComponent, GovUkTextareaComponent, GovukTableColumnConfig, GovukTableComponent, HasLoadingState, HmctsBannerComponent, HmctsErrorSummaryComponent, HmctsIdentityBarComponent, HmctsMainWrapperComponent, HmctsPaginationComponent, HmctsPrimaryNavigationComponent, HmctsSessionDialogComponent, HmctsSubNavigationComponent, InviteUserFormComponent, InviteUserPermissionComponent, LaunchDarklyService, LetContext, LetDirective, LoadingService, LoadingSpinnerComponent, LocationService, LoggedInFeatureUser, ManageSessionServices, PaginationComponent, PersonRole, RadioFilterFieldConfig, RefDataService, RemoveHostDirective, RoleCategory, RoleGuard, RoleMatching, RoleService, SECONDS_IN_A_DAY, SearchJudicialsComponent, SearchLocationComponent, SearchServiceComponent, SearchVenueComponent, SearchWorkTypeComponent, SelectedCaseComponent, SelectedCaseConfirmComponent, SelectedCaseListComponent, ServiceMessageComponent, ServiceMessagesComponent, ShareCaseComponent, ShareCaseConfirmComponent, SharedCaseErrorMessages, TabComponent, TaskService, TcConfirmComponent, TcDisplayHtmlComponent, TcDisplayPlainComponent, TermsAndConditionsComponent, TimeoutNotificationsService, UserDetailsComponent, UserListComponent, UserSelectComponent, WriteAddressFieldComponent, WriteAddressInputsComponent, checkboxesBeCheckedValidator, dateValidator, radioGroupValidator, windowProvider, windowToken };
10881
10772
  //# sourceMappingURL=hmcts-rpx-xui-common-lib.mjs.map