@hmcts/ccd-case-ui-toolkit 7.3.99-cot-1286 → 7.3.99-innerhtml-security-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,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ContentChildren, ViewChildren, Injectable, DOCUMENT, Inject, InjectionToken, Optional, ChangeDetectorRef, Directive, ViewChild, ChangeDetectionStrategy,
|
|
2
|
+
import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ContentChildren, ViewChildren, Injectable, DOCUMENT, Inject, InjectionToken, Optional, ChangeDetectorRef, Directive, 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';
|
|
@@ -31,7 +31,7 @@ import { MAT_LEGACY_DATE_LOCALE } from '@angular/material/legacy-core';
|
|
|
31
31
|
import * as i3 from '@hmcts/ccpay-web-component';
|
|
32
32
|
import { PaymentLibModule } from '@hmcts/ccpay-web-component';
|
|
33
33
|
import { v4 } from 'uuid';
|
|
34
|
-
import
|
|
34
|
+
import DOMPurify from 'dompurify';
|
|
35
35
|
import * as i3$1 from 'ngx-editor';
|
|
36
36
|
import { Editor, NgxEditorModule } from 'ngx-editor';
|
|
37
37
|
import { nodes, marks } from 'ngx-editor/schema';
|
|
@@ -26378,10 +26378,8 @@ function sanitiseRichTextHtml(value) {
|
|
|
26378
26378
|
}
|
|
26379
26379
|
|
|
26380
26380
|
class ReadRichTextAreaFieldComponent extends AbstractFieldReadComponent {
|
|
26381
|
-
|
|
26382
|
-
constructor(sanitizer) {
|
|
26381
|
+
constructor() {
|
|
26383
26382
|
super();
|
|
26384
|
-
this.sanitizer = sanitizer;
|
|
26385
26383
|
}
|
|
26386
26384
|
sanitisedValue() {
|
|
26387
26385
|
const supportedHtml = sanitiseRichTextHtml(this.caseField.value || '');
|
|
@@ -26392,9 +26390,12 @@ class ReadRichTextAreaFieldComponent extends AbstractFieldReadComponent {
|
|
|
26392
26390
|
delete element.dataset.indent;
|
|
26393
26391
|
element.classList.add(`ccd-rich-text-indent-${indent}`);
|
|
26394
26392
|
});
|
|
26395
|
-
return
|
|
26393
|
+
return DOMPurify.sanitize(documentElement.body.innerHTML, {
|
|
26394
|
+
ALLOWED_ATTR: ['align', 'class', 'start', 'type'],
|
|
26395
|
+
ALLOWED_TAGS: ['b', 'blockquote', 'br', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'li', 'ol', 'p', 'strong', 'u', 'ul']
|
|
26396
|
+
});
|
|
26396
26397
|
}
|
|
26397
|
-
static ɵfac = function ReadRichTextAreaFieldComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ReadRichTextAreaFieldComponent)(
|
|
26398
|
+
static ɵfac = function ReadRichTextAreaFieldComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ReadRichTextAreaFieldComponent)(); };
|
|
26398
26399
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadRichTextAreaFieldComponent, selectors: [["ccd-read-rich-text-area-field"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[1, "ccd-rich-text-area-read", 3, "innerHTML"]], template: function ReadRichTextAreaFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
26399
26400
|
i0.ɵɵelement(0, "div", 0);
|
|
26400
26401
|
} if (rf & 2) {
|
|
@@ -26403,8 +26404,8 @@ class ReadRichTextAreaFieldComponent extends AbstractFieldReadComponent {
|
|
|
26403
26404
|
}
|
|
26404
26405
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadRichTextAreaFieldComponent, [{
|
|
26405
26406
|
type: Component,
|
|
26406
|
-
args: [{ selector: 'ccd-read-rich-text-area-field', template:
|
|
26407
|
-
}], () => [
|
|
26407
|
+
args: [{ selector: 'ccd-read-rich-text-area-field', template: '<div class="ccd-rich-text-area-read" [innerHTML]="sanitisedValue()"></div>', encapsulation: ViewEncapsulation.None, standalone: false, styles: ["@charset \"UTF-8\";.ccd-rich-text-area-read{font-size:14px;overflow-wrap:anywhere;white-space:pre-wrap;word-break:normal}.ccd-rich-text-area-read strong,.ccd-rich-text-area-read strong *,.ccd-rich-text-area-read b,.ccd-rich-text-area-read b *{font-weight:700}.ccd-rich-text-area-read strong u,.ccd-rich-text-area-read u strong,.ccd-rich-text-area-read b u,.ccd-rich-text-area-read u b{font-weight:700!important;text-decoration:underline}.ccd-rich-text-area-read p,.ccd-rich-text-area-read ul,.ccd-rich-text-area-read ol,.ccd-rich-text-area-read li{font-size:14px;margin-top:0;overflow-wrap:anywhere;word-break:normal}.ccd-rich-text-area-read p:empty:before{content:\"\\a0\"}.ccd-rich-text-area-read ul{list-style:disc outside;padding-left:25px}.ccd-rich-text-area-read ol{list-style:decimal outside;padding-left:25px}.ccd-rich-text-area-read ol[type=a]{list-style-type:lower-alpha}.ccd-rich-text-area-read ol[type=i]{list-style-type:lower-roman}.ccd-rich-text-area-read ol[type=i]>li::marker{content:\"(\" counter(list-item,lower-roman) \") \"}.ccd-rich-text-area-read li{display:list-item;margin-bottom:5px}.ccd-rich-text-area-read li>p{margin:0}.ccd-rich-text-area-read li>ul,.ccd-rich-text-area-read li>ol{margin-top:5px}.ccd-rich-text-area-read h1{font-size:20px;font-weight:700}.ccd-rich-text-area-read h2{font-size:18px;font-weight:700}.ccd-rich-text-area-read h3{font-size:16px;font-weight:700}.ccd-rich-text-area-read .ccd-rich-text-indent-1{margin-left:40px}.ccd-rich-text-area-read .ccd-rich-text-indent-2{margin-left:80px}.ccd-rich-text-area-read .ccd-rich-text-indent-3{margin-left:120px}.ccd-rich-text-area-read .ccd-rich-text-indent-4{margin-left:160px}.ccd-rich-text-area-read .ccd-rich-text-indent-5{margin-left:200px}.ccd-rich-text-area-read .ccd-rich-text-indent-6{margin-left:240px}\n"] }]
|
|
26408
|
+
}], () => [], null); })();
|
|
26408
26409
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadRichTextAreaFieldComponent, { className: "ReadRichTextAreaFieldComponent", filePath: "lib/shared/components/palette/rich-text-area/read-rich-text-area-field.component.ts", lineNumber: 13 }); })();
|
|
26409
26410
|
|
|
26410
26411
|
const _c0$D = ["editorHost"];
|
|
@@ -27477,9 +27478,8 @@ class WriteRichTextAreaFieldComponent extends AbstractFieldWriteComponent {
|
|
|
27477
27478
|
};
|
|
27478
27479
|
}
|
|
27479
27480
|
htmlToText(value) {
|
|
27480
|
-
const
|
|
27481
|
-
|
|
27482
|
-
return (container.textContent || '').replaceAll('\u00a0', ' ').trim();
|
|
27481
|
+
const documentElement = new DOMParser().parseFromString(value || '', 'text/html');
|
|
27482
|
+
return (documentElement.body.textContent || '').replaceAll('\u00a0', ' ').trim();
|
|
27483
27483
|
}
|
|
27484
27484
|
isWordHtml(html) {
|
|
27485
27485
|
return /(class="?Mso|mso-|urn:schemas-microsoft-com:office:word|xmlns:o)/i.test(html);
|
|
@@ -31438,7 +31438,6 @@ function ManageCaseFlagsComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
31438
31438
|
i0.ɵɵproperty("for", i0.ɵɵinterpolate1("flag-selection-", i_r4))("innerHTML", ctx_r0.sanitizeHtml(i0.ɵɵpipeBind1(3, 6, flagDisplay_r3)), i0.ɵɵsanitizeHtml);
|
|
31439
31439
|
} }
|
|
31440
31440
|
class ManageCaseFlagsComponent extends AbstractJourneyComponent {
|
|
31441
|
-
sanitizer;
|
|
31442
31441
|
formGroup;
|
|
31443
31442
|
flagsData;
|
|
31444
31443
|
caseTitle;
|
|
@@ -31453,9 +31452,8 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
|
|
|
31453
31452
|
selectedControlName = 'selectedManageCaseLocation';
|
|
31454
31453
|
excludedFlagStatuses = [CaseFlagStatus.INACTIVE, CaseFlagStatus.NOT_APPROVED];
|
|
31455
31454
|
cachedControls;
|
|
31456
|
-
constructor(multipageComponentStateService
|
|
31455
|
+
constructor(multipageComponentStateService) {
|
|
31457
31456
|
super(multipageComponentStateService);
|
|
31458
|
-
this.sanitizer = sanitizer;
|
|
31459
31457
|
}
|
|
31460
31458
|
ngOnInit() {
|
|
31461
31459
|
this.manageCaseFlagTitle = this.setManageCaseFlagTitle(this.displayContextParameter);
|
|
@@ -31705,9 +31703,9 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
|
|
|
31705
31703
|
}
|
|
31706
31704
|
// Ensure there is no dangerous HTML in the flag name or description that could lead to XSS vulnerabilities
|
|
31707
31705
|
sanitizeHtml(content) {
|
|
31708
|
-
return
|
|
31706
|
+
return DOMPurify.sanitize(content ?? '');
|
|
31709
31707
|
}
|
|
31710
|
-
static ɵfac = function ManageCaseFlagsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ManageCaseFlagsComponent)(i0.ɵɵdirectiveInject(MultipageComponentStateService)
|
|
31708
|
+
static ɵfac = function ManageCaseFlagsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ManageCaseFlagsComponent)(i0.ɵɵdirectiveInject(MultipageComponentStateService)); };
|
|
31711
31709
|
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) {
|
|
31712
31710
|
i0.ɵɵelementContainerStart(0, 0);
|
|
31713
31711
|
i0.ɵɵelementStart(1, "div", 1)(2, "fieldset", 2)(3, "legend", 3)(4, "h1", 4);
|
|
@@ -31734,7 +31732,7 @@ class ManageCaseFlagsComponent extends AbstractJourneyComponent {
|
|
|
31734
31732
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ManageCaseFlagsComponent, [{
|
|
31735
31733
|
type: Component,
|
|
31736
31734
|
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"] }]
|
|
31737
|
-
}], () => [{ type: MultipageComponentStateService }
|
|
31735
|
+
}], () => [{ type: MultipageComponentStateService }], { formGroup: [{
|
|
31738
31736
|
type: Input
|
|
31739
31737
|
}], flagsData: [{
|
|
31740
31738
|
type: Input
|
|
@@ -34109,6 +34107,7 @@ function ReadComplexFieldCollectionTableComponent_th_10_Template(rf, ctx) { if (
|
|
|
34109
34107
|
i0.ɵɵelementStart(4, "a", 9);
|
|
34110
34108
|
i0.ɵɵpipe(5, "rpxTranslate");
|
|
34111
34109
|
i0.ɵɵlistener("click", function ReadComplexFieldCollectionTableComponent_th_10_Template_a_click_4_listener($event) { const heading_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.sortRowsByColumns(heading_r2); return i0.ɵɵresetView($event.preventDefault()); })("keyup.enter", function ReadComplexFieldCollectionTableComponent_th_10_Template_a_keyup_enter_4_listener() { const heading_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sortRowsByColumns(heading_r2)); });
|
|
34110
|
+
i0.ɵɵtext(6);
|
|
34112
34111
|
i0.ɵɵelementEnd()();
|
|
34113
34112
|
} if (rf & 2) {
|
|
34114
34113
|
const heading_r2 = ctx.$implicit;
|
|
@@ -34116,8 +34115,9 @@ function ReadComplexFieldCollectionTableComponent_th_10_Template(rf, ctx) { if (
|
|
|
34116
34115
|
i0.ɵɵadvance(2);
|
|
34117
34116
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 3, ctx_r2.columnsAllLabels[heading_r2].label));
|
|
34118
34117
|
i0.ɵɵadvance(2);
|
|
34119
|
-
i0.ɵɵproperty("innerHTML", ctx_r2.sortWidget(ctx_r2.columnsAllLabels[heading_r2]), i0.ɵɵsanitizeHtml);
|
|
34120
34118
|
i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(5, 5, "Sort " + ctx_r2.columnsAllLabels[heading_r2].label));
|
|
34119
|
+
i0.ɵɵadvance(2);
|
|
34120
|
+
i0.ɵɵtextInterpolate(ctx_r2.sortWidget(ctx_r2.columnsAllLabels[heading_r2]));
|
|
34121
34121
|
} }
|
|
34122
34122
|
function ReadComplexFieldCollectionTableComponent_ng_container_12_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
34123
34123
|
i0.ɵɵelementStart(0, "div");
|
|
@@ -34327,15 +34327,11 @@ class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadComponen
|
|
|
34327
34327
|
if (this.isHidden[row]) {
|
|
34328
34328
|
return 'assets/img/accordion-plus.png';
|
|
34329
34329
|
}
|
|
34330
|
-
|
|
34331
|
-
|
|
34332
|
-
return 'assets/img/accordion-minus.png';
|
|
34333
|
-
}
|
|
34334
|
-
else {
|
|
34335
|
-
this.isHidden[row] = true;
|
|
34336
|
-
return 'assets/img/accordion-plus.png';
|
|
34337
|
-
}
|
|
34330
|
+
if (this.isVerticleDataNotEmpty(row)) {
|
|
34331
|
+
return 'assets/img/accordion-minus.png';
|
|
34338
34332
|
}
|
|
34333
|
+
this.isHidden[row] = true;
|
|
34334
|
+
return 'assets/img/accordion-plus.png';
|
|
34339
34335
|
}
|
|
34340
34336
|
/**
|
|
34341
34337
|
* Needs to be called before 'ccdFieldsFilter' pipe is used, as it needs a caseField value.
|
|
@@ -34360,7 +34356,7 @@ class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadComponen
|
|
|
34360
34356
|
field_type: fieldType
|
|
34361
34357
|
});
|
|
34362
34358
|
}
|
|
34363
|
-
keepOriginalOrder = (a
|
|
34359
|
+
keepOriginalOrder = (a) => a.key;
|
|
34364
34360
|
sortRowsByColumns(column) {
|
|
34365
34361
|
const shouldSortInAscendingOrder = this.columnsHorizontalLabel[column].sortOrder === SortOrder$1.UNSORTED
|
|
34366
34362
|
|| this.columnsHorizontalLabel[column].sortOrder === SortOrder$1.DESCENDING;
|
|
@@ -34403,7 +34399,7 @@ class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadComponen
|
|
|
34403
34399
|
}
|
|
34404
34400
|
}
|
|
34405
34401
|
sortWidget(column) {
|
|
34406
|
-
return ReadComplexFieldCollectionTableComponent.isSortAscending(column) ?
|
|
34402
|
+
return String.fromCharCode(ReadComplexFieldCollectionTableComponent.isSortAscending(column) ? 9660 : 9650);
|
|
34407
34403
|
}
|
|
34408
34404
|
populateHorizontalLabels(labelsHorizontal, allLabels, labelsVertical) {
|
|
34409
34405
|
for (const id of this.columns) {
|
|
@@ -34447,7 +34443,7 @@ class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadComponen
|
|
|
34447
34443
|
return result;
|
|
34448
34444
|
}
|
|
34449
34445
|
static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldCollectionTableComponent_BaseFactory; return function ReadComplexFieldCollectionTableComponent_Factory(__ngFactoryType__) { return (ɵReadComplexFieldCollectionTableComponent_BaseFactory || (ɵReadComplexFieldCollectionTableComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldCollectionTableComponent)))(__ngFactoryType__ || ReadComplexFieldCollectionTableComponent); }; })();
|
|
34450
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldCollectionTableComponent, selectors: [["ccd-read-complex-field-collection-table"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 6, consts: [["showEmptyTd", ""], ["SimpleRow", ""], [1, "complex-panel", 3, "hidden"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex panel table", 1, "complex-panel-table"], ["scope", "col", 4, "ngFor", "ngForOf"], [4, "ngFor", "ngForOf"], ["scope", "col"], ["href", "#", 1, "sort-widget", 3, "click", "keyup.enter"
|
|
34446
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldCollectionTableComponent, selectors: [["ccd-read-complex-field-collection-table"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 6, consts: [["showEmptyTd", ""], ["SimpleRow", ""], [1, "complex-panel", 3, "hidden"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex panel table", 1, "complex-panel-table"], ["scope", "col", 4, "ngFor", "ngForOf"], [4, "ngFor", "ngForOf"], ["scope", "col"], ["href", "#", 1, "sort-widget", 3, "click", "keyup.enter"], [1, "new-table-row", "accordion-heading", 3, "keyup", "click"], [2, "float", "right"], ["href", "#", 3, "click"], ["alt", "accordion-img", 1, "accordion-image", 3, "src"], [3, "hidden"], [3, "colSpan"], ["aria-describedby", "complex panel table expanded", 1, "complex-panel-table"], [4, "ngIf", "ngIfElse"], [3, "caseField", "context"], ["class", "complex-panel-simple-field accordion-body", 3, "hidden", 4, "ngIf"], [3, "hidden", 4, "ngIf"], [1, "complex-panel-simple-field", "accordion-body", 3, "hidden"], ["class", "text-16", 4, "ngIf"], ["colspan", "2"], ["class", "complex-panel-compound-field", 3, "hidden", 4, "ngIf", "ngIfElse"], [1, "complex-panel-compound-field", 3, "hidden"], [1, "complex-panel-nested-field", 3, "hidden"], [4, "ngIf"]], template: function ReadComplexFieldCollectionTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
34451
34447
|
i0.ɵɵelementStart(0, "div", 2)(1, "dl", 3)(2, "dt")(3, "span", 4);
|
|
34452
34448
|
i0.ɵɵtext(4);
|
|
34453
34449
|
i0.ɵɵpipe(5, "rpxTranslate");
|
|
@@ -34455,7 +34451,7 @@ class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadComponen
|
|
|
34455
34451
|
i0.ɵɵelement(6, "dd");
|
|
34456
34452
|
i0.ɵɵelementEnd();
|
|
34457
34453
|
i0.ɵɵelementStart(7, "table", 5)(8, "tbody")(9, "tr");
|
|
34458
|
-
i0.ɵɵtemplate(10, ReadComplexFieldCollectionTableComponent_th_10_Template,
|
|
34454
|
+
i0.ɵɵtemplate(10, ReadComplexFieldCollectionTableComponent_th_10_Template, 7, 7, "th", 6);
|
|
34459
34455
|
i0.ɵɵelement(11, "th");
|
|
34460
34456
|
i0.ɵɵelementEnd();
|
|
34461
34457
|
i0.ɵɵtemplate(12, ReadComplexFieldCollectionTableComponent_ng_container_12_Template, 15, 20, "ng-container", 7);
|
|
@@ -34472,7 +34468,7 @@ class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadComponen
|
|
|
34472
34468
|
}
|
|
34473
34469
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldCollectionTableComponent, [{
|
|
34474
34470
|
type: Component,
|
|
34475
|
-
args: [{ selector: 'ccd-read-complex-field-collection-table', standalone: false, template: "<div class=\"complex-panel\" [hidden]=\"caseField.hidden\">\n <dl class=\"complex-panel-title\">\n <dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt>\n <dd></dd>\n </dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table\">\n <tbody>\n <!-- <COMPLEX table field header>-->\n <tr>\n <th *ngFor=\"let heading of columns\" scope=\"col\">\n <span class=\"text-16\">{{columnsAllLabels[heading].label | rpxTranslate}}</span>\n <a href=\"#\"\n (click)=\"sortRowsByColumns(heading); $event.preventDefault()\"\n (keyup.enter)=\"sortRowsByColumns(heading)\"\n class=\"sort-widget\"\n [attr.aria-label]=\"'Sort ' + columnsAllLabels[heading].label | rpxTranslate\"\n
|
|
34471
|
+
args: [{ selector: 'ccd-read-complex-field-collection-table', standalone: false, template: "<div class=\"complex-panel\" [hidden]=\"caseField.hidden\">\n <dl class=\"complex-panel-title\">\n <dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt>\n <dd></dd>\n </dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table\">\n <tbody>\n <!-- <COMPLEX table field header>-->\n <tr>\n <th *ngFor=\"let heading of columns\" scope=\"col\">\n <span class=\"text-16\">{{columnsAllLabels[heading].label | rpxTranslate}}</span>\n <a href=\"#\"\n (click)=\"sortRowsByColumns(heading); $event.preventDefault()\"\n (keyup.enter)=\"sortRowsByColumns(heading)\"\n class=\"sort-widget\"\n [attr.aria-label]=\"'Sort ' + columnsAllLabels[heading].label | rpxTranslate\"\n >{{ sortWidget(columnsAllLabels[heading]) }}</a>\n </th>\n <th></th>\n </tr>\n <!-- </COMPLEX table field header>-->\n <ng-container *ngFor=\"let item of rows; let i = index;\">\n <!-- <COMPLEX table collapsed view>-->\n <tr class=\"new-table-row accordion-heading\" (keyup)=\"$event.key === 'Enter' ? (isHidden[i] = !isHidden[i]) : null\" (click)=\"isHidden[i] = !isHidden[i]\"\n [class.last-accordion]=\"isHidden[i]\">\n <ng-container *ngFor=\"let heading of columns\">\n <td class=\"text-16\">\n <div *ngIf=\"item[heading]; else showEmptyTd\">\n <ccd-field-read\n [caseField]=\"toCaseField(heading, item[heading].label, columnsHorizontalLabel[heading].type, item[heading])\"\n [context]=\"context\"></ccd-field-read>\n </div>\n <ng-template #showEmptyTd>\n <div> </div>\n </ng-template>\n </td>\n </ng-container>\n <td>\n <div style=\"float: right;\">\n <a href=\"#\" (click)=\"$event.preventDefault()\"> <img src=\"{{ getImage(i) }}\" alt=\"accordion-img\" class=\"accordion-image\"/></a>\n </div>\n </td>\n </tr>\n <!-- </COMPLEX table collapsed view>-->\n <!-- <COMPLEX table expanded view>-->\n <tr [hidden]=\"isHidden[i]\">\n <td [colSpan]=\"columns.length + 1\">\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table expanded\">\n <tbody>\n <ng-container\n *ngFor=\"let vLabel of columnsVerticalLabel | keyvalue: keepOriginalOrder | ccdCollectionTableCaseFieldsFilter: caseField: rows[i] | ccdReadFieldsFilter:true :undefined :true\">\n <!-- <COMPLEX table expandable body simple field>-->\n <tr class=\"complex-panel-simple-field accordion-body\" *ngIf=\"item[vLabel.id]\" [hidden]=\"vLabel.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{ vLabel.label | rpxTranslate }}</span></th>\n <td *ngIf=\"vLabel['type'] !== 'Complex'\" class=\"text-16\">\n <ccd-field-read [caseField]=\"toCaseField('', vLabel.label, vLabel.field_type, item[vLabel.id])\"\n [context]=\"context\"></ccd-field-read>\n </td>\n </tr>\n <!-- </COMPLEX table expandable body simple field>-->\n\n <!-- <COMPLEX table expandable body complex field>-->\n <tr *ngIf=\"vLabel['type'] === 'Complex' && addCaseFieldValue(vLabel, item[vLabel.id])\" [hidden]=\"vLabel.hidden\">\n <td colspan=\"2\">\n <ng-container *ngFor=\"let caseField of vLabel | ccdReadFieldsFilter:true :undefined :true\">\n <tr class=\"complex-panel-compound-field\" *ngIf=\"(caseField | ccdIsCompound); else SimpleRow\" [hidden]=\"caseField\">\n <td colspan=\"2\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n </tr>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-nested-field\" [hidden]=\"caseField.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></th>\n <td *ngIf=\"!item[vLabel.id]?.hasOwnProperty('CaseReference')\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n <td *ngIf=\"item[vLabel.id]?.hasOwnProperty('CaseReference')\">\n <ccd-read-case-link-field [caseField]=\"addCaseReferenceValue(caseField, item[vLabel.id].CaseReference)\" [context]=\"context\"></ccd-read-case-link-field>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </td>\n </tr>\n <!-- <COMPLEX table expandable body complex field>-->\n </ng-container>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- </COMPLEX table expanded view>-->\n </ng-container>\n </tbody>\n </table>\n</div>\n", styles: [".complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media(min-width:641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th{border-bottom:none}.complex-panel .complex-panel-table th{padding-left:5px;font-weight:700;border-bottom:none}.complex-panel .complex-panel-table td{padding-left:5px;padding-top:0;padding-bottom:0;border-bottom:none}.complex-panel .new-table-row{border-top:1px solid #bfc1c3}.complex-panel .complex-panel-simple-field th{padding-left:5px;padding-top:0;padding-bottom:0;width:295px}.complex-panel .complex-panel-nested-field th{padding-left:33px;padding-top:0;padding-bottom:0;width:200px}.complex-panel .complex-panel-compound-field td{padding:5px;border-bottom:none}.sort-widget{cursor:pointer;text-decoration:none;color:#0b0c0c}.accordion-wrapper{margin-bottom:20px}.accordion-wrapper .heading-medium{margin:0}.accordion-wrapper .accordion-heading{border-top:1px solid #bfc1c3;padding-top:20px;padding-bottom:10px;height:20px;cursor:pointer}.accordion-wrapper .accordion-heading .accordion-image{width:25px;margin-right:20px}.accordion-wrapper .accordion-body{margin-top:20px;margin-right:20px}.accordion-wrapper .last-accordion{border-bottom:1px solid #bfc1c3;padding-bottom:30px}\n"] }]
|
|
34476
34472
|
}], null, null); })();
|
|
34477
34473
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadComplexFieldCollectionTableComponent, { className: "ReadComplexFieldCollectionTableComponent", filePath: "lib/shared/components/palette/complex/read-complex-field-collection-table.component.ts", lineNumber: 13 }); })();
|
|
34478
34474
|
|
|
@@ -42619,12 +42615,9 @@ class EventStartStateMachineService {
|
|
|
42619
42615
|
}
|
|
42620
42616
|
entryActionForStateNoTask(state, context) {
|
|
42621
42617
|
// Trigger final state to complete processing of state machine
|
|
42622
|
-
const task = context.tasks[0];
|
|
42623
|
-
const jurisdiction = task?.jurisdiction ?? context.caseDetails?.case_type?.jurisdiction?.id;
|
|
42624
|
-
const caseTypeId = task?.case_type_id ?? context.caseDetails?.case_type?.id;
|
|
42625
42618
|
state.trigger(EventStartStates.FINAL);
|
|
42626
42619
|
// Navigate to no tasks available error page
|
|
42627
|
-
context.router.navigate([`/cases/case-details/${jurisdiction}/${
|
|
42620
|
+
context.router.navigate([`/cases/case-details/${context.tasks[0]?.jurisdiction}/${context.tasks[0]?.case_type_id}/${context.caseId}/no-tasks-available`], { relativeTo: context.route });
|
|
42628
42621
|
}
|
|
42629
42622
|
entryActionForStateOneOrMoreTasks(state, context) {
|
|
42630
42623
|
state.trigger(EventStartStates.TASK_ASSIGNED_TO_USER);
|
|
@@ -42782,9 +42775,8 @@ class EventStartComponent {
|
|
|
42782
42775
|
}
|
|
42783
42776
|
ngOnInit() {
|
|
42784
42777
|
// Get task and case id payload from route data
|
|
42785
|
-
const caseDetails = this.route.snapshot.data.case;
|
|
42786
42778
|
const tasks = this.route.snapshot.data.tasks;
|
|
42787
|
-
const caseId =
|
|
42779
|
+
const caseId = this.route.snapshot.data.case.case_id;
|
|
42788
42780
|
const eventId = this.route.snapshot.queryParams['eventId'];
|
|
42789
42781
|
const taskId = this.route.snapshot.queryParams['taskId'];
|
|
42790
42782
|
// Setup the context
|
|
@@ -42793,7 +42785,6 @@ class EventStartComponent {
|
|
|
42793
42785
|
caseId,
|
|
42794
42786
|
eventId,
|
|
42795
42787
|
taskId,
|
|
42796
|
-
caseDetails,
|
|
42797
42788
|
router: this.router,
|
|
42798
42789
|
route: this.route,
|
|
42799
42790
|
sessionStorageService: this.sessionStorageService,
|
|
@@ -45181,13 +45172,15 @@ function SearchResultComponent_table_0_th_11_div_5_Template(rf, ctx) { if (rf &
|
|
|
45181
45172
|
i0.ɵɵelementStart(0, "div", 28)(1, "a", 29);
|
|
45182
45173
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
45183
45174
|
i0.ɵɵlistener("click", function SearchResultComponent_table_0_th_11_div_5_Template_a_click_1_listener($event) { i0.ɵɵrestoreView(_r6); const col_r5 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.sort(col_r5); return i0.ɵɵresetView($event.preventDefault()); })("keyup.enter", function SearchResultComponent_table_0_th_11_div_5_Template_a_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r6); const col_r5 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.sort(col_r5)); });
|
|
45175
|
+
i0.ɵɵtext(3);
|
|
45184
45176
|
i0.ɵɵelementEnd()();
|
|
45185
45177
|
} if (rf & 2) {
|
|
45186
45178
|
const col_r5 = i0.ɵɵnextContext().$implicit;
|
|
45187
45179
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
45188
45180
|
i0.ɵɵadvance();
|
|
45189
|
-
i0.ɵɵproperty("innerHTML", ctx_r0.sortWidget(col_r5), i0.ɵɵsanitizeHtml);
|
|
45190
45181
|
i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 2, "Sort " + col_r5.label));
|
|
45182
|
+
i0.ɵɵadvance(2);
|
|
45183
|
+
i0.ɵɵtextInterpolate(ctx_r0.sortWidget(col_r5));
|
|
45191
45184
|
} }
|
|
45192
45185
|
function SearchResultComponent_table_0_th_11_Template(rf, ctx) { if (rf & 1) {
|
|
45193
45186
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
@@ -45196,7 +45189,7 @@ function SearchResultComponent_table_0_th_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
45196
45189
|
i0.ɵɵtext(3);
|
|
45197
45190
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
45198
45191
|
i0.ɵɵelementEnd();
|
|
45199
|
-
i0.ɵɵtemplate(5, SearchResultComponent_table_0_th_11_div_5_Template,
|
|
45192
|
+
i0.ɵɵtemplate(5, SearchResultComponent_table_0_th_11_div_5_Template, 4, 4, "div", 27);
|
|
45200
45193
|
i0.ɵɵelementEnd()();
|
|
45201
45194
|
} if (rf & 2) {
|
|
45202
45195
|
const col_r5 = ctx.$implicit;
|
|
@@ -45545,7 +45538,7 @@ class SearchResultComponent {
|
|
|
45545
45538
|
ngOnInit() {
|
|
45546
45539
|
if (this.preSelectedCases) {
|
|
45547
45540
|
for (const preSelectedCase of this.preSelectedCases) {
|
|
45548
|
-
if (this.selectedCases && !this.selectedCases.some(aCase => aCase.case_id === preSelectedCase.case_id)) {
|
|
45541
|
+
if (this.selectedCases && !this.selectedCases.some((aCase) => aCase.case_id === preSelectedCase.case_id)) {
|
|
45549
45542
|
this.selectedCases.push(preSelectedCase);
|
|
45550
45543
|
}
|
|
45551
45544
|
}
|
|
@@ -45554,7 +45547,7 @@ class SearchResultComponent {
|
|
|
45554
45547
|
this.selection.emit(this.selectedCases);
|
|
45555
45548
|
}
|
|
45556
45549
|
ngOnChanges(changes) {
|
|
45557
|
-
if (changes
|
|
45550
|
+
if (changes.resultView) {
|
|
45558
45551
|
this.hideRows = false;
|
|
45559
45552
|
this.sortParameters = undefined;
|
|
45560
45553
|
// Clone `resultView` to prevent sorting the external variable
|
|
@@ -45569,8 +45562,8 @@ class SearchResultComponent {
|
|
|
45569
45562
|
this.hydrateResultView();
|
|
45570
45563
|
this.draftsCount = this.draftsCount ? this.draftsCount : this.numberOfDrafts();
|
|
45571
45564
|
}
|
|
45572
|
-
if (changes
|
|
45573
|
-
this.selected.page = (changes
|
|
45565
|
+
if (changes.page) {
|
|
45566
|
+
this.selected.page = (changes.page).currentValue;
|
|
45574
45567
|
}
|
|
45575
45568
|
}
|
|
45576
45569
|
isTranslatable(col) {
|
|
@@ -45600,7 +45593,7 @@ class SearchResultComponent {
|
|
|
45600
45593
|
selectAll() {
|
|
45601
45594
|
if (this.allOnPageSelected()) {
|
|
45602
45595
|
// all cases already selected, so unselect all on this page
|
|
45603
|
-
this.resultView.results.forEach(c => {
|
|
45596
|
+
this.resultView.results.forEach((c) => {
|
|
45604
45597
|
this.selectedCases.forEach((s, i) => {
|
|
45605
45598
|
if (c.case_id === s.case_id) {
|
|
45606
45599
|
this.selectedCases.splice(i, 1);
|
|
@@ -45609,7 +45602,7 @@ class SearchResultComponent {
|
|
|
45609
45602
|
});
|
|
45610
45603
|
}
|
|
45611
45604
|
else {
|
|
45612
|
-
this.resultView.results.forEach(c => {
|
|
45605
|
+
this.resultView.results.forEach((c) => {
|
|
45613
45606
|
if (!this.isSelected(c) && this.canBeShared(c)) {
|
|
45614
45607
|
this.selectedCases.push(c);
|
|
45615
45608
|
}
|
|
@@ -45661,21 +45654,21 @@ class SearchResultComponent {
|
|
|
45661
45654
|
*/
|
|
45662
45655
|
// A longer term resolution is to move this piece of logic to the backend
|
|
45663
45656
|
hydrateResultView() {
|
|
45664
|
-
this.resultView.results.forEach(result => {
|
|
45657
|
+
this.resultView.results.forEach((result) => {
|
|
45665
45658
|
const caseFields = [];
|
|
45666
|
-
Object.keys(result.case_fields).forEach(fieldId => {
|
|
45659
|
+
Object.keys(result.case_fields).forEach((fieldId) => {
|
|
45667
45660
|
const field = result.case_fields[fieldId];
|
|
45668
45661
|
caseFields.push(Object.assign(new CaseField(), {
|
|
45669
45662
|
id: fieldId,
|
|
45670
45663
|
label: null,
|
|
45671
45664
|
field_type: {},
|
|
45672
45665
|
value: field,
|
|
45673
|
-
display_context: null
|
|
45666
|
+
display_context: null
|
|
45674
45667
|
}));
|
|
45675
45668
|
});
|
|
45676
45669
|
result.hydrated_case_fields = caseFields;
|
|
45677
45670
|
result.columns = {};
|
|
45678
|
-
this.resultView.columns.forEach(col => {
|
|
45671
|
+
this.resultView.columns.forEach((col) => {
|
|
45679
45672
|
result.columns[col.case_field_id] = this.buildCaseField(col, result);
|
|
45680
45673
|
});
|
|
45681
45674
|
});
|
|
@@ -45713,7 +45706,7 @@ class SearchResultComponent {
|
|
|
45713
45706
|
field_type: col.case_field_type,
|
|
45714
45707
|
value: result.case_fields[col.case_field_id],
|
|
45715
45708
|
display_context_parameter: col.display_context_parameter,
|
|
45716
|
-
display_context: col.display_context
|
|
45709
|
+
display_context: col.display_context
|
|
45717
45710
|
});
|
|
45718
45711
|
}
|
|
45719
45712
|
getColumnsWithPrefix(col, result) {
|
|
@@ -45766,7 +45759,7 @@ class SearchResultComponent {
|
|
|
45766
45759
|
else {
|
|
45767
45760
|
condition = this.isSortAscending(column);
|
|
45768
45761
|
}
|
|
45769
|
-
return condition ?
|
|
45762
|
+
return String.fromCodePoint(condition ? 9660 : 9650);
|
|
45770
45763
|
}
|
|
45771
45764
|
activityEnabled() {
|
|
45772
45765
|
return this.activityService.isEnabled;
|
|
@@ -45775,19 +45768,13 @@ class SearchResultComponent {
|
|
|
45775
45768
|
if (col.case_field_id === '[CASE_REFERENCE]') {
|
|
45776
45769
|
return this.caseReferencePipe.transform(result.case_fields[col.case_field_id]);
|
|
45777
45770
|
}
|
|
45778
|
-
|
|
45779
|
-
if (col.id) {
|
|
45780
|
-
|
|
45781
|
-
return this.caseReferencePipe.transform(result.case_fields[col.id]);
|
|
45782
|
-
}
|
|
45783
|
-
else {
|
|
45784
|
-
return result.case_fields[col.id];
|
|
45785
|
-
}
|
|
45786
|
-
}
|
|
45787
|
-
else {
|
|
45788
|
-
return result.case_fields[col.case_field_id];
|
|
45771
|
+
if (col.id) {
|
|
45772
|
+
if (col.id === '[CASE_REFERENCE]') {
|
|
45773
|
+
return this.caseReferencePipe.transform(result.case_fields[col.id]);
|
|
45789
45774
|
}
|
|
45775
|
+
return result.case_fields[col.id];
|
|
45790
45776
|
}
|
|
45777
|
+
return result.case_fields[col.case_field_id];
|
|
45791
45778
|
}
|
|
45792
45779
|
draftPrefixOrGet(col, result) {
|
|
45793
45780
|
return result.case_id.startsWith(DRAFT_PREFIX) ? DRAFT_PREFIX : this.hyphenateIfCaseReferenceOrGet(col, result);
|
|
@@ -45822,7 +45809,7 @@ class SearchResultComponent {
|
|
|
45822
45809
|
return currentPage > 1 ? this.draftsCount : 0;
|
|
45823
45810
|
}
|
|
45824
45811
|
numberOfDrafts() {
|
|
45825
|
-
return this.resultView.results.filter(_ => _.case_id.startsWith(DRAFT_PREFIX)).length;
|
|
45812
|
+
return this.resultView.results.filter((_) => _.case_id.startsWith(DRAFT_PREFIX)).length;
|
|
45826
45813
|
}
|
|
45827
45814
|
goToCase(caseId) {
|
|
45828
45815
|
this.clickCase.emit({
|
|
@@ -45839,7 +45826,7 @@ class SearchResultComponent {
|
|
|
45839
45826
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
45840
45827
|
noop() { }
|
|
45841
45828
|
static ɵfac = function SearchResultComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchResultComponent)(i0.ɵɵdirectiveInject(SearchResultViewItemComparatorFactory), i0.ɵɵdirectiveInject(AbstractAppConfig), i0.ɵɵdirectiveInject(ActivityService), i0.ɵɵdirectiveInject(CaseReferencePipe), i0.ɵɵdirectiveInject(PlaceholderService), i0.ɵɵdirectiveInject(BrowserService), i0.ɵɵdirectiveInject(SessionStorageService)); };
|
|
45842
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultComponent, selectors: [["ccd-search-result"]], inputs: { caseLinkUrlTemplate: "caseLinkUrlTemplate", jurisdiction: "jurisdiction", caseType: "caseType", caseState: "caseState", caseFilterFG: "caseFilterFG", resultView: "resultView", page: "page", paginationMetadata: "paginationMetadata", metadataFields: "metadataFields", selectionEnabled: "selectionEnabled", showOnlySelected: "showOnlySelected", preSelectedCases: "preSelectedCases", consumerSortingEnabled: "consumerSortingEnabled" }, outputs: { selection: "selection", changePage: "changePage", clickCase: "clickCase", sortHandler: "sortHandler" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 3, consts: [["case_reference", ""], [4, "ngIf"], [3, "visibilityLabel", "autoHide", "maxSize", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel", "pageChange", 4, "ngIf"], ["class", "notification", 4, "ngIf"], ["id", "search-result-heading__text", "tabindex", "-1", 1, "heading-h2"], ["class", "govuk-warning-text pagination-limit-warning", 4, "ngIf"], ["class", "pagination-top", 4, "ngIf"], ["class", "reset-selection", 4, "ngIf"], ["scope", "row"], ["class", "govuk-table__checkbox", 4, "ngIf"], ["class", "search-result-column-header", "scope", "col", 4, "ngFor", "ngForOf"], ["style", "width: 110px;", "scope", "col", 4, "ngIf"], [1, "govuk-warning-text", "pagination-limit-warning"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-warning-text__assistive"], [1, "pagination-top"], ["id", "search-result-summary__text", 1, "text-16"], [1, "govuk-!-font-weight-bold"], [1, "reset-selection"], ["href", "#", 1, "search-result-reset-link", 3, "click"], [1, "govuk-table__checkbox"], [1, "govuk-checkboxes__item"], ["id", "select-all", "name", "select-all", "type", "checkbox", 1, "govuk-checkboxes__input", 3, "change", "checked", "disabled"], ["for", "select-all", 1, "govuk-label", "govuk-checkboxes__label"], ["scope", "col", 1, "search-result-column-header"], [1, "search-result-column-label", 3, "click", "keyup"], ["class", "search-result-column-sort", 4, "ngIf"], [1, "search-result-column-sort"], ["href", "#", 1, "sort-widget", 3, "click", "keyup.enter"
|
|
45829
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultComponent, selectors: [["ccd-search-result"]], inputs: { caseLinkUrlTemplate: "caseLinkUrlTemplate", jurisdiction: "jurisdiction", caseType: "caseType", caseState: "caseState", caseFilterFG: "caseFilterFG", resultView: "resultView", page: "page", paginationMetadata: "paginationMetadata", metadataFields: "metadataFields", selectionEnabled: "selectionEnabled", showOnlySelected: "showOnlySelected", preSelectedCases: "preSelectedCases", consumerSortingEnabled: "consumerSortingEnabled" }, outputs: { selection: "selection", changePage: "changePage", clickCase: "clickCase", sortHandler: "sortHandler" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 3, consts: [["case_reference", ""], [4, "ngIf"], [3, "visibilityLabel", "autoHide", "maxSize", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel", "pageChange", 4, "ngIf"], ["class", "notification", 4, "ngIf"], ["id", "search-result-heading__text", "tabindex", "-1", 1, "heading-h2"], ["class", "govuk-warning-text pagination-limit-warning", 4, "ngIf"], ["class", "pagination-top", 4, "ngIf"], ["class", "reset-selection", 4, "ngIf"], ["scope", "row"], ["class", "govuk-table__checkbox", 4, "ngIf"], ["class", "search-result-column-header", "scope", "col", 4, "ngFor", "ngForOf"], ["style", "width: 110px;", "scope", "col", 4, "ngIf"], [1, "govuk-warning-text", "pagination-limit-warning"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-warning-text__assistive"], [1, "pagination-top"], ["id", "search-result-summary__text", 1, "text-16"], [1, "govuk-!-font-weight-bold"], [1, "reset-selection"], ["href", "#", 1, "search-result-reset-link", 3, "click"], [1, "govuk-table__checkbox"], [1, "govuk-checkboxes__item"], ["id", "select-all", "name", "select-all", "type", "checkbox", 1, "govuk-checkboxes__input", 3, "change", "checked", "disabled"], ["for", "select-all", 1, "govuk-label", "govuk-checkboxes__label"], ["scope", "col", 1, "search-result-column-header"], [1, "search-result-column-label", 3, "click", "keyup"], ["class", "search-result-column-sort", 4, "ngIf"], [1, "search-result-column-sort"], ["href", "#", 1, "sort-widget", 3, "click", "keyup.enter"], ["scope", "col", 2, "width", "110px"], [4, "ngFor", "ngForOf"], ["class", "govuk-table__checkbox", "scope", "col", 4, "ngIf"], ["class", "search-result-column-cell", "scope", "row", 4, "ngFor", "ngForOf"], ["scope", "col", 1, "govuk-table__checkbox"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "change", "id", "name", "checked", "disabled"], [1, "govuk-label", "govuk-checkboxes__label", 3, "for"], ["scope", "row", 1, "search-result-column-cell"], ["class", "govuk-link", 3, "routerLink", 4, "ngIf"], ["class", "text-16", 3, "visibility", 4, "ngIf"], [1, "govuk-link", 3, "routerLink"], ["class", "text-16", 4, "ngIf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "contextFields", "elementsToSubstitute", 4, "ngIf", "ngIfElse"], ["ccdLabelSubstitutor", "", 3, "caseField", "contextFields", "elementsToSubstitute"], [3, "caseId", "displayMode"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "change", "keyup", "id", "name", "checked", "disabled"], [3, "pageChange", "visibilityLabel", "autoHide", "maxSize", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], [1, "notification"]], template: function SearchResultComponent_Template(rf, ctx) { if (rf & 1) {
|
|
45843
45830
|
i0.ɵɵtemplate(0, SearchResultComponent_table_0_Template, 16, 11, "table", 1)(1, SearchResultComponent_ccd_pagination_1_Template, 1, 6, "ccd-pagination", 2)(2, SearchResultComponent_div_2_Template, 4, 6, "div", 3);
|
|
45844
45831
|
} if (rf & 2) {
|
|
45845
45832
|
i0.ɵɵproperty("ngIf", ctx.hasResults() || ctx.hasDrafts());
|
|
@@ -45851,7 +45838,7 @@ class SearchResultComponent {
|
|
|
45851
45838
|
}
|
|
45852
45839
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultComponent, [{
|
|
45853
45840
|
type: Component,
|
|
45854
|
-
args: [{ selector: 'ccd-search-result', standalone: false, template: "<table *ngIf=\"hasResults() || hasDrafts()\">\n <caption>\n <h2 class=\"heading-h2\" id=\"search-result-heading__text\" tabindex=\"-1\">{{ (caseState ? 'Your cases' : 'Search result') | rpxTranslate}}</h2>\n\n <div class=\"govuk-warning-text pagination-limit-warning\" *ngIf=\"paginationLimitEnforced\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">{{'Warning' | rpxTranslate}}</span>\n {{'The total size of the result set is' | rpxTranslate}} {{paginationMetadata.totalResultsCount | number}}. {{'Only the first 10,000 records are available for display.' | rpxTranslate}}\n </strong>\n </div>\n\n <div *ngIf=\"(hasResults() || hasDrafts())\" class=\"pagination-top\">\n <output [attr.aria-label]=\"getTotalResults() + ' ' + ('results have been found' | rpxTranslate)\"></output>\n <span class=\"text-16\" id=\"search-result-summary__text\">{{'Showing' | rpxTranslate}}\n <span class=\"govuk-!-font-weight-bold\">{{ getFirstResult() }}</span>\n {{'to' | rpxTranslate}}\n <span class=\"govuk-!-font-weight-bold\">{{ getLastResult() }}</span>\n {{'of' | rpxTranslate}}\n <span class=\"govuk-!-font-weight-bold\">{{ getTotalResults() }}</span> {{'results' | rpxTranslate}}</span>\n </div>\n <div *ngIf=\"(hasResults() || hasDrafts()) && selectionEnabled\" class=\"reset-selection\"\n [attr.aria-label]=\"'Reset selection' | rpxTranslate\">\n <span><a class=\"search-result-reset-link\" href=\"#\" (click)=\"clearSelection(); $event.preventDefault()\">{{'Reset case selection' | rpxTranslate}}</a></span>\n </div>\n </caption>\n <thead>\n <tr scope=\"row\">\n <td *ngIf=\"selectionEnabled\" class=\"govuk-table__checkbox\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-all\" name=\"select-all\" type=\"checkbox\" (change)=\"selectAll()\" [checked]=\"allOnPageSelected()\" [disabled]=\"!canAnyBeShared()\" />\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-all\" [attr.aria-labelledby]=\"'select-all'\">\n </label>\n </div>\n </td>\n <th *ngFor=\"let col of resultView.columns\" class=\"search-result-column-header\"\n [attr.aria-sort]=\"isSortAscending(col) === null ? null : (isSortAscending(col) ? 'ascending' : 'descending')\" scope=\"col\">\n <div>\n <div class=\"search-result-column-label\" (click)=\"sort(col)\" (keyup)=\"noop()\">\n {{ isTranslatable(col) ? (col.label | rpxTranslate) : col.label }}\n </div>\n <div *ngIf=\"comparator(col)\" class=\"search-result-column-sort\">\n <a (click)=\"sort(col); $event.preventDefault()\" (keyup.enter)=\"sort(col)\" class=\"sort-widget\" [
|
|
45841
|
+
args: [{ selector: 'ccd-search-result', standalone: false, template: "<table *ngIf=\"hasResults() || hasDrafts()\">\n <caption>\n <h2 class=\"heading-h2\" id=\"search-result-heading__text\" tabindex=\"-1\">{{ (caseState ? 'Your cases' : 'Search result') | rpxTranslate}}</h2>\n\n <div class=\"govuk-warning-text pagination-limit-warning\" *ngIf=\"paginationLimitEnforced\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">{{'Warning' | rpxTranslate}}</span>\n {{'The total size of the result set is' | rpxTranslate}} {{paginationMetadata.totalResultsCount | number}}. {{'Only the first 10,000 records are available for display.' | rpxTranslate}}\n </strong>\n </div>\n\n <div *ngIf=\"(hasResults() || hasDrafts())\" class=\"pagination-top\">\n <output [attr.aria-label]=\"getTotalResults() + ' ' + ('results have been found' | rpxTranslate)\"></output>\n <span class=\"text-16\" id=\"search-result-summary__text\">{{'Showing' | rpxTranslate}}\n <span class=\"govuk-!-font-weight-bold\">{{ getFirstResult() }}</span>\n {{'to' | rpxTranslate}}\n <span class=\"govuk-!-font-weight-bold\">{{ getLastResult() }}</span>\n {{'of' | rpxTranslate}}\n <span class=\"govuk-!-font-weight-bold\">{{ getTotalResults() }}</span> {{'results' | rpxTranslate}}</span>\n </div>\n <div *ngIf=\"(hasResults() || hasDrafts()) && selectionEnabled\" class=\"reset-selection\"\n [attr.aria-label]=\"'Reset selection' | rpxTranslate\">\n <span><a class=\"search-result-reset-link\" href=\"#\" (click)=\"clearSelection(); $event.preventDefault()\">{{'Reset case selection' | rpxTranslate}}</a></span>\n </div>\n </caption>\n <thead>\n <tr scope=\"row\">\n <td *ngIf=\"selectionEnabled\" class=\"govuk-table__checkbox\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-all\" name=\"select-all\" type=\"checkbox\" (change)=\"selectAll()\" [checked]=\"allOnPageSelected()\" [disabled]=\"!canAnyBeShared()\" />\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-all\" [attr.aria-labelledby]=\"'select-all'\">\n </label>\n </div>\n </td>\n <th *ngFor=\"let col of resultView.columns\" class=\"search-result-column-header\"\n [attr.aria-sort]=\"isSortAscending(col) === null ? null : (isSortAscending(col) ? 'ascending' : 'descending')\" scope=\"col\">\n <div>\n <div class=\"search-result-column-label\" (click)=\"sort(col)\" (keyup)=\"noop()\">\n {{ isTranslatable(col) ? (col.label | rpxTranslate) : col.label }}\n </div>\n <div *ngIf=\"comparator(col)\" class=\"search-result-column-sort\">\n <a (click)=\"sort(col); $event.preventDefault()\" (keyup.enter)=\"sort(col)\" class=\"sort-widget\" [attr.aria-label]=\"'Sort ' + col.label | rpxTranslate\" href=\"#\">{{ sortWidget(col) }}</a>\n </div>\n </div>\n </th>\n <th *ngIf=\"activityEnabled()\" style=\"width: 110px;\" scope=\"col\">​</th>\n </tr>\n </thead>\n\n <tbody>\n <!-- sorted by consumer -->\n <ng-container *ngIf=\"consumerSortingEnabled\">\n <tr *ngFor=\"let result of resultView.results | paginate: { itemsPerPage: paginationPageSize, currentPage: selected.page, totalItems: resultTotal }\">\n <td *ngIf=\"selectionEnabled\" class=\"govuk-table__checkbox\" scope=\"col\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-{{ result.case_id }}\" name=\"select-{{ result.case_id }}\"\n type=\"checkbox\" (change)=\"changeSelection(result)\" [checked]=\"isSelected(result)\" [disabled]=\"!canBeShared(result)\" />\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-{{ result.case_id }}\" [attr.aria-labelledby]=\"'select-' + result.case_id\">\n </label>\n </div>\n </td>\n <td class=\"search-result-column-cell\" *ngFor=\"let col of resultView.columns; let colIndex = index\" scope=\"row\">\n <a *ngIf=\"colIndex == 0\" [routerLink]=\"prepareCaseLinkUrl(result.case_id)\"\n attr.aria-label=\"go to case with Case reference:{{ result.case_id | ccdCaseReference }}\" class=\"govuk-link\">\n <ng-container class=\"text-16\" *ngIf=\"!hideRows\">\n <ccd-field-read *ngIf=\"draftPrefixOrGet(col, result); else case_reference\"\n ccdLabelSubstitutor [caseField]=\"getColumnsWithPrefix(result.columns[col.case_field_id], result)\"\n [contextFields]=\"result.hydrated_case_fields\"\n [elementsToSubstitute]=\"['value']\"></ccd-field-read>\n <ng-template #case_reference>{{result.case_id | ccdCaseReference}}</ng-template>\n </ng-container>\n </a>\n <div *ngIf=\"colIndex != 0\" class=\"text-16\" [style.visibility]=\"hideRows ? 'hidden' : 'visible'\">\n <ccd-field-read ccdLabelSubstitutor\n [caseField]=\"result.columns[col.case_field_id]\"\n [contextFields]=\"result.hydrated_case_fields\"\n [elementsToSubstitute]=\"['value']\"></ccd-field-read>\n </div>\n </td>\n <td *ngIf=\"activityEnabled()\">\n <div [style.visibility]=\"hideRows ? 'hidden' : 'visible'\">\n <ccd-activity [caseId]=\"result.case_id\" [displayMode]=\"ICON\"></ccd-activity>\n </div>\n </td>\n </tr>\n </ng-container>\n <!-- sorted by toolkit -->\n <ng-container *ngIf=\"!consumerSortingEnabled\">\n <tr *ngFor=\"let result of resultView.results | ccdSortSearchResult : sortParameters | paginate: { itemsPerPage: paginationPageSize, currentPage: selected.page, totalItems: resultTotal }\">\n <td *ngIf=\"selectionEnabled\" class=\"govuk-table__checkbox\" scope=\"col\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-{{ result.case_id }}\" name=\"select-{{ result.case_id }}\"\n type=\"checkbox\" (change)=\"changeSelection(result)\" [checked]=\"isSelected(result)\" [disabled]=\"!canBeShared(result)\" (keyup)=\"onKeyUp($event, result)\" />\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-{{ result.case_id }}\" [attr.aria-labelledby]=\"'select-' + result.case_id\">\n </label>\n </div>\n </td>\n <td class=\"search-result-column-cell\" *ngFor=\"let col of resultView.columns; let colIndex = index\" scope=\"row\">\n\n <a *ngIf=\"colIndex == 0\" [routerLink]=\"prepareCaseLinkUrl(result.case_id)\"\n attr.aria-label=\"go to case with Case reference:{{ result.case_id | ccdCaseReference }}\" class=\"govuk-link\">\n <ng-container class=\"text-16\" *ngIf=\"!hideRows\">\n <ccd-field-read *ngIf=\"draftPrefixOrGet(col, result); else case_reference\"\n ccdLabelSubstitutor [caseField]=\"getColumnsWithPrefix(result.columns[col.case_field_id], result)\"\n [contextFields]=\"result.hydrated_case_fields\"\n [elementsToSubstitute]=\"['value']\"></ccd-field-read>\n <ng-template #case_reference>{{result.case_id | ccdCaseReference}}</ng-template>\n </ng-container>\n </a>\n <div *ngIf=\"colIndex != 0\" class=\"text-16\" [style.visibility]=\"hideRows ? 'hidden' : 'visible'\">\n <ccd-field-read ccdLabelSubstitutor\n [caseField]=\"result.columns[col.case_field_id]\"\n [contextFields]=\"result.hydrated_case_fields\"\n [elementsToSubstitute]=\"['value']\"></ccd-field-read>\n </div>\n </td>\n <td *ngIf=\"activityEnabled()\">\n <div [style.visibility]=\"hideRows ? 'hidden' : 'visible'\">\n <ccd-activity [caseId]=\"result.case_id\" [displayMode]=\"ICON\"></ccd-activity>\n </div>\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n</table>\n\n<ccd-pagination\n *ngIf=\"hasResults()\"\n (pageChange)=\"goToPage($event)\"\n [visibilityLabel]=\"hideRows ? 'hidden' : 'visible'\"\n [autoHide]=\"true\"\n [maxSize]=\"8\"\n [screenReaderPaginationLabel]=\"'Pagination'\"\n [screenReaderPageLabel]=\"page\"\n [screenReaderCurrentLabel]=\"'You\\'re on page'\"></ccd-pagination>\n\n<div *ngIf=\"!(hasResults() || hasDrafts())\" class=\"notification\"\n[attr.aria-describedby]=\"'No cases found. Try using different filters.' | rpxTranslate\">\n{{'No cases found. Try using different filters.' | rpxTranslate}}\n</div>\n", styles: ["table thead tr th{vertical-align:top}table tbody tr td{font-size:16px;word-wrap:break-word}table tbody tr td a{float:left}table .caseid-col{white-space:nowrap}.notification{text-align:center;padding:30px 0;margin-top:75px}a:hover{color:#005ea5}.search-result-reset-link{padding-right:15px;padding-left:15px}.search-result-column-header{width:unset;table-layout:normal}.search-result-column-header div{display:table-cell;width:auto}@media screen and (max-width:379px){.search-result-column-header div{display:block;float:right}}.search-result-column-label{font-size:16px;font-weight:700;word-wrap:break-word;cursor:pointer;padding-right:15px}.search-result-column-sort{font-size:16px}.sort-widget{cursor:pointer;text-decoration:none;color:#231f20}span.heading-medium{margin-top:-20px}.govuk-table__checkbox{vertical-align:middle;padding-left:3px}#search-result-heading__text:focus{outline:none}\n"] }]
|
|
45855
45842
|
}], () => [{ type: SearchResultViewItemComparatorFactory }, { type: AbstractAppConfig }, { type: ActivityService }, { type: CaseReferencePipe }, { type: PlaceholderService }, { type: BrowserService }, { type: SessionStorageService }], { caseLinkUrlTemplate: [{
|
|
45856
45843
|
type: Input
|
|
45857
45844
|
}], jurisdiction: [{
|