@hmcts/ccd-case-ui-toolkit 5.0.33-angular11-upgrade → 5.0.36-prl-integration-merge-into-angular-11

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.
Files changed (109) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +1520 -287
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +1 -1
  6. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +23 -17
  7. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +1 -1
  8. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.js +72 -0
  9. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field.component.js +134 -0
  10. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.js +52 -0
  11. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.js +38 -0
  12. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.js +353 -0
  13. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.js +159 -0
  14. package/esm2015/lib/shared/components/palette/case-file-view/components/index.js +6 -0
  15. package/esm2015/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.js +2 -0
  16. package/esm2015/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.js +100 -0
  17. package/esm2015/lib/shared/components/palette/case-file-view/components/shared/index.js +2 -0
  18. package/esm2015/lib/shared/components/palette/case-file-view/index.js +4 -0
  19. package/esm2015/lib/shared/components/palette/case-link/components/link-cases/link-cases.component.js +9 -5
  20. package/esm2015/lib/shared/components/palette/case-link/components/write-linked-cases.component.js +1 -1
  21. package/esm2015/lib/shared/components/palette/case-link/services/linked-cases.service.js +5 -7
  22. package/esm2015/lib/shared/components/palette/index.js +2 -1
  23. package/esm2015/lib/shared/components/palette/palette.module.js +71 -15
  24. package/esm2015/lib/shared/components/palette/palette.service.js +19 -1
  25. package/esm2015/lib/shared/components/palette/utils/is-compound.pipe.js +2 -2
  26. package/esm2015/lib/shared/components/search-result/search-result.component.js +53 -46
  27. package/esm2015/lib/shared/domain/case-file-view/case-file-view-category.model.js +3 -0
  28. package/esm2015/lib/shared/domain/case-file-view/case-file-view-document.model.js +3 -0
  29. package/esm2015/lib/shared/domain/case-file-view/categories-and-documents.model.js +7 -0
  30. package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.js +6 -0
  31. package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.js +93 -0
  32. package/esm2015/lib/shared/domain/case-file-view/index.js +6 -0
  33. package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
  34. package/esm2015/lib/shared/domain/definition/jurisdiction.model.js +1 -1
  35. package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +2 -2
  36. package/esm2015/lib/shared/services/case-file-view/case-file-view.service.js +46 -0
  37. package/esm2015/lib/shared/services/case-file-view/index.js +2 -0
  38. package/esm2015/lib/shared/services/index.js +2 -1
  39. package/esm2015/lib/shared/services/jurisdiction/jurisdiction.service.js +4 -1
  40. package/esm2015/public-api.js +3 -1
  41. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +1351 -273
  42. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  43. package/lib/app.config.d.ts +5 -1
  44. package/lib/app.config.d.ts.map +1 -1
  45. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +2 -1
  46. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  47. package/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.d.ts +8 -0
  48. package/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.d.ts.map +1 -0
  49. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +33 -0
  50. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -0
  51. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.d.ts +17 -0
  52. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.d.ts.map +1 -0
  53. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.d.ts +13 -0
  54. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.d.ts.map +1 -0
  55. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +53 -0
  56. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -0
  57. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.d.ts +28 -0
  58. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.d.ts.map +1 -0
  59. package/lib/shared/components/palette/case-file-view/components/index.d.ts +6 -0
  60. package/lib/shared/components/palette/case-file-view/components/index.d.ts.map +1 -0
  61. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.d.ts +6 -0
  62. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.d.ts.map +1 -0
  63. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts +13 -0
  64. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts.map +1 -0
  65. package/lib/shared/components/palette/case-file-view/components/shared/index.d.ts +2 -0
  66. package/lib/shared/components/palette/case-file-view/components/shared/index.d.ts.map +1 -0
  67. package/lib/shared/components/palette/case-file-view/index.d.ts +4 -0
  68. package/lib/shared/components/palette/case-file-view/index.d.ts.map +1 -0
  69. package/lib/shared/components/palette/case-link/components/link-cases/link-cases.component.d.ts +5 -1
  70. package/lib/shared/components/palette/case-link/components/link-cases/link-cases.component.d.ts.map +1 -1
  71. package/lib/shared/components/palette/case-link/components/write-linked-cases.component.d.ts.map +1 -1
  72. package/lib/shared/components/palette/case-link/services/linked-cases.service.d.ts +1 -2
  73. package/lib/shared/components/palette/case-link/services/linked-cases.service.d.ts.map +1 -1
  74. package/lib/shared/components/palette/index.d.ts +1 -0
  75. package/lib/shared/components/palette/index.d.ts.map +1 -1
  76. package/lib/shared/components/palette/palette.module.d.ts +41 -29
  77. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  78. package/lib/shared/components/palette/palette.service.d.ts +2 -0
  79. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  80. package/lib/shared/domain/case-file-view/case-file-view-category.model.d.ts +9 -0
  81. package/lib/shared/domain/case-file-view/case-file-view-category.model.d.ts.map +1 -0
  82. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts +8 -0
  83. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts.map +1 -0
  84. package/lib/shared/domain/case-file-view/categories-and-documents.model.d.ts +12 -0
  85. package/lib/shared/domain/case-file-view/categories-and-documents.model.d.ts.map +1 -0
  86. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.d.ts +5 -0
  87. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.d.ts.map +1 -0
  88. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts +14 -0
  89. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +1 -0
  90. package/lib/shared/domain/case-file-view/index.d.ts +6 -0
  91. package/lib/shared/domain/case-file-view/index.d.ts.map +1 -0
  92. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  93. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  94. package/lib/shared/domain/definition/jurisdiction.model.d.ts.map +1 -1
  95. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
  96. package/lib/shared/services/case-file-view/case-file-view.service.d.ts +21 -0
  97. package/lib/shared/services/case-file-view/case-file-view.service.d.ts.map +1 -0
  98. package/lib/shared/services/case-file-view/index.d.ts +2 -0
  99. package/lib/shared/services/case-file-view/index.d.ts.map +1 -0
  100. package/lib/shared/services/index.d.ts +1 -0
  101. package/lib/shared/services/index.d.ts.map +1 -1
  102. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts +2 -1
  103. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/public-api.d.ts +2 -0
  106. package/public-api.d.ts.map +1 -1
  107. package/esm2015/lib/shared/components/palette/case-link/services/jurisdiction.service.js +0 -22
  108. package/lib/shared/components/palette/case-link/services/jurisdiction.service.d.ts +0 -12
  109. package/lib/shared/components/palette/case-link/services/jurisdiction.service.d.ts.map +0 -1
@@ -0,0 +1,134 @@
1
+ import { Component, ElementRef } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { fromEvent } from 'rxjs';
4
+ import { map, switchMap, takeUntil } from 'rxjs/operators';
5
+ import { CaseFileViewService, DocumentManagementService, LoadingService } from '../../../services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "../../../services";
9
+ function CaseFileViewFieldComponent_div_0_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelementStart(0, "div", 2);
11
+ i0.ɵɵelementStart(1, "h1", 3);
12
+ i0.ɵɵtext(2, "Sorry, there is a problem with the service");
13
+ i0.ɵɵelementEnd();
14
+ i0.ɵɵelementStart(3, "p", 4);
15
+ i0.ɵɵtext(4, "Try again later.");
16
+ i0.ɵɵelementEnd();
17
+ i0.ɵɵelementEnd();
18
+ } }
19
+ function CaseFileViewFieldComponent_div_1_ng_container_8_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementContainerStart(0);
21
+ i0.ɵɵelement(1, "mv-media-viewer", 11);
22
+ i0.ɵɵelementContainerEnd();
23
+ } if (rf & 2) {
24
+ const ctx_r2 = i0.ɵɵnextContext(2);
25
+ i0.ɵɵadvance(1);
26
+ i0.ɵɵproperty("url", ctx_r2.currentDocument.document_binary_url)("downloadFileName", ctx_r2.currentDocument.document_filename)("showToolbar", true)("contentType", ctx_r2.currentDocument.content_type)("enableAnnotations", true)("enableRedactions", true);
27
+ } }
28
+ function CaseFileViewFieldComponent_div_1_Template(rf, ctx) { if (rf & 1) {
29
+ const _r4 = i0.ɵɵgetCurrentView();
30
+ i0.ɵɵelementStart(0, "div");
31
+ i0.ɵɵelementStart(1, "h2", 5);
32
+ i0.ɵɵtext(2, "Case file");
33
+ i0.ɵɵelementEnd();
34
+ i0.ɵɵelementStart(3, "div", 6);
35
+ i0.ɵɵelementStart(4, "div", 7);
36
+ i0.ɵɵelementStart(5, "ccd-case-file-view-folder", 8);
37
+ i0.ɵɵlistener("clickedDocument", function CaseFileViewFieldComponent_div_1_Template_ccd_case_file_view_folder_clickedDocument_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.setMediaViewerFile($event); })("moveDocument", function CaseFileViewFieldComponent_div_1_Template_ccd_case_file_view_folder_moveDocument_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.moveDocument($event); });
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelement(6, "div", 9);
41
+ i0.ɵɵelementStart(7, "div", 10);
42
+ i0.ɵɵtemplate(8, CaseFileViewFieldComponent_div_1_ng_container_8_Template, 2, 6, "ng-container", 1);
43
+ i0.ɵɵelementEnd();
44
+ i0.ɵɵelementEnd();
45
+ i0.ɵɵelementEnd();
46
+ } if (rf & 2) {
47
+ const ctx_r1 = i0.ɵɵnextContext();
48
+ i0.ɵɵadvance(5);
49
+ i0.ɵɵproperty("categoriesAndDocuments", ctx_r1.categoriesAndDocuments$)("allowMoving", ctx_r1.allowMoving);
50
+ i0.ɵɵadvance(3);
51
+ i0.ɵɵproperty("ngIf", ctx_r1.currentDocument);
52
+ } }
53
+ export class CaseFileViewFieldComponent {
54
+ constructor(elementRef, route, caseFileViewService, documentManagementService, loadingService) {
55
+ this.elementRef = elementRef;
56
+ this.route = route;
57
+ this.caseFileViewService = caseFileViewService;
58
+ this.documentManagementService = documentManagementService;
59
+ this.loadingService = loadingService;
60
+ this.allowMoving = true;
61
+ this.getCategoriesAndDocumentsError = false;
62
+ }
63
+ ngOnInit() {
64
+ const cid = this.route.snapshot.paramMap.get(CaseFileViewFieldComponent.PARAM_CASE_ID);
65
+ this.categoriesAndDocuments$ = this.caseFileViewService.getCategoriesAndDocuments(cid);
66
+ this.categoriesAndDocumentsSubscription = this.categoriesAndDocuments$.subscribe({
67
+ next: data => {
68
+ this.caseVersion = data.case_version;
69
+ },
70
+ error: _ => this.getCategoriesAndDocumentsError = true
71
+ });
72
+ }
73
+ ngAfterViewInit() {
74
+ const slider = this.elementRef.nativeElement.querySelector('.slider');
75
+ const documentTreeContainer = this.elementRef.nativeElement.querySelector('.document-tree-container');
76
+ const mousedown$ = fromEvent(slider, 'mousedown');
77
+ const mousemove$ = fromEvent(document, 'mousemove');
78
+ const mouseup$ = fromEvent(document, 'mouseup');
79
+ const drag$ = mousedown$.pipe(switchMap((start) => {
80
+ const x = start.clientX;
81
+ const documentTreeContainerWidth = documentTreeContainer.getBoundingClientRect().width;
82
+ return mousemove$.pipe(map(move => {
83
+ move.preventDefault();
84
+ return {
85
+ dx: move.clientX - x,
86
+ documentTreeContainerWidth
87
+ };
88
+ }), takeUntil(mouseup$));
89
+ }));
90
+ drag$.subscribe(pos => {
91
+ const calculatedWidth = ((pos.documentTreeContainerWidth + pos.dx) * 100) / slider.parentElement.getBoundingClientRect().width;
92
+ documentTreeContainer.setAttribute('style', `width: ${calculatedWidth}%`);
93
+ });
94
+ }
95
+ setMediaViewerFile(document) {
96
+ const mediaViewerInfo = this.documentManagementService.getMediaViewerInfo({
97
+ document_binary_url: document.document_binary_url,
98
+ document_filename: document.document_filename
99
+ });
100
+ this.currentDocument = JSON.parse(mediaViewerInfo);
101
+ }
102
+ moveDocument(data) {
103
+ const cid = this.route.snapshot.paramMap.get(CaseFileViewFieldComponent.PARAM_CASE_ID);
104
+ const loadingToken = this.loadingService.register();
105
+ this.caseFileViewService.updateDocumentCategory(cid, this.caseVersion, data.document.attribute_path, data.newCategory).subscribe(_ => {
106
+ location.reload();
107
+ this.loadingService.unregister(loadingToken);
108
+ });
109
+ }
110
+ ngOnDestroy() {
111
+ if (this.categoriesAndDocumentsSubscription) {
112
+ this.categoriesAndDocumentsSubscription.unsubscribe();
113
+ }
114
+ }
115
+ }
116
+ CaseFileViewFieldComponent.PARAM_CASE_ID = 'cid';
117
+ CaseFileViewFieldComponent.ɵfac = function CaseFileViewFieldComponent_Factory(t) { return new (t || CaseFileViewFieldComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.CaseFileViewService), i0.ɵɵdirectiveInject(i2.DocumentManagementService), i0.ɵɵdirectiveInject(i2.LoadingService)); };
118
+ CaseFileViewFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFieldComponent, selectors: [["ccd-case-file-view-field"]], decls: 2, vars: 2, consts: [["class", "govuk-grid-column-two-thirds", 4, "ngIf"], [4, "ngIf"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-heading-xl"], [1, "govuk-body"], [1, "govuk-heading-l"], ["id", "case-file-view", 1, "govuk-form-group"], [1, "document-tree-container"], [1, "document-tree-container__tree", 3, "categoriesAndDocuments", "allowMoving", "clickedDocument", "moveDocument"], [1, "slider"], [1, "media-viewer-container"], [3, "url", "downloadFileName", "showToolbar", "contentType", "enableAnnotations", "enableRedactions"]], template: function CaseFileViewFieldComponent_Template(rf, ctx) { if (rf & 1) {
119
+ i0.ɵɵtemplate(0, CaseFileViewFieldComponent_div_0_Template, 5, 0, "div", 0);
120
+ i0.ɵɵtemplate(1, CaseFileViewFieldComponent_div_1_Template, 9, 3, "div", 1);
121
+ } if (rf & 2) {
122
+ i0.ɵɵproperty("ngIf", ctx.getCategoriesAndDocumentsError);
123
+ i0.ɵɵadvance(1);
124
+ i0.ɵɵproperty("ngIf", !ctx.getCategoriesAndDocumentsError);
125
+ } }, styles: ["#case-file-view[_ngcontent-%COMP%]{display:flex;border:2px solid #c9c9c9;height:100vh;position:relative}#case-file-view[_ngcontent-%COMP%] .document-tree-container[_ngcontent-%COMP%]{background-color:#faf8f8;width:30%;min-height:400px;min-width:10%}#case-file-view[_ngcontent-%COMP%] .slider[_ngcontent-%COMP%]{width:.2%;background-color:#6b6b6b}#case-file-view[_ngcontent-%COMP%] .slider[_ngcontent-%COMP%]:focus, #case-file-view[_ngcontent-%COMP%] .slider[_ngcontent-%COMP%]:hover{cursor:col-resize}#case-file-view[_ngcontent-%COMP%] .media-viewer-container[_ngcontent-%COMP%]{background-color:#dee0e2;flex:1 1 0;overflow:hidden}"] });
126
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFieldComponent, [{
127
+ type: Component,
128
+ args: [{
129
+ selector: 'ccd-case-file-view-field',
130
+ templateUrl: './case-file-view-field.component.html',
131
+ styleUrls: ['./case-file-view-field.component.scss'],
132
+ }]
133
+ }], function () { return [{ type: i0.ElementRef }, { type: i1.ActivatedRoute }, { type: i2.CaseFileViewService }, { type: i2.DocumentManagementService }, { type: i2.LoadingService }]; }, null); })();
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztJQ0xuRyw4QkFBaUY7SUFDL0UsNkJBQTZCO0lBQUEsMERBQTBDO0lBQUEsaUJBQUs7SUFDNUUsNEJBQXNCO0lBQUEsZ0NBQWdCO0lBQUEsaUJBQUk7SUFDNUMsaUJBQU07OztJQWtCQSw2QkFBc0M7SUFDcEMsc0NBTWtCO0lBQ3BCLDBCQUFlOzs7SUFQSSxlQUEyQztJQUEzQyxnRUFBMkMsOERBQUEscUJBQUEsb0RBQUEsMkJBQUEsMEJBQUE7Ozs7SUFsQnBFLDJCQUE2QztJQUMzQyw2QkFBNEI7SUFBQSx5QkFBUztJQUFBLGlCQUFL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QyxXQUFXLEVBQUUsQ0FBQztTQUN2RDtJQUNILENBQUM7O0FBOUVzQix3Q0FBYSxHQUFHLEtBQUssQ0FBQztvR0FEbEMsMEJBQTBCOytEQUExQiwwQkFBMEI7UUNadkMsMkVBR007UUFDTiwyRUE0Qk07O1FBaENBLHlEQUFvQztRQUlwQyxlQUFxQztRQUFyQywwREFBcUM7O3VGRFE5QiwwQkFBMEI7Y0FMdEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLFdBQVcsRUFBRSx1Q0FBdUM7Z0JBQ3BELFNBQVMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO2FBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzQW5kRG9jdW1lbnRzLCBEb2N1bWVudFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmlsZS12aWV3JztcbmltcG9ydCB7IENhc2VGaWxlVmlld1NlcnZpY2UsIERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsIExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1maWxlLXZpZXctZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZpbGUtdmlldy1maWVsZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRmlsZVZpZXdGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX0lEID0gJ2NpZCc7XG4gIHB1YmxpYyBhbGxvd01vdmluZyA9IHRydWU7XG4gIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzJDogT2JzZXJ2YWJsZTxDYXRlZ29yaWVzQW5kRG9jdW1lbnRzPjtcbiAgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGdldENhdGVnb3JpZXNBbmREb2N1bWVudHNFcnJvciA9IGZhbHNlO1xuICBwdWJsaWMgY3VycmVudERvY3VtZW50OiB7IGRvY3VtZW50X2JpbmFyeV91cmw6IHN0cmluZywgZG9jdW1lbnRfZmlsZW5hbWU6IHN0cmluZywgY29udGVudF90eXBlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjYXNlVmVyc2lvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FzZUZpbGVWaWV3U2VydmljZTogQ2FzZUZpbGVWaWV3U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBkb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlOiBEb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjaWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChDYXNlRmlsZVZpZXdGaWVsZENvbXBvbmVudC5QQVJBTV9DQVNFX0lEKTtcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHMkID0gdGhpcy5jYXNlRmlsZVZpZXdTZXJ2aWNlLmdldENhdGVnb3JpZXNBbmREb2N1bWVudHMoY2lkKTtcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24gPSB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHMkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBkYXRhID0+IHtcbiAgICAgICAgdGhpcy5jYXNlVmVyc2lvbiA9IGRhdGEuY2FzZV92ZXJzaW9uO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBfID0+IHRoaXMuZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yID0gdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzbGlkZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2xpZGVyJyk7XG4gICAgY29uc3QgZG9jdW1lbnRUcmVlQ29udGFpbmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmRvY3VtZW50LXRyZWUtY29udGFpbmVyJyk7XG5cbiAgICBjb25zdCBtb3VzZWRvd24kID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHNsaWRlciwgJ21vdXNlZG93bicpO1xuICAgIGNvbnN0IG1vdXNlbW92ZSQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKTtcbiAgICBjb25zdCBtb3VzZXVwJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNldXAnKTtcbiAgICBjb25zdCBkcmFnJCA9IG1vdXNlZG93biQucGlwZShcbiAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgKHN0YXJ0KSA9PiB7XG4gICAgICAgICAgY29uc3QgeCA9IHN0YXJ0LmNsaWVudFg7XG4gICAgICAgICAgY29uc3QgZG9jdW1lbnRUcmVlQ29udGFpbmVyV2lkdGggPSBkb2N1bWVudFRyZWVDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgICAgcmV0dXJuIG1vdXNlbW92ZSQucGlwZShtYXAobW92ZSA9PiB7XG4gICAgICAgICAgICBtb3ZlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkeDogbW92ZS5jbGllbnRYIC0geCxcbiAgICAgICAgICAgICAgZG9jdW1lbnRUcmVlQ29udGFpbmVyV2lkdGhcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKG1vdXNldXAkKSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuXG4gICAgZHJhZyQuc3Vic2NyaWJlKHBvcyA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkV2lkdGggPSAoKHBvcy5kb2N1bWVudFRyZWVDb250YWluZXJXaWR0aCArIHBvcy5keCkgKiAxMDApIC8gc2xpZGVyLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICBkb2N1bWVudFRyZWVDb250YWluZXIuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB3aWR0aDogJHtjYWxjdWxhdGVkV2lkdGh9JWApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldE1lZGlhVmlld2VyRmlsZShkb2N1bWVudDogRG9jdW1lbnRUcmVlTm9kZSk6IHZvaWQge1xuICAgIGNvbnN0IG1lZGlhVmlld2VySW5mbyA9IHRoaXMuZG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZS5nZXRNZWRpYVZpZXdlckluZm8oe1xuICAgICAgZG9jdW1lbnRfYmluYXJ5X3VybDogZG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybCxcbiAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZVxuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudERvY3VtZW50ID0gSlNPTi5wYXJzZShtZWRpYVZpZXdlckluZm8pO1xuICB9XG5cbiAgcHVibGljIG1vdmVEb2N1bWVudChkYXRhOmFueSkge1xuICAgIGNvbnN0IGNpZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50LlBBUkFNX0NBU0VfSUQpO1xuICAgIGNvbnN0IGxvYWRpbmdUb2tlbiA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcbiAgICB0aGlzLmNhc2VGaWxlVmlld1NlcnZpY2UudXBkYXRlRG9jdW1lbnRDYXRlZ29yeShjaWQsIHRoaXMuY2FzZVZlcnNpb24sIGRhdGEuZG9jdW1lbnQuYXR0cmlidXRlX3BhdGgsIGRhdGEubmV3Q2F0ZWdvcnkpLnN1YnNjcmliZShfID0+IHtcbiAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS51bnJlZ2lzdGVyKGxvYWRpbmdUb2tlbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yXCIgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCI+XG4gIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmcteGxcIj5Tb3JyeSwgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHNlcnZpY2U8L2gxPlxuICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5UcnkgYWdhaW4gbGF0ZXIuPC9wPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWdldENhdGVnb3JpZXNBbmREb2N1bWVudHNFcnJvclwiPlxuICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5DYXNlIGZpbGU8L2gyPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIGlkPVwiY2FzZS1maWxlLXZpZXdcIj5cbiAgICA8IS0tIERvY3VtZW50IHRyZWUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyXCI+XG4gICAgICA8Y2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlclxuICAgICAgICBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyX190cmVlXCJcbiAgICAgICAgW2NhdGVnb3JpZXNBbmREb2N1bWVudHNdPVwiY2F0ZWdvcmllc0FuZERvY3VtZW50cyRcIlxuICAgICAgICAoY2xpY2tlZERvY3VtZW50KT1cInNldE1lZGlhVmlld2VyRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgKG1vdmVEb2N1bWVudCk9XCJtb3ZlRG9jdW1lbnQoJGV2ZW50KVwiXG4gICAgICAgIFthbGxvd01vdmluZ109XCJhbGxvd01vdmluZ1wiXG4gICAgICA+PC9jY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU2xpZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzbGlkZXJcIj48L2Rpdj5cbiAgICA8IS0tIE1lZGlhIHZpZXdlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWVkaWEtdmlld2VyLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnREb2N1bWVudFwiPlxuICAgICAgICA8bXYtbWVkaWEtdmlld2VyIFt1cmxdPVwiY3VycmVudERvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkb3dubG9hZEZpbGVOYW1lXT1cImN1cnJlbnREb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb29sYmFyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50VHlwZV09XCJjdXJyZW50RG9jdW1lbnQuY29udGVudF90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlQW5ub3RhdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZVJlZGFjdGlvbnNdPVwidHJ1ZVwiPlxuICAgICAgICA8L212LW1lZGlhLXZpZXdlcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,52 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component";
4
+ export class CaseFileViewFolderDocumentActionsComponent {
5
+ constructor() {
6
+ this.isOpen = false;
7
+ this.changeFolderAction = new EventEmitter();
8
+ this.openInANewTabAction = new EventEmitter();
9
+ this.downloadAction = new EventEmitter();
10
+ this.printAction = new EventEmitter();
11
+ this.overlayMenuItems = [
12
+ { actionText: 'Open in a new tab', iconSrc: '/assets/img/case-file-view/document-menu/open_in_new.svg', actionFn: () => this.openInANewTabAction.emit() },
13
+ { actionText: 'Download', iconSrc: '/assets/img/case-file-view/document-menu/download.svg', actionFn: () => this.downloadAction.emit() },
14
+ { actionText: 'Print', iconSrc: '/assets/img/case-file-view/document-menu/print.svg', actionFn: () => this.printAction.emit() },
15
+ ];
16
+ }
17
+ ngOnInit() {
18
+ if (this.allowMoving) {
19
+ this.overlayMenuItems.unshift({ actionText: 'Change folder', iconSrc: '/assets/img/case-file-view/document-menu/open_with.svg', actionFn: () => this.changeFolderAction.emit() });
20
+ }
21
+ }
22
+ }
23
+ CaseFileViewFolderDocumentActionsComponent.ɵfac = function CaseFileViewFolderDocumentActionsComponent_Factory(t) { return new (t || CaseFileViewFolderDocumentActionsComponent)(); };
24
+ CaseFileViewFolderDocumentActionsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFolderDocumentActionsComponent, selectors: [["ccd-case-file-view-folder-document-actions"]], inputs: { allowMoving: "allowMoving" }, outputs: { changeFolderAction: "changeFolderAction", openInANewTabAction: "openInANewTabAction", downloadAction: "downloadAction", printAction: "printAction" }, decls: 3, vars: 2, consts: [[3, "menuItems", "isOpen", "isOpenChange"], ["trigger", ""], ["src", "/assets/img/case-file-view/document-menu/more_vert.svg", "alt", "More document options", 1, "actions-trigger-icon"]], template: function CaseFileViewFolderDocumentActionsComponent_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "ccd-case-file-view-overlay-menu", 0);
26
+ i0.ɵɵlistener("isOpenChange", function CaseFileViewFolderDocumentActionsComponent_Template_ccd_case_file_view_overlay_menu_isOpenChange_0_listener($event) { return ctx.isOpen = $event; });
27
+ i0.ɵɵelementContainerStart(1, 1);
28
+ i0.ɵɵelement(2, "img", 2);
29
+ i0.ɵɵelementContainerEnd();
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ i0.ɵɵproperty("menuItems", ctx.overlayMenuItems)("isOpen", ctx.isOpen);
33
+ } }, directives: [i1.CaseFileViewOverlayMenuComponent], styles: [".actions-trigger-icon[_ngcontent-%COMP%]{display:block;height:24px;margin-right:-4px}"] });
34
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderDocumentActionsComponent, [{
35
+ type: Component,
36
+ args: [{
37
+ selector: 'ccd-case-file-view-folder-document-actions',
38
+ templateUrl: './case-file-view-folder-document-actions.component.html',
39
+ styleUrls: ['./case-file-view-folder-document-actions.component.scss']
40
+ }]
41
+ }], function () { return []; }, { allowMoving: [{
42
+ type: Input
43
+ }], changeFolderAction: [{
44
+ type: Output
45
+ }], openInANewTabAction: [{
46
+ type: Output
47
+ }], downloadAction: [{
48
+ type: Output
49
+ }], printAction: [{
50
+ type: Output
51
+ }] }); })();
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9jYXNlLWZpbGUtdmlldy1mb2xkZXIvY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnMvY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9jYXNlLWZpbGUtdmlldy1mb2xkZXIvY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnMvY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUS9FLE1BQU0sT0FBTywwQ0FBMEM7SUFnQnJEO1FBZk8sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUlMLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMvQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWpELHFCQUFnQixHQUFrQztZQUN2RCxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsMERBQTBELEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6SixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLHVEQUF1RCxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsb0RBQW9ELEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUU7U0FDaEksQ0FBQztJQUVhLENBQUM7SUFFVCxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSx3REFBd0QsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNuTDtJQUNILENBQUM7O29JQXRCVSwwQ0FBMEM7K0VBQTFDLDBDQUEwQztRQ1J2RCwwREFHQztRQURDLDJMQUFtQjtRQUVuQixnQ0FBc0I7UUFDcEIseUJBQzhCO1FBQ2hDLDBCQUFlO1FBQ2pCLGlCQUFrQzs7UUFQaEMsZ0RBQThCLHNCQUFBOzt1RkRPbkIsMENBQTBDO2NBTHRELFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsNENBQTRDO2dCQUN0RCxXQUFXLEVBQUUseURBQXlEO2dCQUN0RSxTQUFTLEVBQUUsQ0FBQyx5REFBeUQsQ0FBQzthQUN2RTtzQ0FJaUIsV0FBVztrQkFBMUIsS0FBSztZQUVXLGtCQUFrQjtrQkFBbEMsTUFBTTtZQUNVLG1CQUFtQjtrQkFBbkMsTUFBTTtZQUNVLGNBQWM7a0JBQTlCLE1BQU07WUFDVSxXQUFXO2tCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3T3ZlcmxheU1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUtaXRlbS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1kb2N1bWVudC1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZpbGVWaWV3Rm9sZGVyRG9jdW1lbnRBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd01vdmluZzogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUZvbGRlckFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvcGVuSW5BTmV3VGFiQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGRvd25sb2FkQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHByaW50QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBvdmVybGF5TWVudUl0ZW1zOiBDYXNlRmlsZVZpZXdPdmVybGF5TWVudUl0ZW1bXSA9IFtcbiAgICB7IGFjdGlvblRleHQ6ICdPcGVuIGluIGEgbmV3IHRhYicsIGljb25TcmM6ICcvYXNzZXRzL2ltZy9jYXNlLWZpbGUtdmlldy9kb2N1bWVudC1tZW51L29wZW5faW5fbmV3LnN2ZycsIGFjdGlvbkZuOiAoKSA9PiB0aGlzLm9wZW5JbkFOZXdUYWJBY3Rpb24uZW1pdCgpIH0sXG4gICAgeyBhY3Rpb25UZXh0OiAnRG93bmxvYWQnLCBpY29uU3JjOiAnL2Fzc2V0cy9pbWcvY2FzZS1maWxlLXZpZXcvZG9jdW1lbnQtbWVudS9kb3dubG9hZC5zdmcnLCBhY3Rpb25GbjogKCkgPT4gdGhpcy5kb3dubG9hZEFjdGlvbi5lbWl0KCkgfSxcbiAgICB7IGFjdGlvblRleHQ6ICdQcmludCcsIGljb25TcmM6ICcvYXNzZXRzL2ltZy9jYXNlLWZpbGUtdmlldy9kb2N1bWVudC1tZW51L3ByaW50LnN2ZycsIGFjdGlvbkZuOiAoKSA9PiB0aGlzLnByaW50QWN0aW9uLmVtaXQoKSB9LFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dNb3ZpbmcpIHtcbiAgICAgIHRoaXMub3ZlcmxheU1lbnVJdGVtcy51bnNoaWZ0KHsgYWN0aW9uVGV4dDogJ0NoYW5nZSBmb2xkZXInLCBpY29uU3JjOiAnL2Fzc2V0cy9pbWcvY2FzZS1maWxlLXZpZXcvZG9jdW1lbnQtbWVudS9vcGVuX3dpdGguc3ZnJywgYWN0aW9uRm46ICgpID0+IHRoaXMuY2hhbmdlRm9sZGVyQWN0aW9uLmVtaXQoKSB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjY2QtY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51XG4gIFttZW51SXRlbXNdPVwib3ZlcmxheU1lbnVJdGVtc1wiXG4gIFsoaXNPcGVuKV09XCJpc09wZW5cIlxuPlxuICA8bmctY29udGFpbmVyIHRyaWdnZXI+XG4gICAgPGltZyBjbGFzcz1cImFjdGlvbnMtdHJpZ2dlci1pY29uXCIgc3JjPVwiL2Fzc2V0cy9pbWcvY2FzZS1maWxlLXZpZXcvZG9jdW1lbnQtbWVudS9tb3JlX3ZlcnQuc3ZnXCJcbiAgICAgIGFsdD1cIk1vcmUgZG9jdW1lbnQgb3B0aW9uc1wiPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvY2NkLWNhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudT5cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Component, EventEmitter, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component";
4
+ export class CaseFileViewFolderSortComponent {
5
+ constructor() {
6
+ this.isOpen = false;
7
+ this.sortAscending = new EventEmitter();
8
+ this.sortDescending = new EventEmitter();
9
+ this.overlayMenuItems = [
10
+ { actionText: 'A to Z ascending', iconSrc: '/assets/img/sort/sort-down-arrow.svg', actionFn: () => this.sortAscending.emit() },
11
+ { actionText: 'Z to A descending', iconSrc: '/assets/img/sort/sort-up-arrow.svg', actionFn: () => this.sortDescending.emit() },
12
+ ];
13
+ }
14
+ }
15
+ CaseFileViewFolderSortComponent.ɵfac = function CaseFileViewFolderSortComponent_Factory(t) { return new (t || CaseFileViewFolderSortComponent)(); };
16
+ CaseFileViewFolderSortComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFolderSortComponent, selectors: [["ccd-case-file-view-folder-sort"]], outputs: { sortAscending: "sortAscending", sortDescending: "sortDescending" }, decls: 3, vars: 3, consts: [[3, "title", "menuItems", "isOpen", "isOpenChange"], ["trigger", ""], ["src", "/assets/img/sort/sort-arrows.svg", "alt", "Sort Arrows", 1, "sort-button-icon"]], template: function CaseFileViewFolderSortComponent_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelementStart(0, "ccd-case-file-view-overlay-menu", 0);
18
+ i0.ɵɵlistener("isOpenChange", function CaseFileViewFolderSortComponent_Template_ccd_case_file_view_overlay_menu_isOpenChange_0_listener($event) { return ctx.isOpen = $event; });
19
+ i0.ɵɵelementContainerStart(1, 1);
20
+ i0.ɵɵelement(2, "img", 2);
21
+ i0.ɵɵelementContainerEnd();
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ i0.ɵɵproperty("title", "Sort documents by name")("menuItems", ctx.overlayMenuItems)("isOpen", ctx.isOpen);
25
+ } }, directives: [i1.CaseFileViewOverlayMenuComponent], styles: [".sort-button-icon[_ngcontent-%COMP%]{display:block;height:20px;margin-right:-2px}"] });
26
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderSortComponent, [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'ccd-case-file-view-folder-sort',
30
+ templateUrl: './case-file-view-folder-sort.component.html',
31
+ styleUrls: ['./case-file-view-folder-sort.component.scss']
32
+ }]
33
+ }], function () { return []; }, { sortAscending: [{
34
+ type: Output
35
+ }], sortDescending: [{
36
+ type: Output
37
+ }] }); })();
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9jYXNlLWZpbGUtdmlldy1mb2xkZXIvY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQvY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9jYXNlLWZpbGUtdmlldy1mb2xkZXIvY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQvY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRaEUsTUFBTSxPQUFPLCtCQUErQjtJQVUxQztRQVRPLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFTCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDekMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXBELHFCQUFnQixHQUFrQztZQUN2RCxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUgsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFO1NBQy9ILENBQUM7SUFDYyxDQUFDOzs4R0FWTiwrQkFBK0I7b0VBQS9CLCtCQUErQjtRQ1I1QywwREFJQztRQURDLGdMQUFtQjtRQUVuQixnQ0FBc0I7UUFDcEIseUJBQXVGO1FBQ3pGLDBCQUFlO1FBQ2pCLGlCQUFrQzs7UUFQaEMsZ0RBQWtDLG1DQUFBLHNCQUFBOzt1RkRPdkIsK0JBQStCO2NBTDNDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO2dCQUMxQyxXQUFXLEVBQUUsNkNBQTZDO2dCQUMxRCxTQUFTLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQzthQUMzRDtzQ0FJa0IsYUFBYTtrQkFBN0IsTUFBTTtZQUNVLGNBQWM7a0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdPdmVybGF5TWVudUl0ZW0gfSBmcm9tICcuLi8uLi9zaGFyZWQvY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51L2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS1pdGVtLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRmlsZVZpZXdGb2xkZXJTb3J0Q29tcG9uZW50IHtcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc29ydEFzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgb3ZlcmxheU1lbnVJdGVtczogQ2FzZUZpbGVWaWV3T3ZlcmxheU1lbnVJdGVtW10gPSBbXG4gICAgeyBhY3Rpb25UZXh0OiAnQSB0byBaIGFzY2VuZGluZycsIGljb25TcmM6ICcvYXNzZXRzL2ltZy9zb3J0L3NvcnQtZG93bi1hcnJvdy5zdmcnLCBhY3Rpb25GbjogKCkgPT4gdGhpcy5zb3J0QXNjZW5kaW5nLmVtaXQoKSB9LFxuICAgIHsgYWN0aW9uVGV4dDogJ1ogdG8gQSBkZXNjZW5kaW5nJywgaWNvblNyYzogJy9hc3NldHMvaW1nL3NvcnQvc29ydC11cC1hcnJvdy5zdmcnLCBhY3Rpb25GbjogKCkgPT4gdGhpcy5zb3J0RGVzY2VuZGluZy5lbWl0KCkgfSxcbiAgXTtcbiAgY29uc3RydWN0b3IoKSB7IH1cbn1cbiIsIjxjY2QtY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51XG4gIFt0aXRsZV09XCInU29ydCBkb2N1bWVudHMgYnkgbmFtZSdcIlxuICBbbWVudUl0ZW1zXT1cIm92ZXJsYXlNZW51SXRlbXNcIlxuICBbKGlzT3BlbildPVwiaXNPcGVuXCJcbj5cbiAgPG5nLWNvbnRhaW5lciB0cmlnZ2VyPlxuICAgIDxpbWcgY2xhc3M9XCJzb3J0LWJ1dHRvbi1pY29uXCIgc3JjPVwiL2Fzc2V0cy9pbWcvc29ydC9zb3J0LWFycm93cy5zdmdcIiBhbHQ9XCJTb3J0IEFycm93c1wiPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvY2NkLWNhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudT5cbiJdfQ==