@hmcts/ccd-case-ui-toolkit 7.3.45-EXUI-4188-sanitize-HTML → 7.3.45-exui-4368-2916

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ContentChildren, ViewChildren, DOCUMENT, Injectable, Inject, ChangeDetectorRef, Directive, InjectionToken, ViewChild, ChangeDetectionStrategy, Injector, ViewContainerRef, SecurityContext, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2
+ import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ContentChildren, ViewChildren, DOCUMENT, Injectable, Inject, ChangeDetectorRef, Directive, InjectionToken, ViewChild, ChangeDetectionStrategy, Injector, ViewContainerRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, AsyncPipe, CurrencyPipe, formatDate } from '@angular/common';
5
5
  import * as i1 from 'rpx-xui-translation';
@@ -39,7 +39,6 @@ import * as i2$1 from '@angular/cdk/overlay';
39
39
  import { OverlayModule } from '@angular/cdk/overlay';
40
40
  import * as i6$1 from '@angular/cdk/tree';
41
41
  import { NestedTreeControl, CdkTreeModule } from '@angular/cdk/tree';
42
- import * as i2$2 from '@angular/platform-browser';
43
42
  import { cloneDeep } from 'lodash';
44
43
  import * as i4$1 from '@angular-material-components/datetime-picker';
45
44
  import { NGX_MAT_DATE_FORMATS, NgxMatDateAdapter, NgxMatDatetimePickerModule, NgxMatTimepickerModule, NgxMatNativeDateModule } from '@angular-material-components/datetime-picker';
@@ -53,7 +52,7 @@ import { MatLegacyInputModule } from '@angular/material/legacy-input';
53
52
  import * as i14 from '@hmcts/media-viewer';
54
53
  import { MediaViewerModule } from '@hmcts/media-viewer';
55
54
  import { PortalModule } from '@angular/cdk/portal';
56
- import * as i2$3 from 'ngx-pagination';
55
+ import * as i2$2 from 'ngx-pagination';
57
56
  import { NgxPaginationModule, PaginatePipe } from 'ngx-pagination';
58
57
  import * as i10 from '@angular/material/legacy-tabs';
59
58
  import { MatLegacyTabsModule } from '@angular/material/legacy-tabs';
@@ -6625,6 +6624,7 @@ class LabelSubstitutorDirective {
6625
6624
  contextFields = [];
6626
6625
  formGroup;
6627
6626
  elementsToSubstitute = ['label', 'hint_text'];
6627
+ initialLabel;
6628
6628
  initialHintText;
6629
6629
  languageSubscription;
6630
6630
  constructor(fieldsUtils, placeholderService, rpxTranslationPipe, rpxTranslationService) {
@@ -6634,9 +6634,10 @@ class LabelSubstitutorDirective {
6634
6634
  this.rpxTranslationService = rpxTranslationService;
6635
6635
  }
6636
6636
  ngOnInit() {
6637
+ this.initialLabel = this.caseField.label;
6637
6638
  this.initialHintText = this.caseField.hint_text;
6638
- this.caseField.originalLabel = this.caseField.label;
6639
6639
  this.noCacheProcessing();
6640
+ this.caseField.originalLabel = this.caseField.originalLabel || this.caseField.label;
6640
6641
  this.formGroup = this.formGroup || new FormGroup({});
6641
6642
  this.languageSubscription = this.rpxTranslationService.language$.pipe(skip(1)).subscribe(() => {
6642
6643
  this.onLanguageChange();
@@ -6659,23 +6660,10 @@ class LabelSubstitutorDirective {
6659
6660
  }
6660
6661
  }
6661
6662
  }
6662
- applySubstitutions() {
6663
+ applySubstitutions(isLanguageChange = false) {
6663
6664
  const fields = this.getReadOnlyAndFormFields();
6664
6665
  if (this.shouldSubstitute('label')) {
6665
- const oldLabel = this.caseField.label;
6666
- const substitutedLabel = this.resolvePlaceholders(fields, this.caseField.label);
6667
- if (oldLabel && oldLabel !== substitutedLabel) {
6668
- // we need to translate the uninterpolated data then substitute the values in translated string
6669
- this.caseField.originalLabel = substitutedLabel;
6670
- const translated = this.rpxTranslationPipe.transform(oldLabel);
6671
- const transSubstitutedLabel = this.resolvePlaceholders(fields, translated);
6672
- this.caseField.label = transSubstitutedLabel;
6673
- this.caseField.isTranslated = this.rpxTranslationService.language === 'cy' && translated !== oldLabel;
6674
- }
6675
- else {
6676
- this.caseField.label = substitutedLabel;
6677
- this.caseField.isTranslated = false;
6678
- }
6666
+ this.applyLabelSubstitution(fields, isLanguageChange);
6679
6667
  }
6680
6668
  if (this.shouldSubstitute('hint_text')) {
6681
6669
  this.caseField.hint_text = this.resolvePlaceholders(fields, this.caseField.hint_text);
@@ -6684,14 +6672,83 @@ class LabelSubstitutorDirective {
6684
6672
  this.caseField.value = this.resolvePlaceholders(fields, this.caseField.value);
6685
6673
  }
6686
6674
  }
6675
+ applyLabelSubstitution(fields, isLanguageChange) {
6676
+ const currentLabel = this.caseField.label;
6677
+ // `originalLabel` stores the label exactly as it came from the server, before any
6678
+ // placeholder values were inserted. That gives us a clean starting point when the user
6679
+ // changes language or returns to the page later.
6680
+ const originalLabel = this.caseField.originalLabel || currentLabel;
6681
+ const substitutedCurrentLabel = this.resolvePlaceholders(fields, currentLabel);
6682
+ const substitutedOriginalLabel = originalLabel === currentLabel
6683
+ ? substitutedCurrentLabel
6684
+ : this.resolvePlaceholders(fields, originalLabel);
6685
+ const substitutedLabel = substitutedCurrentLabel || substitutedOriginalLabel;
6686
+ const hasAnyLabelSubstitution = (currentLabel && currentLabel !== substitutedCurrentLabel)
6687
+ || (originalLabel && originalLabel !== substitutedOriginalLabel);
6688
+ if (!hasAnyLabelSubstitution) {
6689
+ // No placeholders were resolved, so keep the current label and allow the render layer
6690
+ // to translate it normally if needed.
6691
+ this.setLabelState(substitutedLabel);
6692
+ return;
6693
+ }
6694
+ // Preserve the original template the first time we successfully interpolate it.
6695
+ this.caseField.originalLabel = this.caseField.originalLabel || originalLabel;
6696
+ this.applyTranslatedLabelState(fields, originalLabel, substitutedLabel, isLanguageChange);
6697
+ }
6698
+ applyTranslatedLabelState(fields, originalLabel, substitutedLabel, isLanguageChange) {
6699
+ // Some labels only translate correctly if we translate the template first and then
6700
+ // substitute the helper values into the translated sentence.
6701
+ const translatedTemplateLabel = this.resolvePlaceholders(fields, isLanguageChange ? this.translateLabelOnLanguageChange(originalLabel) : this.translateLabel(originalLabel));
6702
+ // Other labels only translate correctly if we first resolve the English phrase and let
6703
+ // the render layer translate that final resolved string.
6704
+ const translatedResolvedLabel = isLanguageChange
6705
+ ? this.translateLabelOnLanguageChange(substitutedLabel)
6706
+ : this.translateLabel(substitutedLabel);
6707
+ const languageIsWelsh = this.rpxTranslationService.language === 'cy';
6708
+ const hasResolvedWelshTranslation = languageIsWelsh
6709
+ && translatedResolvedLabel
6710
+ && translatedResolvedLabel !== substitutedLabel;
6711
+ const hasTemplateWelshTranslation = languageIsWelsh
6712
+ && translatedTemplateLabel
6713
+ && translatedTemplateLabel !== substitutedLabel;
6714
+ if (hasResolvedWelshTranslation) {
6715
+ // Keep the resolved English label and mark it as not yet translated so the field
6716
+ // template can run `rpxTranslate` on the full phrase at render time.
6717
+ this.setLabelState(substitutedLabel);
6718
+ return;
6719
+ }
6720
+ if (hasTemplateWelshTranslation) {
6721
+ // Use the template-translated result when translating the fully resolved label does
6722
+ // not improve the Welsh output.
6723
+ this.setLabelState(translatedTemplateLabel, true);
6724
+ return;
6725
+ }
6726
+ // English, untranslated Welsh, or labels whose translation is handled elsewhere.
6727
+ this.setLabelState(substitutedLabel);
6728
+ }
6729
+ translateLabel(label) {
6730
+ return this.rpxTranslationPipe.transform(label);
6731
+ }
6732
+ translateLabelOnLanguageChange(label) {
6733
+ return this.rpxTranslationService.language === 'en'
6734
+ ? label
6735
+ : this.translateLabel(label);
6736
+ }
6737
+ setLabelState(label, isTranslated = false) {
6738
+ this.caseField.label = label;
6739
+ this.caseField.isTranslated = isTranslated;
6740
+ }
6687
6741
  onLanguageChange() {
6688
- this.resetToInitialValues();
6689
- this.applySubstitutions();
6742
+ this.resetToInitialValues(true);
6743
+ this.applySubstitutions(true);
6690
6744
  }
6691
- resetToInitialValues() {
6692
- if (this.caseField?.originalLabel) {
6745
+ resetToInitialValues(isLanguageChange = false) {
6746
+ if (isLanguageChange && this.caseField?.originalLabel) {
6693
6747
  this.caseField.label = this.caseField.originalLabel;
6694
6748
  }
6749
+ if (!isLanguageChange && this.initialLabel) {
6750
+ this.caseField.label = this.initialLabel;
6751
+ }
6695
6752
  if (this.initialHintText) {
6696
6753
  this.caseField.hint_text = this.initialHintText;
6697
6754
  }
@@ -26727,10 +26784,9 @@ function ManageCaseFlagsComponent_div_9_Template(rf, ctx) { if (rf & 1) {
26727
26784
  i0.ɵɵadvance();
26728
26785
  i0.ɵɵproperty("id", i0.ɵɵinterpolate1("flag-selection-", i_r4))("checked", ctx_r0.isSelected(flagDisplay_r3));
26729
26786
  i0.ɵɵadvance();
26730
- i0.ɵɵproperty("for", i0.ɵɵinterpolate1("flag-selection-", i_r4))("innerHTML", ctx_r0.sanitizeHtml(i0.ɵɵpipeBind1(3, 6, flagDisplay_r3)), i0.ɵɵsanitizeHtml);
26787
+ i0.ɵɵproperty("for", i0.ɵɵinterpolate1("flag-selection-", i_r4))("innerHtml", i0.ɵɵpipeBind1(3, 6, flagDisplay_r3), i0.ɵɵsanitizeHtml);
26731
26788
  } }
26732
26789
  class ManageCaseFlagsComponent extends AbstractJourneyComponent {
26733
- sanitizer;
26734
26790
  formGroup;
26735
26791
  flagsData;
26736
26792
  caseTitle;
@@ -26745,10 +26801,6 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
26745
26801
  selectedControlName = 'selectedManageCaseLocation';
26746
26802
  excludedFlagStatuses = [CaseFlagStatus.INACTIVE, CaseFlagStatus.NOT_APPROVED];
26747
26803
  cachedControls;
26748
- constructor(multipageComponentStateService, sanitizer) {
26749
- super(multipageComponentStateService);
26750
- this.sanitizer = sanitizer;
26751
- }
26752
26804
  ngOnInit() {
26753
26805
  this.manageCaseFlagTitle = this.setManageCaseFlagTitle(this.displayContextParameter);
26754
26806
  let originalStatus;
@@ -26995,12 +27047,8 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
26995
27047
  });
26996
27048
  }
26997
27049
  }
26998
- // Ensure there is no dangerous HTML in the flag name or description that could lead to XSS vulnerabilities
26999
- sanitizeHtml(content) {
27000
- return this.sanitizer.sanitize(SecurityContext.HTML, content ?? '') ?? '';
27001
- }
27002
- static ɵfac = function ManageCaseFlagsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ManageCaseFlagsComponent)(i0.ɵɵdirectiveInject(MultipageComponentStateService), i0.ɵɵdirectiveInject(i2$2.DomSanitizer)); };
27003
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ManageCaseFlagsComponent, selectors: [["ccd-manage-case-flags"]], inputs: { formGroup: "formGroup", flagsData: "flagsData", caseTitle: "caseTitle", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 9, consts: [[3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "manage-case-flag-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "manage-case-flag-heading", 1, "govuk-fieldset__heading"], ["id", "manage-case-flag-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["id", "manage-case-flag-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "change", "id", "checked"], [1, "govuk-label", "govuk-radios__label", 3, "for", "innerHTML"]], template: function ManageCaseFlagsComponent_Template(rf, ctx) { if (rf & 1) {
27050
+ static ɵfac = /*@__PURE__*/ (() => { let ɵManageCaseFlagsComponent_BaseFactory; return function ManageCaseFlagsComponent_Factory(__ngFactoryType__) { return (ɵManageCaseFlagsComponent_BaseFactory || (ɵManageCaseFlagsComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ManageCaseFlagsComponent)))(__ngFactoryType__ || ManageCaseFlagsComponent); }; })();
27051
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ManageCaseFlagsComponent, selectors: [["ccd-manage-case-flags"]], inputs: { formGroup: "formGroup", flagsData: "flagsData", caseTitle: "caseTitle", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 9, consts: [[3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "manage-case-flag-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "manage-case-flag-heading", 1, "govuk-fieldset__heading"], ["id", "manage-case-flag-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["id", "manage-case-flag-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "change", "id", "checked"], [1, "govuk-label", "govuk-radios__label", 3, "for", "innerHtml"]], template: function ManageCaseFlagsComponent_Template(rf, ctx) { if (rf & 1) {
27004
27052
  i0.ɵɵelementContainerStart(0, 0);
27005
27053
  i0.ɵɵelementStart(1, "div", 1)(2, "fieldset", 2)(3, "legend", 3)(4, "h1", 4);
27006
27054
  i0.ɵɵtext(5);
@@ -27025,8 +27073,8 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
27025
27073
  }
27026
27074
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ManageCaseFlagsComponent, [{
27027
27075
  type: Component,
27028
- args: [{ selector: 'ccd-manage-case-flags', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ng-container [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"manage-case-flag-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 id=\"manage-case-flag-heading\" class=\"govuk-fieldset__heading\">\n {{manageCaseFlagTitle | rpxTranslate}}\n </h1>\n </legend>\n <div id=\"manage-case-flag-not-selected-error-message\" class=\"govuk-error-message\"\n *ngIf=\"manageCaseFlagSelectedErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{manageCaseFlagSelectedErrorMessage | rpxTranslate}}\n </div>\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\" id=\"conditional-radios-list\">\n <div class=\"govuk-radios__item\" *ngFor=\"let flagDisplay of flagsDisplayData; index as i\">\n <input class=\"govuk-radios__input\" id=\"flag-selection-{{i}}\"\n type=\"radio\"\n [checked]=\"isSelected(flagDisplay)\"\n (change)=\"onFlagSelectionChange(flagDisplay)\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"flag-selection-{{i}}\" [innerHTML]=\"sanitizeHtml(flagDisplay | manageCaseFlagsLabelDisplay)\"></label>\n </div>\n </div>\n </fieldset>\n </div>\n</ng-container>", styles: [".flag-name-and-description{font-weight:700}\n"] }]
27029
- }], () => [{ type: MultipageComponentStateService }, { type: i2$2.DomSanitizer }], { formGroup: [{
27076
+ args: [{ selector: 'ccd-manage-case-flags', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ng-container [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"manage-case-flag-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 id=\"manage-case-flag-heading\" class=\"govuk-fieldset__heading\">\n {{manageCaseFlagTitle | rpxTranslate}}\n </h1>\n </legend>\n <div id=\"manage-case-flag-not-selected-error-message\" class=\"govuk-error-message\"\n *ngIf=\"manageCaseFlagSelectedErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{manageCaseFlagSelectedErrorMessage | rpxTranslate}}\n </div>\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\" id=\"conditional-radios-list\">\n <div class=\"govuk-radios__item\" *ngFor=\"let flagDisplay of flagsDisplayData; index as i\">\n <input class=\"govuk-radios__input\" id=\"flag-selection-{{i}}\"\n type=\"radio\"\n [checked]=\"isSelected(flagDisplay)\"\n (change)=\"onFlagSelectionChange(flagDisplay)\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"flag-selection-{{i}}\" [innerHtml]=\"flagDisplay | manageCaseFlagsLabelDisplay\"></label>\n </div>\n </div>\n </fieldset>\n </div>\n</ng-container>", styles: [".flag-name-and-description{font-weight:700}\n"] }]
27077
+ }], null, { formGroup: [{
27030
27078
  type: Input
27031
27079
  }], flagsData: [{
27032
27080
  type: Input
@@ -27037,7 +27085,7 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
27037
27085
  }], caseFlagStateEmitter: [{
27038
27086
  type: Output
27039
27087
  }] }); })();
27040
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ManageCaseFlagsComponent, { className: "ManageCaseFlagsComponent", filePath: "lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.ts", lineNumber: 19 }); })();
27088
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ManageCaseFlagsComponent, { className: "ManageCaseFlagsComponent", filePath: "lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.ts", lineNumber: 17 }); })();
27041
27089
 
27042
27090
  // tslint:disable:variable-name
27043
27091
  /**
@@ -33531,7 +33579,7 @@ class PaginationComponent {
33531
33579
  i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(3, 4, "Pagination"));
33532
33580
  i0.ɵɵadvance(2);
33533
33581
  i0.ɵɵproperty("ngIf", !(ctx.autoHide && p_r3.pages.length <= 1));
33534
- } }, dependencies: [i5.NgForOf, i5.NgIf, i2$3.PaginationControlsDirective, i5.DecimalPipe, i1.RpxTranslatePipe], styles: [".ngx-pagination[_ngcontent-%COMP%]{margin-left:0;margin-bottom:1rem;padding-top:25px;text-decoration:none;text-align:left;font-size:16px}.ngx-pagination[_ngcontent-%COMP%]:before, .ngx-pagination[_ngcontent-%COMP%]:after{content:\" \";display:table}.ngx-pagination[_ngcontent-%COMP%]:after{clear:both}.ngx-pagination[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;margin-right:.0625rem;border-radius:0}.ngx-pagination[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-block}.ngx-pagination[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .ngx-pagination[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:block;padding:.1875rem .625rem;border-radius:0;color:#005da6}.ngx-pagination[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .ngx-pagination[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:#e6e6e6}.ngx-pagination[_ngcontent-%COMP%] .current[_ngcontent-%COMP%]{padding:.1875rem .625rem;background:#fff;color:#4c2c92;cursor:default;font-weight:900;text-decoration:none}.ngx-pagination[_ngcontent-%COMP%] .disabled[_ngcontent-%COMP%]{display:none}.ngx-pagination[_ngcontent-%COMP%] .disabled[_ngcontent-%COMP%]:hover{background:transparent}.ngx-pagination[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .ngx-pagination[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{cursor:pointer}.ngx-pagination[_ngcontent-%COMP%] .pagination-previous[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:before, .ngx-pagination[_ngcontent-%COMP%] .pagination-previous.disabled[_ngcontent-%COMP%]:before{margin-right:.5rem;display:inline-block;height:10px;width:10px;border-style:solid;color:#0a0a0a;background:transparent;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);content:\"\";border-width:3px 0 0 3px}.ngx-pagination[_ngcontent-%COMP%] .pagination-next[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:after, .ngx-pagination[_ngcontent-%COMP%] .pagination-next.disabled[_ngcontent-%COMP%]:after{margin-left:.5rem;display:inline-block;height:10px;width:10px;border-style:solid;color:#0a0a0a;background:transparent;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);content:\"\";border-width:0 3px 3px 0}.ngx-pagination[_ngcontent-%COMP%] .show-for-sr[_ngcontent-%COMP%]{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.ngx-pagination[_ngcontent-%COMP%] .small-screen[_ngcontent-%COMP%]{display:none}@media screen and (max-width:601px){.ngx-pagination.responsive[_ngcontent-%COMP%] .small-screen[_ngcontent-%COMP%]{display:inline-block}.ngx-pagination.responsive[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(.small-screen):not(.pagination-previous):not(.pagination-next){display:none}}"] });
33582
+ } }, dependencies: [i5.NgForOf, i5.NgIf, i2$2.PaginationControlsDirective, i5.DecimalPipe, i1.RpxTranslatePipe], styles: [".ngx-pagination[_ngcontent-%COMP%]{margin-left:0;margin-bottom:1rem;padding-top:25px;text-decoration:none;text-align:left;font-size:16px}.ngx-pagination[_ngcontent-%COMP%]:before, .ngx-pagination[_ngcontent-%COMP%]:after{content:\" \";display:table}.ngx-pagination[_ngcontent-%COMP%]:after{clear:both}.ngx-pagination[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;margin-right:.0625rem;border-radius:0}.ngx-pagination[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-block}.ngx-pagination[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .ngx-pagination[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:block;padding:.1875rem .625rem;border-radius:0;color:#005da6}.ngx-pagination[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .ngx-pagination[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:#e6e6e6}.ngx-pagination[_ngcontent-%COMP%] .current[_ngcontent-%COMP%]{padding:.1875rem .625rem;background:#fff;color:#4c2c92;cursor:default;font-weight:900;text-decoration:none}.ngx-pagination[_ngcontent-%COMP%] .disabled[_ngcontent-%COMP%]{display:none}.ngx-pagination[_ngcontent-%COMP%] .disabled[_ngcontent-%COMP%]:hover{background:transparent}.ngx-pagination[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .ngx-pagination[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{cursor:pointer}.ngx-pagination[_ngcontent-%COMP%] .pagination-previous[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:before, .ngx-pagination[_ngcontent-%COMP%] .pagination-previous.disabled[_ngcontent-%COMP%]:before{margin-right:.5rem;display:inline-block;height:10px;width:10px;border-style:solid;color:#0a0a0a;background:transparent;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);content:\"\";border-width:3px 0 0 3px}.ngx-pagination[_ngcontent-%COMP%] .pagination-next[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:after, .ngx-pagination[_ngcontent-%COMP%] .pagination-next.disabled[_ngcontent-%COMP%]:after{margin-left:.5rem;display:inline-block;height:10px;width:10px;border-style:solid;color:#0a0a0a;background:transparent;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);content:\"\";border-width:0 3px 3px 0}.ngx-pagination[_ngcontent-%COMP%] .show-for-sr[_ngcontent-%COMP%]{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.ngx-pagination[_ngcontent-%COMP%] .small-screen[_ngcontent-%COMP%]{display:none}@media screen and (max-width:601px){.ngx-pagination.responsive[_ngcontent-%COMP%] .small-screen[_ngcontent-%COMP%]{display:inline-block}.ngx-pagination.responsive[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(.small-screen):not(.pagination-previous):not(.pagination-next){display:none}}"] });
33535
33583
  }
33536
33584
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationComponent, [{
33537
33585
  type: Component,
@@ -33875,7 +33923,7 @@ class CaseListComponent {
33875
33923
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(10, 9, ctx.cases, i0.ɵɵpureFunction3(12, _c0$d, ctx.pageSize, ctx.currentPageNo, ctx.totalResultsCount)));
33876
33924
  i0.ɵɵadvance(2);
33877
33925
  i0.ɵɵproperty("ngIf", ctx.totalResultsCount > ctx.pageSize);
33878
- } }, dependencies: [i5.NgForOf, i5.NgIf, i5.NgSwitch, i5.NgSwitchCase, i5.NgSwitchDefault, i1$1.RouterLink, PaginationComponent, i5.CurrencyPipe, i2$3.PaginatePipe, i1.RpxTranslatePipe], encapsulation: 2 });
33926
+ } }, dependencies: [i5.NgForOf, i5.NgIf, i5.NgSwitch, i5.NgSwitchCase, i5.NgSwitchDefault, i1$1.RouterLink, PaginationComponent, i5.CurrencyPipe, i2$2.PaginatePipe, i1.RpxTranslatePipe], encapsulation: 2 });
33879
33927
  }
33880
33928
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseListComponent, [{
33881
33929
  type: Component,
@@ -41130,7 +41178,7 @@ class SearchResultModule {
41130
41178
  PipesModule,
41131
41179
  ActivityModule,
41132
41180
  PaginationModule, i1.RpxTranslationModule, PaletteModule], exports: [SearchResultComponent] }); })();
41133
- i0.ɵɵsetComponentScope(SearchResultComponent, function () { return [i5.NgForOf, i5.NgIf, i1$1.RouterLink, LabelSubstitutorDirective, ActivityComponent, PaginationComponent, FieldReadComponent]; }, function () { return [i5.DecimalPipe, i2$3.PaginatePipe, CaseReferencePipe, SortSearchResultPipe, i1.RpxTranslatePipe]; });
41181
+ i0.ɵɵsetComponentScope(SearchResultComponent, function () { return [i5.NgForOf, i5.NgIf, i1$1.RouterLink, LabelSubstitutorDirective, ActivityComponent, PaginationComponent, FieldReadComponent]; }, function () { return [i5.DecimalPipe, i2$2.PaginatePipe, CaseReferencePipe, SortSearchResultPipe, i1.RpxTranslatePipe]; });
41134
41182
 
41135
41183
  // tslint:disable:variable-name
41136
41184
  class ComplexFieldOverride {