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

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, SecurityContext, ElementRef, NgModule } from '@angular/core';
2
+ import { Component, EventEmitter, ViewEncapsulation, Input, Output, Injectable, InjectionToken, DOCUMENT, Inject, ViewChild, Pipe, ChangeDetectionStrategy, Directive, 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, CommonModule } from '@angular/common';
6
+ import { formatDate, DOCUMENT as DOCUMENT$1, 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,6 +21,7 @@ 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';
24
25
  import * as i1$4 from '@angular/material/legacy-tabs';
25
26
  import { MatLegacyTabsModule } from '@angular/material/legacy-tabs';
26
27
  import * as i2$4 from 'ngx-pagination';
@@ -1708,11 +1709,11 @@ class GoogleAnalyticsService {
1708
1709
  script1.src = `https://www.googletagmanager.com/gtag/js?id=${this.googleAnalyticsKey}`;
1709
1710
  this.document.head.appendChild(script1);
1710
1711
  const script2 = this.document.createElement('script');
1711
- script2.innerHTML = `
1712
+ script2.text = `
1712
1713
  window.dataLayer = window.dataLayer || [];
1713
1714
  function gtag(){dataLayer.push(arguments);}
1714
1715
  gtag('js', new Date());
1715
- gtag('config', '${this.googleAnalyticsKey}', {'send_page_view': false});
1716
+ gtag('config', ${JSON.stringify(this.googleAnalyticsKey)}, {'send_page_view': false});
1716
1717
  `;
1717
1718
  this.document.head.appendChild(script2);
1718
1719
  }
@@ -1724,11 +1725,11 @@ class GoogleAnalyticsService {
1724
1725
  }
1725
1726
  listenForRouteChanges() {
1726
1727
  if (this.googleAnalyticsKey) {
1727
- this.router.events.subscribe(event => {
1728
+ this.router.events.subscribe((event) => {
1728
1729
  if (event instanceof NavigationEnd) {
1729
1730
  this.window.gtag('config', this.googleAnalyticsKey, {
1730
1731
  page_path: event.urlAfterRedirects,
1731
- page_title: this.title.getTitle(),
1732
+ page_title: this.title.getTitle()
1732
1733
  });
1733
1734
  }
1734
1735
  });
@@ -6516,26 +6517,134 @@ class SelectedCaseListComponent {
6516
6517
  }] }); })();
6517
6518
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectedCaseListComponent, { className: "SelectedCaseListComponent", filePath: "lib/components/selected-case-list/selected-case-list.component.ts", lineNumber: 12 }); })();
6518
6519
 
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
+
6519
6633
  function ServiceMessageComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
6520
6634
  i0.ɵɵelement(0, "h2", 5);
6521
6635
  } if (rf & 2) {
6522
6636
  const ctx_r0 = i0.ɵɵnextContext();
6523
- i0.ɵɵproperty("innerHTML", ctx_r0.sanitizeHtml(ctx_r0.message_cy), i0.ɵɵsanitizeHtml);
6637
+ i0.ɵɵproperty("xuilibSafeHtml", ctx_r0.message_cy);
6524
6638
  } }
6525
6639
  class ServiceMessageComponent {
6526
- constructor(sanitizer) {
6527
- this.sanitizer = sanitizer;
6640
+ constructor() {
6528
6641
  this.hideMessage = new EventEmitter();
6529
6642
  }
6530
6643
  onHideMessageEvent(key) {
6531
6644
  this.hideMessage.emit(key);
6532
6645
  }
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) {
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) {
6539
6648
  i0.ɵɵelementStart(0, "div", 0);
6540
6649
  i0.ɵɵnamespaceSVG();
6541
6650
  i0.ɵɵelementStart(1, "svg", 1);
@@ -6557,17 +6666,17 @@ class ServiceMessageComponent {
6557
6666
  i0.ɵɵadvance(5);
6558
6667
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, "Warning"));
6559
6668
  i0.ɵɵadvance(2);
6560
- i0.ɵɵproperty("innerHTML", ctx.sanitizeHtml(ctx.message_en), i0.ɵɵsanitizeHtml);
6669
+ i0.ɵɵproperty("xuilibSafeHtml", ctx.message_en);
6561
6670
  i0.ɵɵadvance();
6562
6671
  i0.ɵɵconditional(ctx.message_cy ? 8 : -1);
6563
6672
  i0.ɵɵadvance(2);
6564
6673
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 6, "Hide message"));
6565
- } }, dependencies: [i1$1.RouterLink, i2.RpxTranslatePipe], styles: [".govuk-link--no-visited-state[_ngcontent-%COMP%]{cursor:pointer}"] }); }
6674
+ } }, dependencies: [i1$1.RouterLink, SafeHtmlDirective, i2.RpxTranslatePipe], styles: [".govuk-link--no-visited-state[_ngcontent-%COMP%]{cursor:pointer}"] }); }
6566
6675
  }
6567
6676
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceMessageComponent, [{
6568
6677
  type: Component,
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: [{
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: [{
6571
6680
  type: Input
6572
6681
  }], message_cy: [{
6573
6682
  type: Input
@@ -6576,7 +6685,7 @@ class ServiceMessageComponent {
6576
6685
  }], hideMessage: [{
6577
6686
  type: Output
6578
6687
  }] }); })();
6579
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceMessageComponent, { className: "ServiceMessageComponent", filePath: "lib/components/service-message/service-message.component.ts", lineNumber: 11 }); })();
6688
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceMessageComponent, { className: "ServiceMessageComponent", filePath: "lib/components/service-message/service-message.component.ts", lineNumber: 10 }); })();
6580
6689
 
6581
6690
  function ServiceMessagesComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
6582
6691
  i0.ɵɵelementStart(0, "div", 1);
@@ -6592,18 +6701,19 @@ function ServiceMessagesComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf
6592
6701
  i0.ɵɵelementStart(7, "h2", 6);
6593
6702
  i0.ɵɵtext(8, "Error:");
6594
6703
  i0.ɵɵelementEnd();
6595
- i0.ɵɵelement(9, "p", 7);
6596
- i0.ɵɵelementEnd()();
6704
+ i0.ɵɵelementStart(9, "p");
6705
+ i0.ɵɵtext(10);
6706
+ i0.ɵɵelementEnd()()();
6597
6707
  } if (rf & 2) {
6598
6708
  const errMsg_r1 = ctx.$implicit;
6599
6709
  i0.ɵɵadvance(5);
6600
6710
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 2, "Warning"));
6601
- i0.ɵɵadvance(4);
6602
- i0.ɵɵproperty("innerHTML", errMsg_r1.message, i0.ɵɵsanitizeHtml);
6711
+ i0.ɵɵadvance(5);
6712
+ i0.ɵɵtextInterpolate(errMsg_r1.message);
6603
6713
  } }
6604
6714
  function ServiceMessagesComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6605
6715
  i0.ɵɵelementStart(0, "div", 0);
6606
- i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_0_For_2_Template, 10, 4, "div", 1, i0.ɵɵrepeaterTrackByIdentity);
6716
+ i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_0_For_2_Template, 11, 4, "div", 1, i0.ɵɵrepeaterTrackByIdentity);
6607
6717
  i0.ɵɵelementEnd();
6608
6718
  } if (rf & 2) {
6609
6719
  const ctx_r1 = i0.ɵɵnextContext();
@@ -6612,7 +6722,7 @@ function ServiceMessagesComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
6612
6722
  } }
6613
6723
  function ServiceMessagesComponent_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
6614
6724
  const _r3 = i0.ɵɵgetCurrentView();
6615
- i0.ɵɵelementStart(0, "xuilib-service-message", 9);
6725
+ i0.ɵɵelementStart(0, "xuilib-service-message", 8);
6616
6726
  i0.ɵɵpipe(1, "rpxTranslate");
6617
6727
  i0.ɵɵpipe(2, "rpxTranslate");
6618
6728
  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)); });
@@ -6623,7 +6733,7 @@ function ServiceMessagesComponent_Conditional_1_For_2_Template(rf, ctx) { if (rf
6623
6733
  } }
6624
6734
  function ServiceMessagesComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6625
6735
  i0.ɵɵelementStart(0, "div", 0);
6626
- i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_1_For_2_Template, 3, 7, "xuilib-service-message", 8, i0.ɵɵrepeaterTrackByIdentity);
6736
+ i0.ɵɵrepeaterCreate(1, ServiceMessagesComponent_Conditional_1_For_2_Template, 3, 7, "xuilib-service-message", 7, i0.ɵɵrepeaterTrackByIdentity);
6627
6737
  i0.ɵɵelementEnd();
6628
6738
  } if (rf & 2) {
6629
6739
  const ctx_r1 = i0.ɵɵnextContext();
@@ -6725,7 +6835,7 @@ class ServiceMessagesComponent {
6725
6835
  return cookie ? JSON.parse(decodeURIComponent(cookie.split("=")[1])) : [];
6726
6836
  }
6727
6837
  static { this.ɵfac = function ServiceMessagesComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ServiceMessagesComponent)(i0.ɵɵdirectiveInject(FeatureToggleService)); }; }
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) {
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) {
6729
6839
  i0.ɵɵconditionalCreate(0, ServiceMessagesComponent_Conditional_0_Template, 3, 0, "div", 0);
6730
6840
  i0.ɵɵconditionalCreate(1, ServiceMessagesComponent_Conditional_1_Template, 3, 0, "div", 0);
6731
6841
  } if (rf & 2) {
@@ -6736,7 +6846,7 @@ class ServiceMessagesComponent {
6736
6846
  }
6737
6847
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceMessagesComponent, [{
6738
6848
  type: Component,
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}" }]
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" }]
6740
6850
  }], () => [{ type: FeatureToggleService }], { userRoles: [{
6741
6851
  type: Input
6742
6852
  }], featureToggleKey: [{
@@ -7583,7 +7693,7 @@ function TermsAndConditionsComponent_Case_0_Template(rf, ctx) { if (rf & 1) {
7583
7693
  } if (rf & 2) {
7584
7694
  const ctx_r0 = i0.ɵɵnextContext();
7585
7695
  i0.ɵɵadvance();
7586
- i0.ɵɵproperty("innerHTML", ctx_r0.sanitizeHtml(i0.ɵɵpipeBind1(2, 1, ctx_r0.document.content)), i0.ɵɵsanitizeHtml);
7696
+ i0.ɵɵproperty("xuilibSafeHtml", i0.ɵɵpipeBind1(2, 1, ctx_r0.document.content));
7587
7697
  } }
7588
7698
  function TermsAndConditionsComponent_Case_1_Template(rf, ctx) { if (rf & 1) {
7589
7699
  i0.ɵɵelementStart(0, "xuilib-tc-display-plain");
@@ -7605,28 +7715,22 @@ function TermsAndConditionsComponent_Case_2_Template(rf, ctx) { if (rf & 1) {
7605
7715
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "An error occured. Please try again."), " ");
7606
7716
  } }
7607
7717
  class TermsAndConditionsComponent {
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) {
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) {
7617
7721
  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");
7618
7722
  } if (rf & 2) {
7619
7723
  let tmp_0_0;
7620
7724
  i0.ɵɵconditional((tmp_0_0 = ctx.document.mimeType) === "text/html" ? 0 : tmp_0_0 === "text/plain" ? 1 : 2);
7621
- } }, dependencies: [TcDisplayHtmlComponent, TcDisplayPlainComponent, i2.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}"] }); }
7725
+ } }, dependencies: [TcDisplayHtmlComponent, TcDisplayPlainComponent, SafeHtmlDirective, i2.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}"] }); }
7622
7726
  }
7623
7727
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TermsAndConditionsComponent, [{
7624
7728
  type: Component,
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: [{
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: [{
7627
7731
  type: Input
7628
7732
  }] }); })();
7629
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TermsAndConditionsComponent, { className: "TermsAndConditionsComponent", filePath: "lib/components/terms-and-conditions/terms-and-conditions.component.ts", lineNumber: 11 }); })();
7733
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TermsAndConditionsComponent, { className: "TermsAndConditionsComponent", filePath: "lib/components/terms-and-conditions/terms-and-conditions.component.ts", lineNumber: 10 }); })();
7630
7734
 
7631
7735
  function UserDetailsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7632
7736
  i0.ɵɵelementStart(0, "div", 0)(1, "span", 4);
@@ -10340,21 +10444,23 @@ function HmctsPrimaryNavigationComponent_Conditional_0_Conditional_2_Template(rf
10340
10444
  i0.ɵɵelement(0, "div", 2);
10341
10445
  } }
10342
10446
  function HmctsPrimaryNavigationComponent_Conditional_0_For_5_Template(rf, ctx) { if (rf & 1) {
10343
- i0.ɵɵelementStart(0, "li", 4);
10344
- i0.ɵɵelement(1, "a", 5);
10345
- i0.ɵɵpipe(2, "rpxTranslate");
10346
- i0.ɵɵelementEnd();
10447
+ i0.ɵɵelementStart(0, "li", 4)(1, "a", 5);
10448
+ i0.ɵɵtext(2);
10449
+ i0.ɵɵpipe(3, "rpxTranslate");
10450
+ i0.ɵɵelementEnd()();
10347
10451
  } if (rf & 2) {
10348
10452
  const item_r1 = ctx.$implicit;
10349
10453
  i0.ɵɵadvance();
10350
- i0.ɵɵproperty("routerLink", item_r1.href)("innerHTML", i0.ɵɵpipeBind1(2, 3, item_r1.text), i0.ɵɵsanitizeHtml);
10454
+ i0.ɵɵproperty("routerLink", item_r1.href);
10351
10455
  i0.ɵɵattribute("aria-current", item_r1.active ? true : null);
10456
+ i0.ɵɵadvance();
10457
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 3, item_r1.text));
10352
10458
  } }
10353
10459
  function HmctsPrimaryNavigationComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
10354
10460
  i0.ɵɵelementStart(0, "nav", 0)(1, "div", 1);
10355
10461
  i0.ɵɵconditionalCreate(2, HmctsPrimaryNavigationComponent_Conditional_0_Conditional_2_Template, 1, 0, "div", 2);
10356
10462
  i0.ɵɵelementStart(3, "ul", 3);
10357
- i0.ɵɵrepeaterCreate(4, HmctsPrimaryNavigationComponent_Conditional_0_For_5_Template, 3, 5, "li", 4, i0.ɵɵrepeaterTrackByIdentity);
10463
+ i0.ɵɵrepeaterCreate(4, HmctsPrimaryNavigationComponent_Conditional_0_For_5_Template, 4, 5, "li", 4, i0.ɵɵrepeaterTrackByIdentity);
10358
10464
  i0.ɵɵelementEnd()()();
10359
10465
  } if (rf & 2) {
10360
10466
  const ctx_r1 = i0.ɵɵnextContext();
@@ -10371,7 +10477,7 @@ class HmctsPrimaryNavigationComponent {
10371
10477
  constructor() {
10372
10478
  }
10373
10479
  static { this.ɵfac = function HmctsPrimaryNavigationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HmctsPrimaryNavigationComponent)(); }; }
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) {
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) {
10375
10481
  i0.ɵɵconditionalCreate(0, HmctsPrimaryNavigationComponent_Conditional_0_Template, 6, 2, "nav", 0);
10376
10482
  } if (rf & 2) {
10377
10483
  i0.ɵɵconditional(ctx.isUserLoggedIn ? 0 : -1);
@@ -10379,7 +10485,7 @@ class HmctsPrimaryNavigationComponent {
10379
10485
  }
10380
10486
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HmctsPrimaryNavigationComponent, [{
10381
10487
  type: Component,
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" }]
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" }]
10383
10489
  }], () => [], { userLoggedIn: [{
10384
10490
  type: Input
10385
10491
  }], label: [{
@@ -10453,6 +10559,7 @@ const COMMON_COMPONENTS = [
10453
10559
  ContactDetailsComponent,
10454
10560
  FeatureToggleDirective,
10455
10561
  LetDirective,
10562
+ SafeHtmlDirective,
10456
10563
  HmctsSessionDialogComponent,
10457
10564
  UserListComponent,
10458
10565
  UserDetailsComponent,
@@ -10567,6 +10674,7 @@ class ExuiCommonLibModule {
10567
10674
  ContactDetailsComponent,
10568
10675
  FeatureToggleDirective,
10569
10676
  LetDirective,
10677
+ SafeHtmlDirective,
10570
10678
  HmctsSessionDialogComponent,
10571
10679
  UserListComponent,
10572
10680
  UserDetailsComponent,
@@ -10633,6 +10741,7 @@ class ExuiCommonLibModule {
10633
10741
  ContactDetailsComponent,
10634
10742
  FeatureToggleDirective,
10635
10743
  LetDirective,
10744
+ SafeHtmlDirective,
10636
10745
  HmctsSessionDialogComponent,
10637
10746
  UserListComponent,
10638
10747
  UserDetailsComponent,
@@ -10768,5 +10877,5 @@ function radioGroupValidator() {
10768
10877
  * Generated bundle index. Do not edit.
10769
10878
  */
10770
10879
 
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 };
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 };
10772
10881
  //# sourceMappingURL=hmcts-rpx-xui-common-lib.mjs.map