@hmcts/ccd-case-ui-toolkit 7.0.22 → 7.0.23-exui-1717-rc2
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.
- package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +2 -2
- package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +35 -7
- package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +15 -3
- package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +10 -5
- package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +5 -1
- package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +14 -12
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +12 -12
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +41 -16
- package/esm2020/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +1 -1
- package/esm2020/lib/shared/domain/document/document-data.model.mjs +1 -1
- package/esm2020/lib/shared/domain/http/http-error.model.mjs +7 -1
- package/esm2020/lib/shared/services/fields/fields.purger.mjs +4 -3
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +123 -45
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +128 -45
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +2 -1
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts +1 -1
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
- package/lib/shared/components/palette/document/write-document-field.component.d.ts +2 -0
- package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
- package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts +1 -0
- package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +1 -1
- package/lib/shared/domain/document/document-data.model.d.ts +1 -0
- package/lib/shared/domain/document/document-data.model.d.ts.map +1 -1
- package/lib/shared/domain/http/http-error.model.d.ts +1 -0
- package/lib/shared/domain/http/http-error.model.d.ts.map +1 -1
- package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1241,6 +1241,11 @@ class HttpError {
|
|
|
1241
1241
|
}
|
|
1242
1242
|
static from(response) {
|
|
1243
1243
|
const error = new HttpError();
|
|
1244
|
+
if (response?.status === 429) {
|
|
1245
|
+
error.error = HttpError.MESSAGE_ERROR_429;
|
|
1246
|
+
error.status = response.status;
|
|
1247
|
+
error.message = response.message;
|
|
1248
|
+
}
|
|
1244
1249
|
// Check that the HttpErrorResponse contains an "error" object before mapping the error properties
|
|
1245
1250
|
if (!!(response && response.error)) {
|
|
1246
1251
|
Object.keys(error).forEach((key) => {
|
|
@@ -1260,6 +1265,7 @@ class HttpError {
|
|
|
1260
1265
|
HttpError.DEFAULT_ERROR = 'Unknown error';
|
|
1261
1266
|
HttpError.DEFAULT_MESSAGE = 'Something unexpected happened, our technical staff have been automatically notified';
|
|
1262
1267
|
HttpError.DEFAULT_STATUS = 500;
|
|
1268
|
+
HttpError.MESSAGE_ERROR_429 = 'Your request was rate limited. Please wait a few seconds before retrying your document upload';
|
|
1263
1269
|
|
|
1264
1270
|
/**
|
|
1265
1271
|
* `Oauth2Service` and `AuthService` cannot be merged as it creates a cyclic dependency on `AuthService` through `HttpErrorService`.
|
|
@@ -5026,8 +5032,9 @@ class FieldsPurger {
|
|
|
5026
5032
|
}
|
|
5027
5033
|
}
|
|
5028
5034
|
else {
|
|
5029
|
-
// Delete the field
|
|
5030
|
-
|
|
5035
|
+
// Delete the field from formGroup
|
|
5036
|
+
const dataGroup = form.get('data');
|
|
5037
|
+
dataGroup.removeControl(field.id);
|
|
5031
5038
|
}
|
|
5032
5039
|
}
|
|
5033
5040
|
resetPage(form, wizardPage) {
|
|
@@ -8251,7 +8258,7 @@ class EventCompletionStateMachineService {
|
|
|
8251
8258
|
}
|
|
8252
8259
|
entryActionForStateCheckTasksCanBeCompleted(state, context) {
|
|
8253
8260
|
context.workAllocationService.getTask(context.task.id).subscribe(taskResponse => {
|
|
8254
|
-
if (taskResponse
|
|
8261
|
+
if (taskResponse?.task?.task_state) {
|
|
8255
8262
|
switch (taskResponse.task.task_state.toUpperCase()) {
|
|
8256
8263
|
case TaskState.Unassigned:
|
|
8257
8264
|
// Task unassigned
|
|
@@ -8281,6 +8288,14 @@ class EventCompletionStateMachineService {
|
|
|
8281
8288
|
break;
|
|
8282
8289
|
}
|
|
8283
8290
|
}
|
|
8291
|
+
else if (!taskResponse?.task) {
|
|
8292
|
+
context.alertService.setPreserveAlerts(true);
|
|
8293
|
+
context.alertService.warning({ phrase: 'Task statecheck : no task available for completion', replacements: {} });
|
|
8294
|
+
}
|
|
8295
|
+
else {
|
|
8296
|
+
context.alertService.setPreserveAlerts(true);
|
|
8297
|
+
context.alertService.warning({ phrase: 'Task statecheck : no task state available for completion', replacements: {} });
|
|
8298
|
+
}
|
|
8284
8299
|
}, error => {
|
|
8285
8300
|
context.alertService.error(error.message);
|
|
8286
8301
|
return throwError(error);
|
|
@@ -8302,6 +8317,8 @@ class EventCompletionStateMachineService {
|
|
|
8302
8317
|
context.component.eventCanBeCompleted.emit(true);
|
|
8303
8318
|
}
|
|
8304
8319
|
else {
|
|
8320
|
+
context.alertService.setPreserveAlerts(true);
|
|
8321
|
+
context.alertService.warning({ phrase: 'CompleteEventAndTask : no task available for completion', replacements: {} });
|
|
8305
8322
|
// Emit event cannot be completed event
|
|
8306
8323
|
context.component.eventCanBeCompleted.emit(false);
|
|
8307
8324
|
}
|
|
@@ -8322,7 +8339,9 @@ class EventCompletionStateMachineService {
|
|
|
8322
8339
|
context.component.eventCanBeCompleted.emit(true);
|
|
8323
8340
|
}
|
|
8324
8341
|
else {
|
|
8325
|
-
|
|
8342
|
+
context.alertService.setPreserveAlerts(true);
|
|
8343
|
+
context.alertService.warning({ phrase: 'Unassigned task : no task available for completion', replacements: {} });
|
|
8344
|
+
// Emit event cannot be completed event
|
|
8326
8345
|
context.component.eventCanBeCompleted.emit(false);
|
|
8327
8346
|
}
|
|
8328
8347
|
}
|
|
@@ -8385,16 +8404,21 @@ class PageValidationService {
|
|
|
8385
8404
|
constructor(caseFieldService) {
|
|
8386
8405
|
this.caseFieldService = caseFieldService;
|
|
8387
8406
|
}
|
|
8388
|
-
|
|
8389
|
-
|
|
8407
|
+
getInvalidFields(page, editForm) {
|
|
8408
|
+
const failingCaseFields = [];
|
|
8409
|
+
page.case_fields
|
|
8390
8410
|
.filter(caseField => !this.caseFieldService.isReadOnly(caseField))
|
|
8391
8411
|
.filter(caseField => !this.isHidden(caseField, editForm))
|
|
8392
|
-
.
|
|
8412
|
+
.map(caseField => {
|
|
8393
8413
|
const theControl = FieldsUtils.isCaseFieldOfType(caseField, ['JudicialUser'])
|
|
8394
8414
|
? editForm.controls['data'].get(`${caseField.id}_judicialUserControl`)
|
|
8395
8415
|
: editForm.controls['data'].get(caseField.id);
|
|
8396
|
-
|
|
8416
|
+
if (!(this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl))) {
|
|
8417
|
+
failingCaseFields.push(caseField);
|
|
8418
|
+
}
|
|
8419
|
+
;
|
|
8397
8420
|
});
|
|
8421
|
+
return failingCaseFields;
|
|
8398
8422
|
}
|
|
8399
8423
|
isHidden(caseField, editForm, path) {
|
|
8400
8424
|
const formFields = editForm.getRawValue();
|
|
@@ -8500,6 +8524,8 @@ class WorkAllocationService {
|
|
|
8500
8524
|
*/
|
|
8501
8525
|
completeTask(taskId) {
|
|
8502
8526
|
if (!this.isWAEnabled()) {
|
|
8527
|
+
this.alertService.setPreserveAlerts(true);
|
|
8528
|
+
this.alertService.warning({ phrase: 'completeTask: Work Allocation is not enabled, so the task could not be completed. Please complete the task associated with the case manually.' });
|
|
8503
8529
|
return of(null);
|
|
8504
8530
|
}
|
|
8505
8531
|
const url = `${this.appConfig.getWorkAllocationApiUrl()}/task/${taskId}/complete`;
|
|
@@ -8520,6 +8546,8 @@ class WorkAllocationService {
|
|
|
8520
8546
|
*/
|
|
8521
8547
|
assignAndCompleteTask(taskId) {
|
|
8522
8548
|
if (!this.isWAEnabled()) {
|
|
8549
|
+
this.alertService.setPreserveAlerts(true);
|
|
8550
|
+
this.alertService.warning({ phrase: 'assignAndCompleteTask: Work Allocation is not enabled, so the task could not be completed. Please complete the task associated with the case manually.' });
|
|
8523
8551
|
return of(null);
|
|
8524
8552
|
}
|
|
8525
8553
|
const url = `${this.appConfig.getWorkAllocationApiUrl()}/task/${taskId}/complete`;
|
|
@@ -8928,7 +8956,7 @@ class CaseEditComponent {
|
|
|
8928
8956
|
// If caseField.hidden is NOT truthy and also NOT equal to false, then it must be null/undefined (remember that
|
|
8929
8957
|
// both null and undefined are equal to *neither false nor true*)
|
|
8930
8958
|
if (caseField && caseField.retain_hidden_value &&
|
|
8931
|
-
(caseField.hidden || (caseField.hidden !== false && parentField
|
|
8959
|
+
(caseField.hidden || (caseField.hidden !== false && parentField?.hidden))) {
|
|
8932
8960
|
if (caseField.field_type.type === 'Complex') {
|
|
8933
8961
|
// Note: Deliberate use of equality (==) and non-equality (!=) operators for null checks throughout, to
|
|
8934
8962
|
// handle both null and undefined values
|
|
@@ -9719,7 +9747,8 @@ class CaseEditPageComponent {
|
|
|
9719
9747
|
return this.caseEdit.first();
|
|
9720
9748
|
}
|
|
9721
9749
|
currentPageIsNotValid() {
|
|
9722
|
-
|
|
9750
|
+
this.failingCaseFields = this.pageValidationService.getInvalidFields(this.currentPage, this.editForm);
|
|
9751
|
+
return this.failingCaseFields.length > 0 ||
|
|
9723
9752
|
(this.isLinkedCasesJourney() && !this.isLinkedCasesJourneyAtFinalStep);
|
|
9724
9753
|
}
|
|
9725
9754
|
isLinkedCasesJourney() {
|
|
@@ -9741,9 +9770,15 @@ class CaseEditPageComponent {
|
|
|
9741
9770
|
// Adding validation message to show it as Error Summary
|
|
9742
9771
|
generateErrorMessage(fields, container, path) {
|
|
9743
9772
|
const group = container || this.editForm.controls['data'];
|
|
9744
|
-
|
|
9745
|
-
|
|
9773
|
+
let validErrorFieldFound = false;
|
|
9774
|
+
let validationErrorAmount = this.validationErrors.length;
|
|
9775
|
+
const failingFields = fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
|
|
9776
|
+
.filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path));
|
|
9777
|
+
// note that thougn these checks are on getinvalidfields they are needed for sub field checks
|
|
9778
|
+
failingFields
|
|
9746
9779
|
.forEach(casefield => {
|
|
9780
|
+
let errorPresent = true;
|
|
9781
|
+
validErrorFieldFound = true;
|
|
9747
9782
|
const fieldElement = FieldsUtils.isCaseFieldOfType(casefield, ['JudicialUser'])
|
|
9748
9783
|
? group.get(`${casefield.id}_judicialUserControl`)
|
|
9749
9784
|
: group.get(casefield.id);
|
|
@@ -9788,7 +9823,7 @@ class CaseEditPageComponent {
|
|
|
9788
9823
|
}
|
|
9789
9824
|
else if (fieldElement.invalid) {
|
|
9790
9825
|
if (casefield.isComplex()) {
|
|
9791
|
-
this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
|
|
9826
|
+
errorPresent = this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
|
|
9792
9827
|
}
|
|
9793
9828
|
else if (casefield.isCollection() && casefield.field_type.collection_field_type.type === 'Complex') {
|
|
9794
9829
|
const fieldArray = fieldElement;
|
|
@@ -9796,7 +9831,7 @@ class CaseEditPageComponent {
|
|
|
9796
9831
|
id = `${fieldArray['component']['collItems'][0].prefix}`;
|
|
9797
9832
|
}
|
|
9798
9833
|
fieldArray.controls.forEach((c) => {
|
|
9799
|
-
this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
|
|
9834
|
+
errorPresent = this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
|
|
9800
9835
|
});
|
|
9801
9836
|
}
|
|
9802
9837
|
else if (FieldsUtils.isCaseFieldOfType(casefield, ['FlagLauncher'])) {
|
|
@@ -9811,8 +9846,29 @@ class CaseEditPageComponent {
|
|
|
9811
9846
|
}
|
|
9812
9847
|
}
|
|
9813
9848
|
}
|
|
9849
|
+
else {
|
|
9850
|
+
validErrorFieldFound = false;
|
|
9851
|
+
}
|
|
9852
|
+
if (!errorPresent && this.validationErrors.length === validationErrorAmount) {
|
|
9853
|
+
// if no error messages have been added in internal field despite parent field failing
|
|
9854
|
+
this.validationErrors.push({ id: casefield.id, message: `A field that is causing an error is ${casefield.id} but it is not producing a valid error message. Please ensure all details are correct` });
|
|
9855
|
+
}
|
|
9814
9856
|
});
|
|
9857
|
+
if (!validErrorFieldFound) {
|
|
9858
|
+
path ? this.validationErrors.push({ id: path, message: `There is an internal issue with ${path} fields. The field that is causing the error cannot be determined but there is an error present` })
|
|
9859
|
+
: this.validationErrors.push({ id: null, message: `The field that is causing the error cannot be determined but there is an error present` });
|
|
9860
|
+
}
|
|
9861
|
+
else if (this.validationErrors.length === validationErrorAmount) {
|
|
9862
|
+
// if no error messages have been generated
|
|
9863
|
+
if (path) {
|
|
9864
|
+
return false;
|
|
9865
|
+
}
|
|
9866
|
+
else {
|
|
9867
|
+
this.validationErrors.push({ id: null, message: `The field that is causing the error cannot be determined but there is an error present. Please fill in more of the form` });
|
|
9868
|
+
}
|
|
9869
|
+
}
|
|
9815
9870
|
CaseEditPageComponent.scrollToTop();
|
|
9871
|
+
return true;
|
|
9816
9872
|
}
|
|
9817
9873
|
navigateToErrorElement(elementId) {
|
|
9818
9874
|
/* istanbul ignore else */
|
|
@@ -9837,7 +9893,7 @@ class CaseEditPageComponent {
|
|
|
9837
9893
|
CaseEditPageComponent.scrollToTop();
|
|
9838
9894
|
}
|
|
9839
9895
|
else {
|
|
9840
|
-
this.generateErrorMessage(this.
|
|
9896
|
+
this.generateErrorMessage(this.failingCaseFields);
|
|
9841
9897
|
}
|
|
9842
9898
|
}
|
|
9843
9899
|
if (!this.caseEdit.isSubmitting && !this.currentPageIsNotValid()) {
|
|
@@ -13490,6 +13546,9 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
13490
13546
|
if (documentHash) {
|
|
13491
13547
|
this.uploadedDocument.get(WriteDocumentFieldComponent.DOCUMENT_HASH).setValue(documentHash);
|
|
13492
13548
|
}
|
|
13549
|
+
if (this.uploadedDocument.get(WriteDocumentFieldComponent.UPLOAD_TIMESTAMP)) {
|
|
13550
|
+
this.uploadedDocument.removeControl(WriteDocumentFieldComponent.UPLOAD_TIMESTAMP);
|
|
13551
|
+
}
|
|
13493
13552
|
}
|
|
13494
13553
|
createDocumentFormWithValidator(document) {
|
|
13495
13554
|
let documentFormGroup = {
|
|
@@ -13497,6 +13556,12 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
13497
13556
|
document_binary_url: new FormControl(document.document_binary_url, Validators.required),
|
|
13498
13557
|
document_filename: new FormControl(document.document_filename, Validators.required)
|
|
13499
13558
|
};
|
|
13559
|
+
if (document.upload_timestamp && (typeof document.upload_timestamp === 'string')) {
|
|
13560
|
+
documentFormGroup = {
|
|
13561
|
+
...documentFormGroup,
|
|
13562
|
+
...{ upload_timestamp: new FormControl(document.upload_timestamp) }
|
|
13563
|
+
};
|
|
13564
|
+
}
|
|
13500
13565
|
documentFormGroup = this.secureModeOn ? {
|
|
13501
13566
|
...documentFormGroup,
|
|
13502
13567
|
...{ document_hash: new FormControl(document.document_hash) }
|
|
@@ -13509,6 +13574,12 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
13509
13574
|
document_binary_url: new FormControl(document.document_binary_url),
|
|
13510
13575
|
document_filename: new FormControl(document.document_filename)
|
|
13511
13576
|
};
|
|
13577
|
+
if (document.upload_timestamp && (typeof document.upload_timestamp === 'string')) {
|
|
13578
|
+
documentFormGroup = {
|
|
13579
|
+
...documentFormGroup,
|
|
13580
|
+
...{ upload_timestamp: new FormControl(document.upload_timestamp) }
|
|
13581
|
+
};
|
|
13582
|
+
}
|
|
13512
13583
|
documentFormGroup = this.secureModeOn ? {
|
|
13513
13584
|
...documentFormGroup,
|
|
13514
13585
|
...{ document_hash: new FormControl(document.document_hash) }
|
|
@@ -13516,23 +13587,31 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
13516
13587
|
this.uploadedDocument = this.registerControl(new FormGroup(documentFormGroup), true);
|
|
13517
13588
|
}
|
|
13518
13589
|
getErrorMessage(error) {
|
|
13519
|
-
|
|
13520
|
-
|
|
13521
|
-
|
|
13522
|
-
|
|
13523
|
-
|
|
13524
|
-
|
|
13525
|
-
|
|
13526
|
-
|
|
13527
|
-
|
|
13528
|
-
|
|
13529
|
-
|
|
13530
|
-
|
|
13531
|
-
|
|
13590
|
+
switch (error.status) {
|
|
13591
|
+
case 0:
|
|
13592
|
+
case 502:
|
|
13593
|
+
return WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE;
|
|
13594
|
+
case 422:
|
|
13595
|
+
{
|
|
13596
|
+
let errorMsg = WriteDocumentFieldComponent.ERROR_UPLOADING_FILE;
|
|
13597
|
+
if (error?.error) {
|
|
13598
|
+
const fullError = error.error;
|
|
13599
|
+
const start = fullError.indexOf('{');
|
|
13600
|
+
if (start >= 0) {
|
|
13601
|
+
const json = fullError.substring(start, fullError.length - 1).split('<EOL>').join('');
|
|
13602
|
+
const obj = JSON.parse(json);
|
|
13603
|
+
if (obj?.error) {
|
|
13604
|
+
errorMsg = obj.error;
|
|
13605
|
+
}
|
|
13606
|
+
}
|
|
13607
|
+
}
|
|
13608
|
+
return errorMsg;
|
|
13532
13609
|
}
|
|
13533
|
-
|
|
13610
|
+
case 429:
|
|
13611
|
+
return error?.error;
|
|
13612
|
+
default:
|
|
13613
|
+
return WriteDocumentFieldComponent.ERROR_UPLOADING_FILE;
|
|
13534
13614
|
}
|
|
13535
|
-
return errorMsg;
|
|
13536
13615
|
}
|
|
13537
13616
|
buildDocumentUploadData(selectedFile) {
|
|
13538
13617
|
const documentUpload = new FormData();
|
|
@@ -13584,9 +13663,11 @@ WriteDocumentFieldComponent.DOCUMENT_URL = 'document_url';
|
|
|
13584
13663
|
WriteDocumentFieldComponent.DOCUMENT_BINARY_URL = 'document_binary_url';
|
|
13585
13664
|
WriteDocumentFieldComponent.DOCUMENT_FILENAME = 'document_filename';
|
|
13586
13665
|
WriteDocumentFieldComponent.DOCUMENT_HASH = 'document_hash';
|
|
13666
|
+
WriteDocumentFieldComponent.UPLOAD_TIMESTAMP = 'upload_timestamp';
|
|
13587
13667
|
WriteDocumentFieldComponent.UPLOAD_ERROR_FILE_REQUIRED = 'File required';
|
|
13588
13668
|
WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE = 'Document upload facility is not available at the moment';
|
|
13589
13669
|
WriteDocumentFieldComponent.UPLOAD_WAITING_FILE_STATUS = 'Uploading...';
|
|
13670
|
+
WriteDocumentFieldComponent.ERROR_UPLOADING_FILE = 'Error Uploading File';
|
|
13590
13671
|
WriteDocumentFieldComponent.ɵfac = function WriteDocumentFieldComponent_Factory(t) { return new (t || WriteDocumentFieldComponent)(i0.ɵɵdirectiveInject(AbstractAppConfig), i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(DocumentManagementService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(FileUploadStateService), i0.ɵɵdirectiveInject(JurisdictionService)); };
|
|
13591
13672
|
WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteDocumentFieldComponent, selectors: [["ccd-write-document-field"]], viewQuery: function WriteDocumentFieldComponent_Query(rf, ctx) { if (rf & 1) {
|
|
13592
13673
|
i0.ɵɵviewQuery(_c0$Q, 5);
|
|
@@ -20934,10 +21015,10 @@ CaseFileViewFolderSelectorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent
|
|
|
20934
21015
|
i0.ɵɵtextInterpolate1("Where do you want to move \"", ctx.data.document.document_filename, "\" file?");
|
|
20935
21016
|
i0.ɵɵadvance(2);
|
|
20936
21017
|
i0.ɵɵproperty("ngForOf", ctx.currentCategories);
|
|
20937
|
-
} }, dependencies: [i4.NgForOf, i4.NgTemplateOutlet], styles: [":host{position:relative;display:block}.folders{margin-bottom:20px}.folder{display:none;border-top:1px solid #CCC;margin:0 0 -1px}.folder:last-child{border-bottom:1px solid #CCC}.folders>.folder{display:block}input:checked~.folder{display:block}.iconImg{position:relative;display:inline-block;height:28px}.folder>.folder{margin-left:20px}.folder label:before{top:3px}.folder label:after{top:13px}p{font-weight:700}button{margin-right:20px}.close{float:right;width:30px;height:30px;background:url(/assets/img/x.PNG) no-repeat center center;cursor:pointer}.cancel{cursor:pointer}.cdk-overlay-pane{overflow:auto}.cdk-overlay-pane::-webkit-scrollbar{width:7px}.cdk-overlay-pane::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.cdk-overlay-pane::-webkit-scrollbar-button{display:none}.cdk-overlay-pane::-webkit-scrollbar-track-piece{background:#EEE}.cdk-overlay-pane::-webkit-scrollbar-thumb{background:#CCC}\n"], encapsulation: 2 });
|
|
21018
|
+
} }, dependencies: [i4.NgForOf, i4.NgTemplateOutlet], styles: [":host{position:relative;display:block}.folders{margin-bottom:20px}.folder{display:none;border-top:1px solid #CCC;margin:0 0 -1px}.folder:last-child{border-bottom:1px solid #CCC}.folders>.folder{display:block}input:checked~.folder{display:block}.iconImg{position:relative;display:inline-block;height:28px}.folder>.folder{margin-left:20px}.folder label:before{top:3px}.folder label:after{top:13px}p{font-weight:700}button{margin-right:20px}.close{float:right;width:30px;height:30px;background:url(/assets/img/x.PNG) no-repeat center center;cursor:pointer}.cancel{cursor:pointer}.cdk-overlay-pane{overflow:auto;background:#fff}.cdk-overlay-pane::-webkit-scrollbar{width:7px}.cdk-overlay-pane::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.cdk-overlay-pane::-webkit-scrollbar-button{display:none}.cdk-overlay-pane::-webkit-scrollbar-track-piece{background:#EEE}.cdk-overlay-pane::-webkit-scrollbar-thumb{background:#CCC}\n"], encapsulation: 2 });
|
|
20938
21019
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderSelectorComponent, [{
|
|
20939
21020
|
type: Component,
|
|
20940
|
-
args: [{ selector: 'xui-case-file-view-folder-selector', encapsulation: ViewEncapsulation.None, template: "<div class=\"close\" (click)=\"cancel()\"></div>\n<h2 class=\"govuk-heading-l\">Move File</h2>\n<p>Where do you want to move \"{{ data.document.document_filename }}\" file?</p>\n<div class=\"folders govuk-radios govuk-radios--conditional\">\n <ng-container *ngFor=\"let cat of currentCategories\">\n <ng-container *ngTemplateOutlet=\"folder;context:{cat:cat,level:1}\"></ng-container>\n </ng-container>\n</div>\n<div class=\"govuk-button-group\">\n <button class=\"button button-primary\" type=\"button\" (click)=\"save()\">Save</button>\n <a (click)=\"cancel()\" class=\"cancel\">Cancel</a>\n</div>\n\n<ng-template #folder let-cat=\"cat\" let-level=\"level\">\n <div class=\"folder govuk-radios__item\">\n <input class=\"govuk-radios__input\" type=\"radio\" name=\"level-{{level}}\" [id]=\"cat.category_id\" (click)=\"handleChange($event)\" />\n <label class=\"govuk-label govuk-radios__label\" [for]=\"cat.category_id\">\n <img class=\"iconImg\" src=\"/assets/images/folder.png\" alt=\"Folder icon\" />\n {{ cat.category_name }}\n </label>\n <ng-container *ngFor=\"let subcat of cat.sub_categories\">\n <ng-container *ngTemplateOutlet=\"folder;context:{cat:subcat,level:level+1}\"></ng-container>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{position:relative;display:block}.folders{margin-bottom:20px}.folder{display:none;border-top:1px solid #CCC;margin:0 0 -1px}.folder:last-child{border-bottom:1px solid #CCC}.folders>.folder{display:block}input:checked~.folder{display:block}.iconImg{position:relative;display:inline-block;height:28px}.folder>.folder{margin-left:20px}.folder label:before{top:3px}.folder label:after{top:13px}p{font-weight:700}button{margin-right:20px}.close{float:right;width:30px;height:30px;background:url(/assets/img/x.PNG) no-repeat center center;cursor:pointer}.cancel{cursor:pointer}.cdk-overlay-pane{overflow:auto}.cdk-overlay-pane::-webkit-scrollbar{width:7px}.cdk-overlay-pane::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.cdk-overlay-pane::-webkit-scrollbar-button{display:none}.cdk-overlay-pane::-webkit-scrollbar-track-piece{background:#EEE}.cdk-overlay-pane::-webkit-scrollbar-thumb{background:#CCC}\n"] }]
|
|
21021
|
+
args: [{ selector: 'xui-case-file-view-folder-selector', encapsulation: ViewEncapsulation.None, template: "<div class=\"close\" (click)=\"cancel()\"></div>\n<h2 class=\"govuk-heading-l\">Move File</h2>\n<p>Where do you want to move \"{{ data.document.document_filename }}\" file?</p>\n<div class=\"folders govuk-radios govuk-radios--conditional\">\n <ng-container *ngFor=\"let cat of currentCategories\">\n <ng-container *ngTemplateOutlet=\"folder;context:{cat:cat,level:1}\"></ng-container>\n </ng-container>\n</div>\n<div class=\"govuk-button-group\">\n <button class=\"button button-primary\" type=\"button\" (click)=\"save()\">Save</button>\n <a (click)=\"cancel()\" class=\"cancel\">Cancel</a>\n</div>\n\n<ng-template #folder let-cat=\"cat\" let-level=\"level\">\n <div class=\"folder govuk-radios__item\">\n <input class=\"govuk-radios__input\" type=\"radio\" name=\"level-{{level}}\" [id]=\"cat.category_id\" (click)=\"handleChange($event)\" />\n <label class=\"govuk-label govuk-radios__label\" [for]=\"cat.category_id\">\n <img class=\"iconImg\" src=\"/assets/images/folder.png\" alt=\"Folder icon\" />\n {{ cat.category_name }}\n </label>\n <ng-container *ngFor=\"let subcat of cat.sub_categories\">\n <ng-container *ngTemplateOutlet=\"folder;context:{cat:subcat,level:level+1}\"></ng-container>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{position:relative;display:block}.folders{margin-bottom:20px}.folder{display:none;border-top:1px solid #CCC;margin:0 0 -1px}.folder:last-child{border-bottom:1px solid #CCC}.folders>.folder{display:block}input:checked~.folder{display:block}.iconImg{position:relative;display:inline-block;height:28px}.folder>.folder{margin-left:20px}.folder label:before{top:3px}.folder label:after{top:13px}p{font-weight:700}button{margin-right:20px}.close{float:right;width:30px;height:30px;background:url(/assets/img/x.PNG) no-repeat center center;cursor:pointer}.cancel{cursor:pointer}.cdk-overlay-pane{overflow:auto;background:#fff}.cdk-overlay-pane::-webkit-scrollbar{width:7px}.cdk-overlay-pane::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.cdk-overlay-pane::-webkit-scrollbar-button{display:none}.cdk-overlay-pane::-webkit-scrollbar-track-piece{background:#EEE}.cdk-overlay-pane::-webkit-scrollbar-thumb{background:#CCC}\n"] }]
|
|
20941
21022
|
}], function () { return [{ type: i1$3.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
20942
21023
|
type: Inject,
|
|
20943
21024
|
args: [MAT_LEGACY_DIALOG_DATA]
|
|
@@ -21274,9 +21355,10 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
|
|
|
21274
21355
|
i0.ɵɵelement(6, "br");
|
|
21275
21356
|
i0.ɵɵelementStart(7, "span", 17);
|
|
21276
21357
|
i0.ɵɵtext(8);
|
|
21358
|
+
i0.ɵɵpipe(9, "date");
|
|
21277
21359
|
i0.ɵɵelementEnd()();
|
|
21278
|
-
i0.ɵɵelementStart(
|
|
21279
|
-
i0.ɵɵlistener("changeFolderAction", function
|
|
21360
|
+
i0.ɵɵelementStart(10, "div", 18)(11, "ccd-case-file-view-folder-document-actions", 19);
|
|
21361
|
+
i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.triggerDocumentAction("changeFolder", node_r4)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r8 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r8.triggerDocumentAction("openInANewTab", node_r4)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r9 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r9.triggerDocumentAction("download", node_r4)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.triggerDocumentAction("print", node_r4)); });
|
|
21280
21362
|
i0.ɵɵelementEnd()()()();
|
|
21281
21363
|
} if (rf & 2) {
|
|
21282
21364
|
const node_r4 = ctx.$implicit;
|
|
@@ -21286,8 +21368,8 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
|
|
|
21286
21368
|
i0.ɵɵadvance(4);
|
|
21287
21369
|
i0.ɵɵtextInterpolate1(" ", node_r4.name, " ");
|
|
21288
21370
|
i0.ɵɵadvance(3);
|
|
21289
|
-
i0.ɵɵtextInterpolate(node_r4.upload_timestamp);
|
|
21290
|
-
i0.ɵɵadvance(
|
|
21371
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, node_r4.upload_timestamp, "dd MMM YYYY"));
|
|
21372
|
+
i0.ɵɵadvance(3);
|
|
21291
21373
|
i0.ɵɵproperty("allowMoving", ctx_r2.allowMoving);
|
|
21292
21374
|
} }
|
|
21293
21375
|
function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -21320,7 +21402,7 @@ function CaseFileViewFolderComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
21320
21402
|
i0.ɵɵelementStart(0, "div", 7);
|
|
21321
21403
|
i0.ɵɵtemplate(1, CaseFileViewFolderComponent_div_8_div_1_Template, 2, 0, "div", 8);
|
|
21322
21404
|
i0.ɵɵelementStart(2, "div")(3, "cdk-tree", 9);
|
|
21323
|
-
i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template,
|
|
21405
|
+
i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 12, 8, "cdk-nested-tree-node", 10);
|
|
21324
21406
|
i0.ɵɵtemplate(5, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template, 10, 6, "cdk-nested-tree-node", 11);
|
|
21325
21407
|
i0.ɵɵelementEnd()()();
|
|
21326
21408
|
} if (rf & 2) {
|
|
@@ -21391,10 +21473,11 @@ class CaseFileViewFolderComponent {
|
|
|
21391
21473
|
newDocumentTreeNode.name = node.category_name;
|
|
21392
21474
|
newDocumentTreeNode.type = DocumentTreeNodeType.FOLDER;
|
|
21393
21475
|
newDocumentTreeNode.children = [...this.generateTreeData(node.sub_categories), ...this.getDocuments(node.documents)];
|
|
21476
|
+
newDocumentTreeNode.category_order = node.category_order;
|
|
21394
21477
|
return [
|
|
21395
21478
|
...tree,
|
|
21396
21479
|
newDocumentTreeNode,
|
|
21397
|
-
];
|
|
21480
|
+
].sort((a, b) => a.category_order - b.category_order);
|
|
21398
21481
|
}, []);
|
|
21399
21482
|
}
|
|
21400
21483
|
getDocuments(documents) {
|
|
@@ -21407,7 +21490,7 @@ class CaseFileViewFolderComponent {
|
|
|
21407
21490
|
documentTreeNode.document_binary_url = document.document_binary_url;
|
|
21408
21491
|
documentTreeNode.attribute_path = document.attribute_path;
|
|
21409
21492
|
documentTreeNode.upload_timestamp = this.appConfig.getEnableCaseFileViewVersion1_1()
|
|
21410
|
-
&& document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY') : '';
|
|
21493
|
+
&& document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY HH:mm:ss') : '';
|
|
21411
21494
|
documentsToReturn.push(documentTreeNode);
|
|
21412
21495
|
});
|
|
21413
21496
|
return documentsToReturn;
|
|
@@ -21422,7 +21505,7 @@ class CaseFileViewFolderComponent {
|
|
|
21422
21505
|
documentTreeNode.document_binary_url = document.document_binary_url;
|
|
21423
21506
|
documentTreeNode.attribute_path = document.attribute_path;
|
|
21424
21507
|
documentTreeNode.upload_timestamp = this.appConfig.getEnableCaseFileViewVersion1_1()
|
|
21425
|
-
&& document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY') : '';
|
|
21508
|
+
&& document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY HH:mm:ss') : '';
|
|
21426
21509
|
documents.push(documentTreeNode);
|
|
21427
21510
|
});
|
|
21428
21511
|
const uncategorisedNode = new DocumentTreeNode();
|
|
@@ -21542,7 +21625,7 @@ CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE = 'Uncategorised docum
|
|
|
21542
21625
|
CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME = 'documentSearchFormControl';
|
|
21543
21626
|
CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS = 1;
|
|
21544
21627
|
CaseFileViewFolderComponent.ɵfac = function CaseFileViewFolderComponent_Factory(t) { return new (t || CaseFileViewFolderComponent)(i0.ɵɵdirectiveInject(WindowService), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(DocumentManagementService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(AbstractAppConfig)); };
|
|
21545
|
-
CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments", allowMoving: "allowMoving" }, outputs: { clickedDocument: "clickedDocument", moveDocument: "moveDocument" }, decls: 9, vars: 3, consts: [[1, "document-filter-container"], [1, "form-group", "document-filter", 3, "formGroup"], ["type", "search", "id", "document-search", "name", "documentSearchFormControl", "formControlName", "documentSearchFormControl", "placeholder", "Search by document name", 1, "form-control", "document-search"], [1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], ["class", "document-tree-container", 4, "ngIf"], [1, "document-tree-container"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-container__node document-tree-container__node--document", 4, "cdkTreeNodeDef"], ["class", "document-tree-container__node document-tree-container__folder", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-container__node", "document-tree-container__node--document"], [1, "node", 3, "click"], ["disabled", "", 1, "node__icon"], ["src", "/assets/img/case-file-view/case-file-view-document.svg", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-upload-timestamp"], [1, "node__document-options"], [3, "allowMoving", "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction"], [1, "document-tree-container__node", "document-tree-container__folder"], ["cdkTreeNodeToggle", "", 1, "node"], [1, "node__icon"], ["alt", "Folder icon", 1, "node__iconImg", 3, "src"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
21628
|
+
CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments", allowMoving: "allowMoving" }, outputs: { clickedDocument: "clickedDocument", moveDocument: "moveDocument" }, decls: 9, vars: 3, consts: [[1, "document-filter-container"], [1, "form-group", "document-filter", 3, "formGroup"], ["type", "search", "id", "document-search", "name", "documentSearchFormControl", "formControlName", "documentSearchFormControl", "placeholder", "Search by document name", "aria-label", "Search by document name", 1, "form-control", "document-search"], [1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], ["class", "document-tree-container", 4, "ngIf"], [1, "document-tree-container"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-container__node document-tree-container__node--document", 4, "cdkTreeNodeDef"], ["class", "document-tree-container__node document-tree-container__folder", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-container__node", "document-tree-container__node--document"], [1, "node", 3, "click"], ["disabled", "", 1, "node__icon"], ["src", "/assets/img/case-file-view/case-file-view-document.svg", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-upload-timestamp"], [1, "node__document-options"], [3, "allowMoving", "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction"], [1, "document-tree-container__node", "document-tree-container__folder"], ["cdkTreeNodeToggle", "", 1, "node"], [1, "node__icon"], ["alt", "Folder icon", 1, "node__iconImg", 3, "src"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
21546
21629
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
21547
21630
|
i0.ɵɵelement(2, "input", 2);
|
|
21548
21631
|
i0.ɵɵelementEnd()();
|
|
@@ -21560,10 +21643,10 @@ CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
21560
21643
|
i0.ɵɵtextInterpolate1("Documents (", ctx.documentCount, ")");
|
|
21561
21644
|
i0.ɵɵadvance(3);
|
|
21562
21645
|
i0.ɵɵproperty("ngIf", ctx.documentTreeData);
|
|
21563
|
-
} }, dependencies: [i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, CaseFileViewFolderSortComponent, CaseFileViewFolderDocumentActionsComponent], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #FFF;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
|
|
21646
|
+
} }, dependencies: [i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, CaseFileViewFolderSortComponent, CaseFileViewFolderDocumentActionsComponent, i4.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #FFF;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
|
|
21564
21647
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
|
|
21565
21648
|
type: Component,
|
|
21566
|
-
args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #FFF;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
|
|
21649
|
+
args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | date:\"dd MMM YYYY\"}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #FFF;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
|
|
21567
21650
|
}], function () { return [{ type: WindowService }, { type: i1$1.Router }, { type: DocumentManagementService }, { type: i1$3.MatLegacyDialog }, { type: AbstractAppConfig }]; }, { categoriesAndDocuments: [{
|
|
21568
21651
|
type: Input
|
|
21569
21652
|
}], allowMoving: [{
|
|
@@ -30875,7 +30958,7 @@ function CaseFullAccessViewComponent_ng_container_12_mat_tab_4_ng_template_2_Tem
|
|
|
30875
30958
|
const tab_r20 = i0.ɵɵnextContext().$implicit;
|
|
30876
30959
|
const ctx_r22 = i0.ɵɵnextContext(2);
|
|
30877
30960
|
i0.ɵɵclassMap(tab_r20.id);
|
|
30878
|
-
i0.ɵɵattribute("aria-
|
|
30961
|
+
i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(1, 4, "case viewer table"));
|
|
30879
30962
|
i0.ɵɵadvance(3);
|
|
30880
30963
|
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBindV(4, 6, i0.ɵɵpureFunction2(14, _c1$3, i0.ɵɵpipeBind1(5, 12, tab_r20), ctx_r22.formGroup.controls["data"])));
|
|
30881
30964
|
} }
|
|
@@ -31340,7 +31423,7 @@ CaseFullAccessViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
31340
31423
|
} }, styles: ["th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding:0}.case-viewer-controls[_ngcontent-%COMP%]{margin-top:47px;margin-bottom:20px}ccd-case-header[_ngcontent-%COMP%]{float:left;margin-right:10px}ccd-event-trigger[_ngcontent-%COMP%]{float:right}.case-viewer-label[_ngcontent-%COMP%]{min-width:300px;white-space:normal}.markdown[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin-bottom:0}"] });
|
|
31341
31424
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFullAccessViewComponent, [{
|
|
31342
31425
|
type: Component,
|
|
31343
|
-
args: [{ selector: 'ccd-case-full-access-view', template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'Something went wrong' | rpxTranslate}}\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>{{\"We're working to fix the problem. Try again shortly.\" | rpxTranslate}}</p>\n <p>\n <a href=\"get-help\" target=\"_blank\">\n {{\"Contact us\" | rpxTranslate}}</a> {{\"if you're still having problems.\" | rpxTranslate}}\n </p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'The callback data failed validation' | rpxTranslate}}\n </h2>\n <p>{{error.message | rpxTranslate}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message | rpxTranslate}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">{{'Print' | rpxTranslate}}</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\" (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\" *ngIf=\"activeCaseFlags && !caseFlagsExternalUser\">\n <div class=\"column-full\">\n <ccd-notification-banner [notificationBannerConfig]=\"notificationBannerConfig\" (linkClicked)=\"onLinkClicked($event)\">\n </ccd-notification-banner>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedIndexChange)=\"tabChanged($event)\" [disableRipple]=\"true\"\n [selectedIndex]=\"selectedTabIndex\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\" [attr.aria-
|
|
31426
|
+
args: [{ selector: 'ccd-case-full-access-view', template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'Something went wrong' | rpxTranslate}}\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>{{\"We're working to fix the problem. Try again shortly.\" | rpxTranslate}}</p>\n <p>\n <a href=\"get-help\" target=\"_blank\">\n {{\"Contact us\" | rpxTranslate}}</a> {{\"if you're still having problems.\" | rpxTranslate}}\n </p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'The callback data failed validation' | rpxTranslate}}\n </h2>\n <p>{{error.message | rpxTranslate}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message | rpxTranslate}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">{{'Print' | rpxTranslate}}</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\" (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\" *ngIf=\"activeCaseFlags && !caseFlagsExternalUser\">\n <div class=\"column-full\">\n <ccd-notification-banner [notificationBannerConfig]=\"notificationBannerConfig\" (linkClicked)=\"onLinkClicked($event)\">\n </ccd-notification-banner>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedIndexChange)=\"tabChanged($event)\" [disableRipple]=\"true\"\n [selectedIndex]=\"selectedTabIndex\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\" [attr.aria-label]=\"'case viewer table' | rpxTranslate\">\n <tbody>\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true : formGroup.controls['data']\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"caseFields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th id=\"case-viewer-field-label\" *ngIf=\"!isFieldToHaveNoLabel(field)\">\n <div class=\"case-viewer-label text-16\">\n {{field.label | rpxTranslate}}</div>\n </th>\n <td [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <th [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </th>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </tbody>\n </table>\n </ng-template>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of appendedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n </mat-tab-group>\n <router-outlet *ngIf=\"(prependedTabs && prependedTabs.length) || (appendedTabs && appendedTabs.length)\"></router-outlet>\n </ng-container>\n </div>\n</div>\n", styles: ["th{width:1%;white-space:nowrap;vertical-align:top}.compound-field th{padding:0}.case-viewer-controls{margin-top:47px;margin-bottom:20px}ccd-case-header{float:left;margin-right:10px}ccd-event-trigger{float:right}.case-viewer-label{min-width:300px;white-space:normal}.markdown h3{margin-bottom:0}\n"] }]
|
|
31344
31427
|
}], function () { return [{ type: i0.NgZone }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: NavigationNotifierService }, { type: OrderService }, { type: ActivityPollingService }, { type: i1$3.MatLegacyDialog }, { type: AlertService }, { type: DraftService }, { type: ErrorNotifierService }, { type: ConvertHrefToRouterService }, { type: i4.Location }, { type: i0.ChangeDetectorRef }, { type: SessionStorageService }, { type: i1.RpxTranslatePipe }]; }, { hasPrint: [{
|
|
31345
31428
|
type: Input
|
|
31346
31429
|
}], hasEventSelector: [{
|