@valtimo/dossier-management 11.1.2 → 11.2.0
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/esm2022/lib/components/dossier-management-assignee/dossier-management-assignee.component.mjs +5 -5
- package/esm2022/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.mjs +56 -27
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +13 -74
- package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +17 -13
- package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.mjs +152 -0
- package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.mjs +48 -0
- package/esm2022/lib/components/dossier-management-link-process/dossier-management-link-process.component.mjs +3 -3
- package/esm2022/lib/components/dossier-management-list/dossier-management-list.component.mjs +47 -30
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +45 -43
- package/esm2022/lib/components/dossier-management-processes/dossier-management-processes.component.mjs +110 -0
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +67 -58
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.mjs +1 -1
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-tabs.component.mjs +14 -27
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs +167 -111
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.constants.mjs +23 -0
- package/esm2022/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.mjs +17 -0
- package/esm2022/lib/dossier-management.module.mjs +48 -9
- package/esm2022/lib/models/tab.enum.mjs +3 -1
- package/esm2022/lib/services/dossier-detail.service.mjs +84 -0
- package/esm2022/lib/services/dossier-export.service.mjs +39 -0
- package/esm2022/lib/services/dossier-import.service.mjs +38 -0
- package/esm2022/lib/services/index.mjs +3 -1
- package/esm2022/lib/services/tab.service.mjs +2 -2
- package/fesm2022/valtimo-dossier-management.mjs +1174 -654
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/lib/components/dossier-management-assignee/dossier-management-assignee.component.d.ts +1 -1
- package/lib/components/dossier-management-assignee/dossier-management-assignee.component.d.ts.map +1 -1
- package/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.d.ts +13 -10
- package/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts +7 -22
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts +3 -1
- package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.d.ts +40 -0
- package/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.d.ts.map +1 -0
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.d.ts +15 -0
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.d.ts.map +1 -0
- package/lib/components/dossier-management-list/dossier-management-list.component.d.ts +16 -19
- package/lib/components/dossier-management-list/dossier-management-list.component.d.ts.map +1 -1
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts +14 -11
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +1 -1
- package/lib/components/dossier-management-processes/dossier-management-processes.component.d.ts +29 -0
- package/lib/components/dossier-management-processes/dossier-management-processes.component.d.ts.map +1 -0
- package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts +14 -13
- package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +1 -1
- package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts +3 -2
- package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts +42 -30
- package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/dossier-management-upload.constants.d.ts +15 -0
- package/lib/components/dossier-management-upload/dossier-management-upload.constants.d.ts.map +1 -0
- package/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.d.ts +9 -0
- package/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.d.ts.map +1 -0
- package/lib/dossier-management.module.d.ts +13 -9
- package/lib/dossier-management.module.d.ts.map +1 -1
- package/lib/models/tab.enum.d.ts +2 -0
- package/lib/models/tab.enum.d.ts.map +1 -1
- package/lib/services/dossier-detail.service.d.ts +30 -0
- package/lib/services/dossier-detail.service.d.ts.map +1 -0
- package/lib/services/dossier-export.service.d.ts +14 -0
- package/lib/services/dossier-export.service.d.ts.map +1 -0
- package/lib/services/dossier-import.service.d.ts +14 -0
- package/lib/services/dossier-import.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/tab.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-dossier-management.mjs","sources":["../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/models/list-column.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/tab.enum.ts","../../../../projects/valtimo/dossier-management/src/lib/models/index.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-link-process/dossier-management-link-process.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-link-process/dossier-management-link-process.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.html","../../../../projects/valtimo/dossier-management/src/lib/dossier-management-routing.module.ts","../../../../projects/valtimo/dossier-management/src/lib/dossier-management.module.ts","../../../../projects/valtimo/dossier-management/src/public-api.ts","../../../../projects/valtimo/dossier-management/src/valtimo-dossier-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {DocumentService, CaseSettings} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-assignee',\n templateUrl: './dossier-management-assignee.component.html',\n styleUrls: ['./dossier-management-assignee.component.css'],\n})\nexport class DossierManagementAssigneeComponent {\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || '')\n );\n\n readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.documentDefinitionName$),\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettingsForManagement(documentDefinitionName)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private route: ActivatedRoute\n ) {\n this.disabled$ = new BehaviorSubject<boolean>(false);\n }\n\n updateCaseSettings(caseSettings: CaseSettings, documentDefinitionName: string): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(documentDefinitionName, caseSettings)\n .subscribe(\n () => {\n this.enableInput();\n this.refreshSettings();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n disableInput(): void {\n this.disabled$.next(true);\n }\n\n enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n toggleAssignee(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: !currentSettings.canHaveAssignee,\n autoAssignTasks: currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n\n toggleTaskAssignment(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<h2 class=\"mb-4 mt-6\">{{ 'dossierManagement.toggleAssignee.title' | translate }}</h2>\n\n<ng-container\n *ngIf=\"{\n currentValue: currentValue$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs.currentValue.canHaveAssignee\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleAssignee(obs.currentValue, obs.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAssignee.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n <ng-container *ngIf=\"obs.currentValue.canHaveAssignee\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs.currentValue.autoAssignTasks\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleTaskAssignment(obs.currentValue, obs.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAutoAssignTasks.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {\n DocumentService,\n ProcessDocumentDefinitionRequest,\n ProcessDocumentDefinition,\n DocumentDefinition,\n} from '@valtimo/document';\nimport {ProcessService, ProcessDefinition} from '@valtimo/process';\nimport {ToastrService} from 'ngx-toastr';\nimport {ModalComponent} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-management-connect-modal',\n templateUrl: './dossier-management-connect-modal.component.html',\n styleUrls: ['./dossier-management-connect-modal.component.scss'],\n})\nexport class DossierManagementConnectModalComponent implements OnInit {\n public documentDefinition: DocumentDefinition | null = null;\n public processDefinitions: ProcessDefinition[];\n public newDocumentProcessDefinition: ProcessDefinition | null = null;\n public newDocumentProcessDefinitionInit = true;\n public newDocumentProcessDefinitionStartableByUser = false;\n public processDocumentDefinitionExists: any = {};\n @Output() public reloadProcessDocumentDefinitions = new EventEmitter<any>();\n @ViewChild('dossierConnectModal') modal: ModalComponent;\n\n constructor(\n private processService: ProcessService,\n private documentService: DocumentService,\n private toasterService: ToastrService\n ) {}\n\n loadProcessDocumentDefinitions() {\n this.processDocumentDefinitionExists = {};\n this.documentService\n .findProcessDocumentDefinitions(this.documentDefinition.id.name)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n processDocumentDefinitions.forEach(\n (processDocumentDefinition: ProcessDocumentDefinition) => {\n this.processDocumentDefinitionExists[\n processDocumentDefinition.id.processDefinitionKey\n ] = true;\n }\n );\n });\n }\n\n loadProcessDefinitions() {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n ngOnInit() {\n this.loadProcessDefinitions();\n }\n\n openModal(dossier: DocumentDefinition) {\n this.documentDefinition = dossier;\n this.newDocumentProcessDefinition = null;\n this.newDocumentProcessDefinitionInit = true;\n this.newDocumentProcessDefinitionStartableByUser = false;\n this.loadProcessDocumentDefinitions();\n this.modal.show();\n }\n\n submit() {\n const request: ProcessDocumentDefinitionRequest = {\n canInitializeDocument: this.newDocumentProcessDefinitionInit,\n startableByUser: this.newDocumentProcessDefinitionStartableByUser,\n documentDefinitionName: this.documentDefinition.id.name,\n processDefinitionKey: this.newDocumentProcessDefinition.key,\n };\n this.documentService.createProcessDocumentDefinition(request).subscribe(\n () => {\n this.toasterService.success('Successfully added new process document definition');\n this.reloadProcessDocumentDefinitions.emit();\n },\n err => {\n this.toasterService.error('Failed to add new process document definition');\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #dossierConnectModal\n elementId=\"dossierConnectModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"Connect document definition to process definition\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <p>\n {{ 'Select process definition for document definition' | translate }}\n <strong>{{ documentDefinition.id.name }} *</strong>\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"newDocumentProcessDefinition\">\n <option [ngValue]=\"null\">{{ 'dossierManagement.selectProcessDef' | translate }}</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [disabled]=\"processDocumentDefinitionExists[processDefinition.key]\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n </div>\n <p>\n {{ 'Select options for the selected process' | translate }}\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionInit\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline ml-2 pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionStartableByUser\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!newDocumentProcessDefinition\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype ListColumnModal = 'create' | 'edit';\n\nexport {ListColumnModal};\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n CASE = 'case',\n SEARCH = 'search',\n LIST = 'list',\n TABS = 'tabs',\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './list-column.model';\nexport * from './tab.enum';\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CASE_TAB_TOKEN, CaseTabConfig, DefaultTabs} from '@valtimo/dossier';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\n\nimport {TabEnum} from '../models/tab.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n public configuredTabKeys: string[];\n\n private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.CASE);\n public get currentTab$(): Observable<TabEnum> {\n return this._currentTab$.asObservable();\n }\n public set currentTab(tab: TabEnum) {\n this._currentTab$.next(tab);\n }\n\n private _configuredContentKeys$ = new BehaviorSubject<string[]>([]);\n public get configuredContentKeys$(): Observable<string[]> {\n return this._configuredContentKeys$.asObservable();\n }\n public set configuredContentKeys(value: string[]) {\n this._configuredContentKeys$.next(value);\n }\n\n public readonly formDefinitions$: Observable<ListItem[]> = this.formService\n .getAllFormDefinitions()\n .pipe(\n map((formDefinitions: FormDefinitionOption[]) =>\n formDefinitions.map((formDefinition: FormDefinitionOption) => ({\n contentKey: formDefinition.name,\n content: formDefinition.name,\n selected: false,\n }))\n )\n );\n\n public readonly customComponentKeys$ = new BehaviorSubject<ListItem[]>(\n !this.caseTabConfig\n ? []\n : Object.keys(this.caseTabConfig).map((contentKey: string) => ({\n contentKey,\n content: contentKey,\n selected: false,\n }))\n );\n\n public readonly defaultTabs$: Observable<ListItem[]> = this.translateService.stream('key').pipe(\n map(() =>\n Object.values(DefaultTabs).map((key: string) => ({\n contentKey: key,\n content: this.translateService.instant(`dossier.tabs.${key}`),\n selected: false,\n }))\n )\n );\n\n public readonly disableAddTabs$: Observable<{\n standard: boolean;\n custom: boolean;\n formIO: boolean;\n }> = combineLatest([\n this.configuredContentKeys$,\n this.formDefinitions$,\n this.defaultTabs$,\n this.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => ({\n standard: defaultTabs.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n custom:\n !customComponentKeys.length ||\n customComponentKeys.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n formIO:\n !formDefinitions.length ||\n formDefinitions.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n }))\n );\n\n constructor(\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n private readonly formService: FormService,\n private readonly translateService: TranslateService\n ) {}\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\n\n@Injectable()\nexport class TabManagementService {\n private _valtimoEndpointUri: string;\n private _caseDefinitionId: string;\n\n public readonly tabs$ = new BehaviorSubject<ApiTabItem[]>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public loadTabs(): void {\n this.loading$.next(true);\n this.getTabList()\n .pipe(take(1))\n .subscribe({\n next: (items: ApiTabItem[]) => {\n this.tabs$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public dispatchAction(actionResult: Observable<ApiTabItem | ApiTabItem[] | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n this.tabs$.next([]);\n }),\n switchMap((result: ApiTabItem | ApiTabItem[] | null) =>\n Array.isArray(result) ? of(result) : this.getTabList()\n ),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (tabs: ApiTabItem[]) => {\n this.loading$.next(false);\n this.tabs$.next(tabs);\n },\n error: error => {\n console.log(error);\n },\n });\n }\n\n public addTab(tab: Partial<ApiTabItem>): Observable<ApiTabItem> {\n return this.http.post<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n this.getTabDto(tab)\n );\n }\n\n public deleteTab(tabKey: string): Observable<null> {\n return this.http.delete<null>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`\n );\n }\n\n public editTab(tab: Partial<ApiTabItem>, tabKey: string): Observable<ApiTabItem> {\n return this.http.put<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`,\n this.getTabDto(tab)\n );\n }\n\n public editTabsOrder(tabList: ApiTabItem[]): Observable<ApiTabItem[]> {\n return this.http.put<ApiTabItem[]>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n tabList\n );\n }\n\n public setCaseDefinitionId(caseDefinitionId: string): void {\n this._caseDefinitionId = caseDefinitionId;\n }\n\n private getTabList(): Observable<ApiTabItem[]> {\n return this.http.get<ApiTabItem[]>(`${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`);\n }\n\n private getTabDto(tab: Partial<ApiTabItem>): Partial<ApiTabItem> {\n if (tab.name === '') {\n delete tab.name;\n }\n\n return tab;\n }\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab.service';\nexport * from './tab-management.service';\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, ViewChild} from '@angular/core';\nimport {\n DocumentService,\n DocumentDefinition,\n UndeployDocumentDefinitionResult,\n} from '@valtimo/document';\nimport {MenuService, ModalComponent} from '@valtimo/components';\nimport {ToastrService} from 'ngx-toastr';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-remove-modal',\n templateUrl: './dossier-management-remove-modal.component.html',\n styleUrls: ['./dossier-management-remove-modal.component.scss'],\n})\nexport class DossierManagementRemoveModalComponent {\n public documentDefinition: DocumentDefinition | null = null;\n public errors: string[] = [];\n @ViewChild('documentDefinitionRemoveModal') modal: ModalComponent;\n\n constructor(\n private documentService: DocumentService,\n private toasterService: ToastrService,\n private router: Router,\n private translateService: TranslateService,\n private menuService: MenuService\n ) {}\n\n openModal(documentDefinition: DocumentDefinition) {\n this.documentDefinition = documentDefinition;\n this.modal.show();\n }\n\n removeDocumentDefinition() {\n this.documentService\n .removeDocumentDefinitionForManagement(this.documentDefinition.id.name)\n .subscribe(\n () => {\n this.menuService.reload();\n this.router.navigate(['/dossier-management']);\n this.toasterService.success(\n this.translateService.instant('remove-document-definition-success')\n );\n },\n (result: UndeployDocumentDefinitionResult) => {\n this.errors = result.errors;\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #documentDefinitionRemoveModal\n elementId=\"documentDefinitionRemoveModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"{{ 'Remove document definition' | translate }}\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <div class=\"alert alert-contrast alert-danger mt-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div\n class=\"message\"\n [innerHTML]=\"'remove-document-definition-confirmation' | translate\"\n ></div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n </div>\n <div footer>\n <button (click)=\"removeDocumentDefinition()\" class=\"btn btn-primary\" data-dismiss=\"modal\">\n {{ 'remove-document-definition-confirmation-button' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnInit} from '@angular/core';\nimport {ConfigService, UploadProvider, ValtimoConfig} from '@valtimo/config';\nimport {BehaviorSubject, map, Observable} from 'rxjs';\nimport {SelectItem} from '@valtimo/components';\nimport {ProcessService} from '@valtimo/process';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService} from '@valtimo/document';\n\n@Component({\n selector: 'valtimo-dossier-management-link-process',\n templateUrl: './dossier-management-link-process.component.html',\n styleUrls: ['./dossier-management-link-process.component.scss'],\n})\nexport class DossierManagementLinkProcessComponent implements OnInit {\n documentenApiUploadProvider!: boolean;\n documentDefinitionName: string | null = null;\n\n readonly selectionId$ = new BehaviorSubject<string>('');\n readonly processItems$: Observable<Array<SelectItem>> = this.processService\n .getProcessDefinitions()\n .pipe(\n map(definitions => definitions.filter(definition => !!definition?.key) || []),\n map(processes => processes.map(process => ({text: process?.name || '-', id: process.key})))\n );\n\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService\n ) {\n this.setDocumentenApiUploaderProvider(configService.config);\n this.documentDefinitionName = this.route.snapshot.paramMap.get('name');\n }\n\n ngOnInit(): void {\n if (this.documentenApiUploadProvider) {\n this.getDefaultSelection();\n }\n }\n\n selectProcess(processDefinitionKey: string): void {\n this.disabled$.next(true);\n const currentSelectionId = this.selectionId$.getValue();\n if (processDefinitionKey && processDefinitionKey !== currentSelectionId) {\n this.disabled$.next(true);\n this.documentService\n .updateLinkedUploadProcess(this.documentDefinitionName, processDefinitionKey)\n .subscribe(processLink => {\n this.selectionId$.next(processLink.processDefinitionKey);\n this.disabled$.next(false);\n });\n } else if (!processDefinitionKey) {\n this.documentService.deleteLinkedUploadProcess(this.documentDefinitionName).subscribe(() => {\n this.disabled$.next(false);\n });\n }\n }\n\n private setDocumentenApiUploaderProvider(config: ValtimoConfig): void {\n this.documentenApiUploadProvider = config.uploadProvider === UploadProvider.DOCUMENTEN_API;\n }\n\n private getDefaultSelection(): void {\n this.documentService\n .getLinkedUploadProcess(this.documentDefinitionName)\n .subscribe(linkedUploadProcess => {\n if (linkedUploadProcess) {\n this.selectionId$.next(linkedUploadProcess.processDefinitionKey);\n }\n });\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"documentenApiUploadProvider\">\n <h2 class=\"mb-4 mt-6\">{{ 'dossierManagement.linkProcess.title' | translate }}</h2>\n <v-paragraph [margin]=\"true\">{{\n 'dossierManagement.linkProcess.description' | translate\n }}</v-paragraph>\n <ng-container\n *ngIf=\"{\n processItems: processItems$ | async,\n disabled: disabled$ | async,\n defaultSelectionId: selectionId$ | async\n } as obs\"\n >\n <v-select\n *ngIf=\"obs.processItems\"\n (selectedChange)=\"selectProcess($event)\"\n [defaultSelectionId]=\"obs.defaultSelectionId\"\n [disabled]=\"obs.disabled\"\n [items]=\"obs.processItems\"\n [loading]=\"!obs.processItems\"\n [margin]=\"true\"\n [required]=\"false\"\n ></v-select>\n </ng-container>\n</ng-container>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit, ViewChild} from '@angular/core';\nimport {DocumentDefinition, DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {ActivatedRoute} from '@angular/router';\nimport {DossierManagementConnectModalComponent} from '../dossier-management-connect-modal/dossier-management-connect-modal.component';\nimport {AlertService} from '@valtimo/components';\nimport {DossierManagementRemoveModalComponent} from '../dossier-management-remove-modal/dossier-management-remove-modal.component';\n\n@Component({\n selector: 'valtimo-dossier-management-detail',\n templateUrl: './dossier-management-detail.component.html',\n styleUrls: ['./dossier-management-detail.component.scss'],\n})\nexport class DossierManagementDetailComponent implements OnInit {\n public documentDefinitionName: string | null = null;\n public documentDefinition: DocumentDefinition | null = null;\n public processDocumentDefinitions: ProcessDocumentDefinition[] = [];\n\n @ViewChild('dossierConnectModal')\n dossierConnectModal: DossierManagementConnectModalComponent;\n @ViewChild('dossierRemoveModal')\n dossierRemoveModal: DossierManagementRemoveModalComponent;\n\n constructor(\n private documentService: DocumentService,\n private route: ActivatedRoute,\n private alertService: AlertService\n ) {\n this.documentDefinitionName = this.route.snapshot.paramMap.get('name');\n }\n\n ngOnInit() {\n this.loadDocumentDefinition();\n this.loadProcessDocumentDefinitions();\n }\n\n loadProcessDocumentDefinitions() {\n this.documentService\n .findProcessDocumentDefinitions(this.documentDefinitionName)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n this.processDocumentDefinitions = processDocumentDefinitions;\n });\n }\n\n loadDocumentDefinition() {\n this.documentService\n .getDocumentDefinitionForManagement(this.documentDefinitionName)\n .subscribe((documentDefinition: DocumentDefinition) => {\n this.documentDefinition = documentDefinition;\n });\n }\n\n openDossierConnectModal() {\n this.dossierConnectModal.openModal(this.documentDefinition);\n }\n\n openDossierRemoveModal() {\n this.dossierRemoveModal.openModal(this.documentDefinition);\n }\n\n deleteProcessDocumentDefinition(processDocumentDefinition: ProcessDocumentDefinition) {\n this.documentService\n .deleteProcessDocumentDefinition({\n documentDefinitionName: processDocumentDefinition.id.documentDefinitionId.name,\n processDefinitionKey: processDocumentDefinition.id.processDefinitionKey,\n canInitializeDocument: processDocumentDefinition.canInitializeDocument,\n startableByUser: processDocumentDefinition.startableByUser,\n })\n .subscribe(\n () => {\n this.alertService.success('Successfully deleted process document definition');\n this.loadProcessDocumentDefinitions();\n },\n () => {\n this.alertService.error('Failed to delete process document definition');\n }\n );\n }\n\n downloadDefinition(): void {\n const definition = this.documentDefinition;\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(definition.schema, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${definition.id.name}-v${definition.id.version}.json`\n );\n downloadAnchorElement.click();\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"management-datail-content\" class=\"pt-0\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n <div class=\"clearfix\"></div>\n <ng-container *ngTemplateOutlet=\"widget\"></ng-container>\n</div>\n\n<ng-template #widget>\n <valtimo-widget *ngIf=\"documentDefinition\">\n <div class=\"row bg-white mt-5 mb-2 pl-2 pr-2\">\n <div class=\"col-5\">\n <h2>{{ 'document definition' | translate }}</h2>\n </div>\n <div class=\"col-5 offset-2\">\n <h2>{{ 'dossierManagement.connectedProcesses' | translate }}</h2>\n </div>\n </div>\n <div class=\"row bg-white mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-5 bg-red\">\n <textarea class=\"w-100 dossier-schema\" disabled rows=\"25\"\n >{{ documentDefinition | json }}\n </textarea\n >\n </div>\n <div class=\"col-5 offset-2 bg-blue\">\n <div\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n class=\"input-group mb-5\"\n >\n <div class=\"input-group-prepend w-75\">\n <button\n (click)=\"deleteProcessDocumentDefinition(processDocumentDefinition)\"\n class=\"btn btn-danger\"\n data-placement=\"left\"\n data-toggle=\"tooltip\"\n title=\"Delete this connected process\"\n >\n <i class=\"icon mdi mdi-delete mr-1\"></i>\n </button>\n <input\n [value]=\"\n processDocumentDefinition.processName\n ? processDocumentDefinition.processName\n : '' + ' (' + processDocumentDefinition.id.processDefinitionKey + ')'\n \"\n class=\"form-control\"\n disabled\n type=\"text\"\n />\n </div>\n <div class=\"row mb-2 mt-2\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"processDocumentDefinition.canInitializeDocument\"\n class=\"custom-control-input\"\n disabled\n type=\"checkbox\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"processDocumentDefinition.startableByUser\"\n class=\"custom-control-input\"\n disabled\n type=\"checkbox\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div class=\"text-right mt-5 mb-5\">\n <button (click)=\"openDossierConnectModal()\" class=\"btn btn-primary\">\n <i class=\"icon mdi mdi-plus mr-1\"></i\n >{{ 'dossierManagement.connectProcess' | translate }}\n </button>\n </div>\n <valtimo-dossier-management-link-process></valtimo-dossier-management-link-process\n ><valtimo-extension\n module=\"dossier-management\"\n page=\"dossier\"\n section=\"right-panel\"\n ></valtimo-extension>\n <valtimo-dossier-management-assignee></valtimo-dossier-management-assignee>\n </div>\n </div>\n </valtimo-widget>\n</ng-template>\n\n<ng-template #buttons>\n <div *ngIf=\"documentDefinition\" class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n <button (click)=\"downloadDefinition()\" class=\"btn btn-primary btn-space\">\n <i class=\"icon mdi mdi-download mr-1\"></i>\n {{ 'Download document definition' | translate }}\n </button>\n <a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n <button\n (click)=\"openDossierRemoveModal()\"\n *ngIf=\"!this.documentDefinition.readOnly\"\n class=\"btn btn-secondary btn-space mr-0\"\n >\n <i class=\"icon mdi mdi-delete mr-1\"></i>\n {{ 'Remove document definition' | translate }}\n </button>\n </div>\n</ng-template>\n\n<valtimo-dossier-management-connect-modal\n #dossierConnectModal\n (reloadProcessDocumentDefinitions)=\"loadProcessDocumentDefinitions()\"\n></valtimo-dossier-management-connect-modal>\n<valtimo-dossier-management-remove-modal\n #dossierRemoveModal\n></valtimo-dossier-management-remove-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {DocumentService} from '@valtimo/document';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {ListField, ModalComponent} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n DefinitionColumn,\n SearchField,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '@valtimo/config';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {MultiInputOutput, MultiInputValues, SelectItem, TableColumn} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-management-search-fields',\n templateUrl: './dossier-management-search-fields.component.html',\n styleUrls: ['./dossier-management-search-fields.component.scss'],\n})\nexport class DossierManagementSearchFieldsComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n @ViewChild('searchFieldModal') modal: ModalComponent;\n\n @Output() searchField: EventEmitter<SearchField> = new EventEmitter();\n\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly selectedSearchField$ = new BehaviorSubject<SearchField | null>(null);\n readonly formData$ = new BehaviorSubject<SearchField>(null);\n readonly valid$ = new BehaviorSubject<boolean>(false);\n\n private subscriptions = new Subscription();\n\n private readonly COLUMNS: Array<DefinitionColumn> = [\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'title',\n translationKey: 'title',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'key',\n translationKey: 'key',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'path',\n translationKey: 'path',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'dataType',\n translationKey: 'dataType',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'fieldType',\n translationKey: 'fieldType',\n },\n ];\n\n readonly dropdownColumns$ = new BehaviorSubject<Array<TableColumn>>([\n {\n labelTranslationKey: 'searchFieldsOverview.id',\n dataKey: 'key',\n },\n {\n labelTranslationKey: 'searchFieldsOverview.text',\n dataKey: 'value',\n },\n ]);\n\n private readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n readonly dataTypeItems$: Observable<Array<SelectItem>> = this.translateService.stream('key').pipe(\n map(() =>\n this.DATA_TYPES.map(dataType => ({\n id: dataType,\n text: this.translateService.instant(`searchFields.${dataType}`),\n }))\n )\n );\n\n readonly dataTypeIsBoolean$ = new BehaviorSubject<boolean>(false);\n private readonly dataTypeIsText$ = new BehaviorSubject<boolean>(false);\n private readonly ALL_FIELD_TYPES: Array<SearchFieldFieldType> = [\n 'single',\n 'range',\n 'single-select-dropdown',\n 'multi-select-dropdown',\n ];\n private readonly NON_TEXT_FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private readonly BOOLEAN_FIELD_TYPES: Array<SearchFieldFieldType> = ['single'];\n readonly fieldTypeItems$: Observable<Array<SelectItem>> = combineLatest([\n this.dataTypeIsBoolean$,\n this.dataTypeIsText$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeIsBoolean, dataTypeIsText]) => {\n if (dataTypeIsBoolean) {\n return this.BOOLEAN_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n } else if (!dataTypeIsText) {\n return this.NON_TEXT_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n }\n\n return this.ALL_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n })\n );\n\n private readonly MATCH_TYPES: Array<SearchFieldMatchType> = ['exact', 'like'];\n readonly matchTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.MATCH_TYPES.map(matchType => ({\n id: matchType,\n text: this.translateService.instant(`searchFieldsOverview.${matchType}`),\n }))\n )\n );\n\n readonly fields$: Observable<Array<ListField>> = this.translateService.stream('key').pipe(\n map(() =>\n this.COLUMNS.map(column => ({\n key: column.propertyName,\n label: this.translateService.instant(`searchFieldsOverview.${column.translationKey}`),\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n )\n );\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n private cachedSearchFields!: Array<SearchField>;\n searchFieldActionTypeIsAdd: boolean;\n loadingSearchFields = true;\n showSearchFieldsForm = false;\n\n private readonly refreshSearchFields$ = new BehaviorSubject<null>(null);\n\n private readonly searchFields$: Observable<Array<SearchField>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshSearchFields$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getDocumentSearchFields(documentDefinitionName)\n ),\n tap(searchFields => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (searchFields && Array.isArray(searchFields) && searchFields.length > 0) {\n this.setDownload(documentDefinitionName, searchFields);\n }\n });\n }),\n tap(searchFields => {\n this.cachedSearchFields = searchFields;\n this.loadingSearchFields = false;\n })\n );\n\n readonly translatedSearchFields$: Observable<Array<SearchField>> = combineLatest([\n this.searchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([searchFields]) =>\n searchFields.map(searchField => ({\n ...searchField,\n title: searchField.title ? searchField.title : '',\n dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),\n matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),\n fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),\n }))\n )\n );\n\n readonly fieldTypeIsDropdown$ = new BehaviorSubject<boolean>(false);\n\n readonly dropdownDataProviderNames$: Observable<Array<SelectItem>> = combineLatest([\n this.documentService.getDropdownDataProviders(),\n this.translateService.stream('key'),\n ]).pipe(\n map(([providers]) =>\n providers.map(provider => ({\n id: provider,\n text: this.translateService.instant(`searchFieldsOverview.${provider}`),\n }))\n )\n );\n\n private readonly modifiedDropdownValues$ = new BehaviorSubject<MultiInputValues>([]);\n\n readonly initialDropdownValues$: Observable<MultiInputValues> = combineLatest([\n this.documentDefinitionName$,\n this.formData$,\n ]).pipe(\n distinctUntilChanged(\n ([prevDocumentDefinitionName, prevFormData], [currDocumentDefinitionName, currFormData]) =>\n prevDocumentDefinitionName === currDocumentDefinitionName &&\n prevFormData?.dropdownDataProvider === currFormData?.dropdownDataProvider &&\n prevFormData?.key === currFormData?.key\n ),\n switchMap(([documentDefinitionName, formData]) => {\n if (!formData || !formData.dropdownDataProvider) {\n return of([]);\n }\n\n return this.documentService\n .getDropdownData(formData.dropdownDataProvider, documentDefinitionName, formData.key)\n .pipe(\n map(dropdownData => {\n if (dropdownData) {\n return Object.keys(dropdownData).map(dropdownFieldKey => ({\n key: dropdownFieldKey,\n value: dropdownData[dropdownFieldKey],\n }));\n }\n\n return [];\n })\n );\n })\n );\n\n readonly showMatchTypes$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n ]).pipe(map(([dataTypeIsText, fieldTypeIsDropdown]) => dataTypeIsText && !fieldTypeIsDropdown));\n\n readonly showReadonlyDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n formData?.dropdownDataProvider &&\n !this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n readonly showInputDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n formData?.dropdownDataProvider &&\n this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.openSelectedSearchFieldSubscription();\n }\n\n ngAfterViewInit(): void {\n this.openModalShowingSubscription();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n searchFieldClicked(searchField: SearchField, searchFieldActionTypeIsAdd: boolean): void {\n this.disableInput$.pipe(take(1)).subscribe(inputDisabled => {\n if (!inputDisabled) {\n this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;\n const searchFieldToSelect = this.cachedSearchFields.find(\n field => field.key === searchField.key\n );\n this.selectedSearchField$.next(searchFieldToSelect);\n }\n });\n }\n\n formValueChange(data: SearchField): void {\n setTimeout(() => {\n this.nextIfChanged(this.dataTypeIsText$, data.dataType === 'text');\n this.nextIfChanged(this.dataTypeIsBoolean$, data.dataType === 'boolean');\n this.nextIfChanged(this.fieldTypeIsDropdown$, this.isFieldTypeDropdown(data.fieldType));\n this.nextIfChanged(this.formData$, data);\n this.nextIfChanged(this.valid$, this.isValid(data));\n }, 0);\n }\n\n dropdownDatalistChange(data: MultiInputOutput): void {\n this.modifiedDropdownValues$.next(data as MultiInputValues);\n }\n\n moveRow(\n searchFieldRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n documentDefinitionName: string\n ): void {\n const searchFields = [...this.cachedSearchFields];\n const searchFieldRow = searchFields[searchFieldRowIndex];\n\n clickEvent.stopPropagation();\n\n const searchFieldIndex = searchFields.findIndex(field => field.key === searchFieldRow.key);\n const foundSearchField = {...searchFields[searchFieldIndex]};\n const filteredSearchFields = searchFields.filter(field => field.key !== searchFieldRow.key);\n const multipleSearchFields = searchFields.length > 1;\n\n if (multipleSearchFields && moveUp && searchFieldIndex > 0) {\n const searchFieldBeforeKey = `${searchFields[searchFieldIndex - 1].key}`;\n const searchFieldBeforeIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldBeforeKey\n );\n filteredSearchFields.splice(searchFieldBeforeIndex, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n } else if (multipleSearchFields && !moveUp && searchFieldIndex < searchFields.length) {\n const searchFieldAfterKey = `${searchFields[searchFieldIndex + 1].key}`;\n const searchFieldAfterIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldAfterKey\n );\n filteredSearchFields.splice(searchFieldAfterIndex + 1, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n }\n }\n\n deleteSelectedSearchField(\n documentDefinitionName: string,\n selectedSearchField: SearchField\n ): void {\n this.disableInput();\n\n if (this.dropdownDataProviderSupportsUpdates(selectedSearchField?.dropdownDataProvider)) {\n this.documentService\n .deleteDropdownData(\n selectedSearchField.dropdownDataProvider,\n documentDefinitionName,\n selectedSearchField.key\n )\n .subscribe();\n }\n\n this.documentService\n .deleteDocumentSearch(documentDefinitionName, selectedSearchField.key)\n .subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n saveSearchField(documentDefinitionName: string): void {\n this.disableInput();\n\n this.formData$.pipe(take(1)).subscribe(formData => {\n const mappedFormData: SearchField = {\n ...formData,\n matchType:\n !this.isFieldTypeDropdown(formData.fieldType) && formData.dataType === 'text'\n ? formData.matchType\n : 'exact',\n fieldType: formData.dataType !== 'boolean' ? formData.fieldType : 'single',\n };\n\n const prevFormData = this.selectedSearchField$.value;\n if (\n this.dropdownDataProviderSupportsUpdates(prevFormData?.dropdownDataProvider) &&\n prevFormData.dropdownDataProvider !== mappedFormData?.dropdownDataProvider\n ) {\n this.documentService\n .deleteDropdownData(\n prevFormData.dropdownDataProvider,\n documentDefinitionName,\n prevFormData.key\n )\n .subscribe();\n }\n if (this.dropdownDataProviderSupportsUpdates(mappedFormData.dropdownDataProvider)) {\n this.modifiedDropdownValues$.pipe(take(1)).subscribe(dropdownValues => {\n const request = dropdownValues.reduce(\n (acc, keyValue) => ({...acc, [keyValue.key]: keyValue.value}),\n {}\n );\n this.documentService\n .postDropdownData(\n mappedFormData.dropdownDataProvider,\n documentDefinitionName,\n mappedFormData.key,\n request\n )\n .subscribe();\n });\n }\n\n if (this.searchFieldActionTypeIsAdd) {\n this.documentService.postDocumentSearch(documentDefinitionName, mappedFormData).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n } else {\n const newFields = [...this.cachedSearchFields];\n const indexToReplace = newFields.findIndex(field => field.key === mappedFormData.key);\n const filteredFields = newFields.filter(field => field.key !== mappedFormData.key);\n\n filteredFields.splice(indexToReplace, 0, mappedFormData);\n this.updateSearchFields(documentDefinitionName, filteredFields);\n }\n });\n }\n\n updateSearchFields(documentDefinitionName: string, newSearchFields: Array<SearchField>): void {\n this.disableInput();\n\n this.documentService.putDocumentSearch(documentDefinitionName, newSearchFields).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n private nextIfChanged(behaviourSubject$: BehaviorSubject<any>, value: any) {\n if (JSON.stringify(behaviourSubject$.value) !== JSON.stringify(value)) {\n behaviourSubject$.next(value);\n }\n }\n\n private isValid(data: SearchField): boolean {\n const validMatchType =\n data.dataType === 'text' && !this.isFieldTypeDropdown(data.fieldType) ? data.matchType : true;\n const validDropdownDataProvider = this.isFieldTypeDropdown(data.fieldType)\n ? data.dropdownDataProvider\n : true;\n const containsAllValues = !!(\n data.key &&\n data.dataType &&\n validMatchType &&\n validDropdownDataProvider &&\n data.path\n );\n const keyIsUnique =\n !this.searchFieldActionTypeIsAdd ||\n this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;\n\n return containsAllValues && keyIsUnique;\n }\n\n private isFieldTypeDropdown(fieldType?: SearchFieldFieldType): boolean {\n return fieldType === 'single-select-dropdown' || fieldType === 'multi-select-dropdown';\n }\n\n private dropdownDataProviderSupportsUpdates(dropdownDataProvider?: string): boolean {\n return dropdownDataProvider === 'dropdownDatabaseDataProvider';\n }\n\n private openSelectedSearchFieldSubscription(): void {\n this.subscriptions.add(\n this.selectedSearchField$.subscribe(() => {\n this.showModal();\n })\n );\n }\n\n private openModalShowingSubscription(): void {\n this.subscriptions.add(\n this.modal.modalShowing$.subscribe(modalShowing => {\n if (modalShowing) {\n setTimeout(() => {\n this.showSearchFieldsForm = true;\n }, 0);\n } else {\n setTimeout(() => {\n this.showSearchFieldsForm = false;\n }, 150);\n }\n })\n );\n }\n\n private setDownload(documentDefinitionName: string, searchFields: Array<SearchField>): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify({searchFields}, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private showModal(): void {\n this.modal?.show();\n }\n\n private hideModal(): void {\n this.modal?.hide();\n }\n\n private refreshSearchFields(): void {\n this.refreshSearchFields$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n searchFields: translatedSearchFields$ | async,\n fields: fields$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n <a\n class=\"btn btn-secondary btn-space\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [ngClass]=\"{\n disabled:\n !obs.downloadUrl || !obs.downloadName || obs.searchFields.length <= 0 || obs.disableInput\n }\"\n >\n <i class=\"icon mdi mdi-download mr-1\"></i>\n {{ 'searchFields.downloadButtonText' | translate }}\n </a>\n <button\n (click)=\"searchFieldClicked($event, true)\"\n class=\"btn btn-primary btn-space\"\n [ngClass]=\"{disabled: loadingSearchFields || obs.disableInput}\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n >\n </valtimo-list>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n documentDefinitionName: documentDefinitionName$ | async\n } as obs\"\n >\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{\n 'disabled disabled-move-row-button': index === length - 1 || obs.disableInput\n }\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <valtimo-modal\n #searchFieldModal\n elementId=\"searchFieldModal\"\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [showFooter]=\"true\"\n >\n <div body class=\"mt-2\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"showSearchFieldsForm && {searchField: selectedSearchField$ | async} as searchObs\"\n >\n <v-input\n name=\"title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input>\n <v-input\n name=\"key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [widthPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input>\n <v-input\n name=\"path\"\n [title]=\"'searchFieldsOverview.path' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input>\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"(showMatchTypes$ | async) && (matchTypeItems$ | async) as matchTypeItems\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"\n (fieldTypeIsDropdown$ | async) &&\n (dropdownDataProviderNames$ | async) as dropdownDataProviderNames\n \"\n [items]=\"dropdownDataProviderNames\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"false\"\n name=\"dropdownDataProvider\"\n [defaultSelectionId]=\"searchObs.searchField?.dropdownDataProvider\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n ></v-select>\n <valtimo-carbon-multi-input\n *ngIf=\"\n (showInputDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n name=\"dropdownValues\"\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n type=\"keyValue\"\n [disabled]=\"obs.disableInput\"\n [defaultValues]=\"initialDropdownValues\"\n [margin]=\"true\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n (valueChange)=\"dropdownDatalistChange($event)\"\n >\n </valtimo-carbon-multi-input>\n <v-table\n *ngIf=\"\n (showReadonlyDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n [items]=\"initialDropdownValues\"\n [columns]=\"dropdownColumns$ | async\"\n [showEditButtons]=\"false\"\n [itemsTranslationKey]=\"'searchFieldsOverview'\"\n [showPagination]=\"false\"\n [mobileBreakpointPx]=\"200\"\n ></v-table>\n </v-form>\n </div>\n <div footer>\n <div class=\"col-12 p-0\">\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </valtimo-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <div class=\"buttons-container\" *ngIf=\"{searchField: selectedSearchField$ | async} as searchObs\">\n <div class=\"right-buttons\">\n <button\n class=\"btn btn-space btn-secondary\"\n *ngIf=\"!searchFieldActionTypeIsAdd\"\n [disabled]=\"obs.disableInput\"\n (click)=\"deleteSelectedSearchField(obs.documentDefinitionName, searchObs.searchField)\"\n >\n {{ 'searchFieldsOverview.delete' | translate }}\n </button>\n <button\n (click)=\"saveSearchField(obs.documentDefinitionName)\"\n type=\"button\"\n class=\"btn btn-primary btn-space mr-0\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-3\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField, MultiInputValues, ViewType} from '@valtimo/components';\nimport {ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {\n CaseListColumn,\n CaseListColumnView,\n DisplayTypeParameters,\n DocumentService,\n} from '@valtimo/document';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ListColumnModal} from '../../models';\n\n@Component({\n selector: 'valtimo-dossier-management-list-columns',\n templateUrl: './dossier-management-list-columns.component.html',\n styleUrls: ['./dossier-management-list-columns.component.scss'],\n})\nexport class DossierManagementListColumnsComponent {\n @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n\n private readonly COLUMNS: Array<DefinitionColumn> = [\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'title',\n translationKey: 'title',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'key',\n translationKey: 'key',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'path',\n translationKey: 'path',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'displayType',\n translationKey: 'displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'displayTypeParameters',\n translationKey: 'displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'sortable',\n translationKey: 'sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n propertyName: 'defaultSort',\n translationKey: 'defaultSort',\n },\n ];\n\n loadingCaseListColumns = true;\n\n readonly fields$: Observable<Array<ListField>> = this.translateService.stream('key').pipe(\n map(() =>\n this.COLUMNS.map(column => ({\n key: column.propertyName,\n label: this.translateService.instant(`listColumn.${column.translationKey}`),\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n )\n );\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n\n readonly hasEnvironmentConfig$: Observable<boolean> = this.documentDefinitionName$.pipe(\n map(\n documentDefinitionName =>\n !!this.configService?.config?.customDefinitionTables[documentDefinitionName]\n )\n );\n\n private cachedCaseListColumns: Array<CaseListColumn> = [];\n\n private readonly refreshCaseListcolumns$ = new BehaviorSubject<null>(null);\n\n private readonly caseListColumns$: Observable<Array<CaseListColumn>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshCaseListcolumns$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getCaseListForManagement(documentDefinitionName)\n ),\n tap(caseListColumns => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (caseListColumns && Array.isArray(caseListColumns) && caseListColumns.length > 0) {\n this.setDownload(documentDefinitionName, caseListColumns);\n }\n });\n }),\n tap(caseListColumns => {\n this.cachedCaseListColumns = caseListColumns;\n this.loadingCaseListColumns = false;\n this.enableInput();\n })\n );\n\n readonly translatedCaseListColumns$: Observable<Array<CaseListColumnView>> = combineLatest([\n this.caseListColumns$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: this.getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n )\n );\n\n readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n readonly modalShowing$ = this.showModal$.pipe(delay(250));\n\n readonly INVALID_KEY = 'invalid';\n\n readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dateFormat: new FormControl(''),\n displayType: new FormControl({\n key: this.INVALID_KEY,\n }),\n sortable: new FormControl(false),\n defaultSort: new FormControl({\n key: this.INVALID_KEY,\n }),\n enum: new FormControl([]),\n });\n\n readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedCaseListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ];\n\n readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n tap(showDateFormat => {\n if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n this.formGroup.patchValue({dateFormat: ''});\n }\n }),\n startWith(false)\n );\n\n readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(\n formValues =>\n !!(\n formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n formValues.displayType?.key === this.DISPLAY_TYPES[2]\n )\n ),\n tap(showEnum => {\n const enumValue = this.formGroup.value.enum;\n if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n this.formGroup.patchValue({enum: []});\n }\n }),\n startWith(false)\n );\n\n readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[2]))\n );\n\n readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedViewTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedViewTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => ({\n content: this.translateService.instant(`listColumnDisplayType.${type}`),\n key: type,\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedViewTypeItemIndex,\n }))\n )\n );\n\n readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedSortItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedSortItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumn.selectDefaultSort`),\n key: this.INVALID_KEY,\n },\n {\n content: this.translateService.instant(`listColumn.sortableAsc`),\n key: 'ASC',\n },\n {\n content: this.translateService.instant(`listColumn.sortableDesc`),\n key: 'DESC',\n },\n ].map((item, index) => ({\n ...item,\n selected: index === selectedSortItemIndex,\n }))\n )\n );\n\n readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedCaseListColumns.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n }),\n startWith(false)\n );\n\n readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(\n ([formValues, validKey]) =>\n !!(\n formValues.displayType?.key !== this.INVALID_KEY &&\n formValues.path &&\n validKey &&\n (formValues.displayType.key === 'enum' ? formValues.enum?.length > 0 : true)\n )\n ),\n startWith(false)\n );\n\n readonly showDeleteModal$ = new Subject<boolean>();\n\n readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer\n ) {}\n openModal(modalType: ListColumnModal): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n deleteRow(caseListColumnRowIndex: number, clickEvent: MouseEvent): void {\n clickEvent.stopPropagation();\n\n this.showDeleteModal$.next(true);\n this.deleteRowIndex$.next(caseListColumnRowIndex);\n }\n\n deleteRowConfirmation(caseListColumnRowIndex: number): void {\n const columnKey = this.cachedCaseListColumns[caseListColumnRowIndex]?.key;\n\n if (columnKey) {\n this.disableInput();\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.deleteCaseListForManagement(docDefName, columnKey).subscribe(\n () => {\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n }\n\n moveRow(\n caseListColumnRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n documentDefinitionName: string\n ): void {\n const caseListColumns = [...this.cachedCaseListColumns];\n const caseListColumnRow = caseListColumns[caseListColumnRowIndex];\n\n clickEvent.stopPropagation();\n\n const caseListColumnIndex = caseListColumns.findIndex(\n field => field.key === caseListColumnRow.key\n );\n const foundCaseListColumn = {...caseListColumns[caseListColumnIndex]};\n const filteredCaseListColumns = caseListColumns.filter(\n field => field.key !== caseListColumnRow.key\n );\n const multipleCaseListColumns = caseListColumns.length > 1;\n\n if (multipleCaseListColumns && moveUp && caseListColumnIndex > 0) {\n const caseListColumnBeforeKey = `${caseListColumns[caseListColumnIndex - 1].key}`;\n const caseListColumnBeforeIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnBeforeKey\n );\n filteredCaseListColumns.splice(caseListColumnBeforeIndex, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\n } else if (multipleCaseListColumns && !moveUp && caseListColumnIndex < caseListColumns.length) {\n const caseListColumnAfterKey = `${caseListColumns[caseListColumnIndex + 1].key}`;\n const caseListColumnAfterIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredCaseListColumns.splice(caseListColumnAfterIndex + 1, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\n }\n }\n\n saveCasListColumns(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addColumn();\n } else {\n this.updateColumn();\n }\n });\n }\n\n enumValueChange(value: Array<{[key: string]: string}>): void {\n this.formGroup.patchValue({enum: value});\n }\n\n columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n combineLatest([this.viewTypeItems$, this.sortItems$])\n .pipe(take(1))\n .subscribe(([viewTypeItems, sortItems]) => {\n const column = this.cachedCaseListColumns.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const viewTypeItem = viewTypeItems.find(item => item.key === column.displayType.type);\n const viewTypeItemIndex = viewTypeItems.findIndex(\n item => item.key === column.displayType.type\n );\n const sortItem = sortItems.find(item => item.key === column.defaultSort);\n const sortItemIndex = sortItems.findIndex(item => item.key === column.defaultSort);\n const enumValues = column?.displayType?.displayTypeParameters?.enum;\n const mappedEnumValues: MultiInputValues = [];\n const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n\n this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n if (sortItem) {\n this.selectedSortItemIndex$.next(sortItemIndex);\n }\n\n if (enumValues) {\n Object.keys(enumValues).forEach(key => {\n mappedEnumValues.push({key, value: enumValues[key]});\n });\n this.defaultEnumValues$.next(mappedEnumValues);\n } else {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n }\n\n this.formGroup.patchValue({\n key: column.key,\n title: column.title,\n path: column.path,\n sortable: column.sortable,\n // @ts-ignore\n displayType: {...viewTypeItem},\n // @ts-ignore\n defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n ...(columnDateFormat && {\n dateFormat: columnDateFormat,\n }),\n });\n\n this.openModal('edit');\n });\n }\n\n private updateCaseListColumns(\n documentDefinitionName: string,\n newCaseListColumns: Array<CaseListColumn>\n ): void {\n this.disableInput();\n\n this.documentService\n .putCaseListForManagement(documentDefinitionName, newCaseListColumns)\n .subscribe(\n () => {\n this.refreshCaseListColumns();\n localStorage.setItem(`list-search-${documentDefinitionName}`, null);\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService\n .postCaseListForManagement(docDefName, this.mapFormValuesToColumn(formValue))\n .subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n\n private getDisplayTypeParametersView(displayTypeParameters: DisplayTypeParameters): string {\n if (displayTypeParameters?.dateFormat) {\n return displayTypeParameters.dateFormat;\n } else if (displayTypeParameters?.enum) {\n return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n const keyValuePairString = `${curr}: ${displayTypeParameters.enum[curr]}`;\n if (!acc) {\n return `${keyValuePairString}`;\n }\n\n return `${acc}, ${keyValuePairString}`;\n }, '');\n }\n\n return '-';\n }\n\n private updateColumn(): void {\n const updatedColumnFormValue = this.formGroup.value;\n const mappedUpdatedColumn = this.mapFormValuesToColumn(updatedColumnFormValue);\n const currentColumns = this.cachedCaseListColumns;\n const mappedCurrentColumns = currentColumns.map(column => {\n const columnCopy = {...column};\n if (columnCopy.key === updatedColumnFormValue.key) {\n const changedColumn = {...columnCopy, ...mappedUpdatedColumn};\n if (!mappedUpdatedColumn.defaultSort) {\n delete changedColumn.defaultSort;\n }\n return changedColumn;\n }\n if (mappedUpdatedColumn.defaultSort) {\n delete columnCopy.defaultSort;\n }\n return columnCopy;\n });\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.putCaseListForManagement(docDefName, mappedCurrentColumns).subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n\n private setDownload(\n documentDefinitionName: string,\n caseListColumns: Array<CaseListColumn>\n ): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(caseListColumns, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n }\n\n private refreshCaseListColumns(): void {\n this.refreshCaseListcolumns$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n combineLatest([this.sortItems$, this.viewTypeItems$])\n .pipe(take(1))\n .subscribe(([sortItems, viewTypeItems]) => {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n this.selectedViewTypeItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({displayType: viewTypeItems[0]});\n this.selectedSortItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({defaultSort: sortItems[0]});\n });\n }\n\n private mapFormValuesToColumn(formValue: any): CaseListColumn {\n return {\n key: formValue.key,\n sortable: formValue.sortable,\n ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n defaultSort: formValue.defaultSort?.key,\n }),\n title: formValue.title || '',\n path: formValue.path,\n displayType: {\n type: formValue.displayType?.key,\n displayTypeParameters: {\n ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n ...(Array.isArray(formValue.enum) &&\n formValue.enum.length > 0 && {\n enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n },\n };\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n caseListColumn: translatedCaseListColumns$ | async,\n fields: fields$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n hasEnvironmentConfig: hasEnvironmentConfig$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.hasEnvironmentConfig; else environmentConfigWarning\">\n <ng-container *ngIf=\"!loadingCaseListColumns; else loading\">\n <ng-container *ngIf=\"obs.caseListColumn?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n obs.hasEnvironmentConfig ||\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.caseListColumn?.length < 1 ||\n obs.disableInput ||\n loadingCaseListColumns\n \"\n >\n {{ 'listColumn.downloadButtonText' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.hasEnvironmentConfig || loadingCaseListColumns\"\n class=\"ml-3\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n documentDefinitionName: documentDefinitionName$ | async\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{\n 'disabled disabled-move-row-button': index === length - 1 || obs.disableInput\n }\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-list\n [items]=\"obs.caseListColumn\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.caseListColumn; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-list>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-3\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n\n<ng-template #environmentConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'listColumn.hasEnvConfigWarningTitle' | translate,\n message: 'listColumn.hasEnvConfigWarning' | translate,\n showClose: false\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n message: 'listColumn.noConfigWarning' | translate,\n showClose: false\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async\n } as modalObs\"\n [open]=\"modalObs.show\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"displayType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"viewTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"showDateFormat$ | async\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n <div\n class=\"cds--text-input__field-wrapper\"\n *ngIf=\"modalObs.showEnum || modalObs.isYesNo\"\n [ngClass]=\"{'no-margin': modalObs.isYesNo}\"\n >\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{\n modalObs.isYesNo\n ? ('listColumn.enumTitleOptional' | translate)\n : ('listColumn.enumTitle' | translate)\n }}\n <v-tooltip-icon\n [tooltip]=\"\n modalObs.isYesNo\n ? ('listColumn.enumTooltipOptional' | translate)\n : ('listColumn.enumTooltip' | translate)\n \"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n [hideAddButton]=\"modalObs.isYesNo\"\n [hideDeleteButton]=\"modalObs.isYesNo\"\n [maxRows]=\"modalObs.isYesNo ? 1 : null\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\"\n >\n <cds-dropdown-list [items]=\"sortItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveCasListColumns()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><<cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\nimport {FormGroup, FormGroupDirective} from '@angular/forms';\nimport {ApiTabType} from '@valtimo/dossier';\nimport {ListItem} from 'carbon-components-angular';\nimport {combineLatest, map, startWith} from 'rxjs';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-tab-form',\n templateUrl: './tab-form.component.html',\n styleUrls: ['./tab-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabFormComponent implements OnInit {\n @Input() tabType: ApiTabType;\n\n public readonly listItems$ = combineLatest([\n this.tabService.configuredContentKeys$,\n this.tabService.formDefinitions$,\n this.tabService.defaultTabs$,\n this.tabService.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {\n switch (this.tabType) {\n case ApiTabType.STANDARD:\n return this.getListItems(defaultTabs, tabKeys);\n case ApiTabType.CUSTOM:\n return this.getListItems(customComponentKeys, tabKeys);\n case ApiTabType.FORMIO:\n return this.getListItems(formDefinitions, tabKeys);\n }\n }),\n startWith([])\n );\n public form!: FormGroup;\n\n private _searchActive: boolean;\n\n constructor(\n private readonly tabService: TabService,\n private readonly formGroupDirective: FormGroupDirective\n ) {}\n\n public ngOnInit(): void {\n this.form = this.formGroupDirective.control;\n }\n\n public onSearch(): void {\n if (this._searchActive) {\n return;\n }\n\n this._searchActive = true;\n this.form.get('contentKey')?.reset('');\n }\n\n public onSelected(): void {\n this._searchActive = false;\n }\n\n private getListItems(tabItems: ListItem[], configuredContentKeys: string[]): ListItem[] {\n return tabItems\n .filter(\n (tabItem: ListItem) =>\n !configuredContentKeys.includes(tabItem.contentKey) ||\n this.form?.get('contentKey')?.value === tabItem.contentKey\n )\n .map((tabItem: ListItem) => ({\n ...tabItem,\n selected: this.form?.get('contentKey')?.value === tabItem.contentKey,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\">\n <cds-label>\n {{ 'dossierManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [invalidText]=\"'dossierManagement.tabManagement.addModal.uniqueKeyError' | translate\"\n >\n {{ 'dossierManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'dossierManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n</form>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {Code16, Development16, WatsonHealthPageScroll16} from '@carbon/icons';\nimport {ApiTabItem, ApiTabType} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map} from 'rxjs';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-add-tab-modal',\n templateUrl: './dossier-management-add-tab-modal.component.html',\n styleUrls: ['./dossier-management-add-tab-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementAddTabModalComponent {\n @Input() documentDefinitionName: string;\n @Input() open = false;\n\n @Output() closeModalEvent = new EventEmitter<Partial<ApiTabItem> | null>();\n\n public readonly ApiTabType = ApiTabType;\n public readonly tabTypes$ = this.tabService.disableAddTabs$.pipe(\n map(disabled => [\n {\n icon: 'development',\n title: 'dossierManagement.tabManagement.addModal.standardTab',\n type: ApiTabType.STANDARD,\n disabled: disabled.standard,\n },\n {\n icon: 'page-scroll',\n title: 'dossierManagement.tabManagement.addModal.formIOComponent',\n type: ApiTabType.FORMIO,\n disabled: disabled.formIO,\n },\n {\n icon: 'code',\n title: 'dossierManagement.tabManagement.addModal.customComponent',\n type: ApiTabType.CUSTOM,\n disabled: disabled.custom,\n },\n ])\n );\n\n public readonly form = this.fb.group({\n name: this.fb.control(null),\n key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),\n contentKey: this.fb.control('', Validators.required),\n });\n public readonly selectedTabType$ = new BehaviorSubject<ApiTabType | null>(null);\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly tabService: TabService\n ) {\n this.iconService.registerAll([Code16, Development16, WatsonHealthPageScroll16]);\n }\n\n public addTab(type: ApiTabType): void {\n const {contentKey, key, name} = this.form.getRawValue();\n\n if (!contentKey || !key) {\n return;\n }\n this.closeModalEvent.emit({name, key, contentKey, type});\n }\n\n public backClick(): void {\n this.resetModal();\n }\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n this.resetModal();\n }\n\n public onTabTypeSelect(type: ApiTabType): void {\n this.selectedTabType$.next(type);\n }\n\n private resetModal(): void {\n this.selectedTabType$.next(null);\n this.form.reset();\n }\n\n private uniqueKeyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null =>\n this.tabService.configuredTabKeys.every((key: string) => key !== control.value)\n ? null\n : {uniqueKey: {value: control.value}};\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('dossierManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (documentDefinitionName | titlecase)})\n : ('dossierManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'dossierManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <button\n *ngFor=\"let tabType of tabTypes\"\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-edit-tab-modal',\n templateUrl: './dossier-management-edit-tab-modal.component.html',\n})\nexport class DossierManagementEditTabModalComponent {\n @Input() open: boolean;\n\n private _tab: ApiTabItem;\n @Input() public set tab(value: ApiTabItem) {\n if (!value) {\n return;\n }\n\n if (!!this.tabService.configuredContentKeys) { \n this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter(\n (tabKey: string) => tabKey !== value.contentKey\n );\n }\n\n this._tab = value;\n this.form = this.fb.group({\n name: this.fb.control(value.name),\n key: this.fb.control({value: value.key, disabled: true}, Validators.required),\n contentKey: this.fb.control(value.contentKey, Validators.required),\n });\n }\n public get tab(): ApiTabItem {\n return this._tab;\n }\n\n @Output() closeModalEvent = new EventEmitter<ApiTabItem | null>();\n\n public form: FormGroup;\n public configuredKeysForEdit: string[];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabService: TabService\n ) {}\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n }\n\n public editTab(): void {\n const {contentKey, name} = this.form.getRawValue();\n\n if (!contentKey) {\n return;\n }\n\n this.closeModalEvent.emit({...this.tab, name, contentKey});\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"form\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'dossierManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'dossier.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent>\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'dossierManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ColumnConfig, ViewType} from '@valtimo/components';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, tap} from 'rxjs';\nimport {TabManagementService, TabService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-tabs',\n templateUrl: './dossier-management-tabs.component.html',\n styleUrls: ['./dossier-management-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementTabsComponent implements AfterViewInit {\n @ViewChild('tabContentColumn') tabContentColumnTemplate: TemplateRef<any>;\n @ViewChild('tabTypeColumn') tabTypeColumnTemplate: TemplateRef<any>;\n @ViewChild('moveButtonsTemplate') moveButtonsTemplate: TemplateRef<any>;\n\n private _documentDefinitionName: string;\n @Input() public set documentDefinitionName(value: string) {\n if (!value) {\n return;\n }\n this._documentDefinitionName = value;\n this.tabManagementService.setCaseDefinitionId(value);\n this.tabManagementService.loadTabs();\n }\n public get documentDefinitionName(): string {\n return this._documentDefinitionName;\n }\n\n public readonly deleteRowKey$ = new BehaviorSubject<string | null>(null);\n public readonly showDeleteModal$: Observable<boolean> = this.deleteRowKey$.pipe(\n map((key: string | null) => !!key)\n );\n public readonly openEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly loading$: Observable<boolean> = this.tabManagementService.loading$;\n public readonly openAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n private _tabs: ApiTabItem[];\n public readonly tabs$ = this.tabManagementService.tabs$.pipe(\n tap((tabs: ApiTabItem[]) => {\n this._tabs = tabs;\n this.tabService.configuredContentKeys = tabs.map((tab: ApiTabItem) => tab.contentKey);\n this.tabService.configuredTabKeys = tabs.map((tab: ApiTabItem) => tab.key);\n this.lastItemIndex$.next(tabs.length - 1);\n })\n );\n public readonly tab$ = new BehaviorSubject<ApiTabItem | null>(null);\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly tabManagementService: TabManagementService,\n private readonly tabService: TabService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n this.fields$.next([\n {\n key: 'name',\n label: 'dossierManagement.tabManagement.columns.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'dossierManagement.tabManagement.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabTypeColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.type',\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabContentColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.content',\n },\n {\n className: 'valtimo-dossier-management-tabs__actions',\n key: '',\n label: '',\n template: this.moveButtonsTemplate,\n viewType: ViewType.TEMPLATE,\n },\n {\n actions: [\n {\n label: 'interface.delete',\n callback: this.openDeleteConfirmationModal.bind(this),\n type: 'danger',\n },\n ],\n className: 'valtimo-dossier-management-tabs__actions',\n key: '',\n label: '',\n viewType: ViewType.ACTION,\n },\n ]);\n\n this.cd.detectChanges();\n }\n\n public isTranslated(key: string): boolean {\n return this.translateService.instant(key) !== key;\n }\n\n public onArrowClick(direction: 'UP' | 'DOWN', index: number, event: Event): void {\n event.stopImmediatePropagation();\n const orderedTabs: ApiTabItem[] =\n direction === 'UP'\n ? this.swapTabs(this._tabs, index - 1, index)\n : this.swapTabs(this._tabs, index, index + 1);\n\n this.tabManagementService.dispatchAction(this.tabManagementService.editTabsOrder(orderedTabs));\n }\n\n public openAddTabModal(): void {\n this.openAddModal$.next(true);\n }\n\n public onRowClicked(tab: ApiTabItem): void {\n this.tab$.next(tab);\n this.openEditModal$.next(true);\n }\n\n public onCloseAddModalEvent(tab: ApiTabItem | null): void {\n this.openAddModal$.next(false);\n\n if (!tab) {\n return;\n }\n\n this.addTab(tab);\n }\n\n public onCloseEditModalEvent(tab: ApiTabItem | null): void {\n this.openEditModal$.next(false);\n this.tab$.next(null);\n\n if (!tab) {\n return;\n }\n\n this.editTab(tab);\n }\n\n public openDeleteConfirmationModal(tab: ApiTabItem): void {\n this.deleteRowKey$.next(tab.key);\n }\n\n public onConfirmEvent(tabKey: string): void {\n this.deleteTab(tabKey);\n }\n\n private addTab(tab: Partial<ApiTabItem>): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));\n }\n\n private deleteTab(tabKey: string): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));\n }\n\n private editTab(tab: ApiTabItem): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));\n }\n\n private swapTabs(tabItems: ApiTabItem[], index1: number, index2: number): ApiTabItem[] {\n const temp = [...tabItems];\n temp[index1] = temp.splice(index2, 1, temp[index1])[0];\n\n return temp;\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n header=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('dossierManagement.tabType.' + data.item.type)\n ? ('dossierManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n</ng-template>\n\n<ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('dossier.tabs.' + data.item.contentKey)\n ? ('dossier.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n</ng-template>\n\n<ng-template #addTabButton>\n <button cdsButton=\"primary\" (click)=\"openAddTabModal()\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveButtonsTemplate let-data=\"data\">\n <div class=\"move-buttons-container\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n (click)=\"onArrowClick('UP', data.index, $event)\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"(lastItemIndex$ | async) === data.index\"\n [iconOnly]=\"true\"\n (click)=\"onArrowClick('DOWN', data.index, $event)\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n\n<valtimo-dossier-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n></valtimo-dossier-management-add-tab-modal>\n\n<valtimo-dossier-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n></valtimo-dossier-management-edit-tab-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossierManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService} from '@valtimo/document';\nimport {filter, map, Observable, Subscription, switchMap} from 'rxjs';\nimport {ConfigService} from '@valtimo/config';\nimport {TabService} from '../../services';\nimport {TabEnum} from '../../models';\nimport {PageTitleService} from '@valtimo/components';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container',\n templateUrl: './dossier-management-detail-container.component.html',\n styleUrls: ['./dossier-management-detail-container.component.css'],\n})\nexport class DossierManagementDetailContainerComponent implements OnInit, OnDestroy {\n public currentTab: TabEnum;\n public caseListColumn!: boolean;\n public tabManagementEnabled!: boolean;\n\n private tabSubscription: Subscription;\n\n readonly TabEnum = TabEnum;\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n readonly documentDefinition$ = this.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinitionForManagement(documentDefinitionName)\n ),\n tap(documentDefinition => {\n this.pageTitleService.setCustomPageTitle(documentDefinition.schema.title);\n })\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly pageTitleService: PageTitleService\n ) {\n const featureToggles = this.configService.config.featureToggles;\n this.caseListColumn = !!featureToggles?.caseListColumn;\n this.tabManagementEnabled = !!featureToggles?.enableTabManagement;\n }\n\n ngOnInit(): void {\n this.openCurrentTabSubscription();\n }\n\n displayBodyComponent(tab: TabEnum): void {\n this.tabService.currentTab = tab;\n }\n\n openCurrentTabSubscription(): void {\n this.tabSubscription = this.tabService.currentTab$.subscribe(\n value => (this.currentTab = value)\n );\n }\n\n ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.CASE;\n this.tabSubscription?.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <ng-container *ngIf=\"documentDefinition$ | async as documentDefinition\">\n <div class=\"bg-light dossier-header\" *ngIf=\"documentDefinition.readOnly\">\n <h3 class=\"dossier-title\">\n <div class=\"pull-right\">\n <span class=\"badge badge-pill badge-info increase-size\">{{\n 'dossierManagement.readonly' | translate\n }}</span>\n </div>\n </h3>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"case-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n {{ 'dossierManagement.tabs.cases' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a\n id=\"search-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n {{ 'dossierManagement.tabs.searchFields' | translate }}\n </a>\n </li>\n <li class=\"nav-item\" *ngIf=\"caseListColumn\">\n <a\n id=\"list-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n {{ 'dossierManagement.tabs.listColumns' | translate }}\n </a>\n </li>\n <li class=\"nav-item\" *ngIf=\"tabManagementEnabled\">\n <a\n id=\"list-tab\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n {{ 'dossierManagement.tabs.tabManagement' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.CASE\">\n <valtimo-dossier-management-detail></valtimo-dossier-management-detail>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.SEARCH\">\n <valtimo-dossier-management-search-fields></valtimo-dossier-management-search-fields>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.LIST\">\n <valtimo-dossier-management-list-columns></valtimo-dossier-management-list-columns>\n </div>\n <div *ngIf=\"currentTab && currentTab === TabEnum.TABS\">\n <valtimo-dossier-management-tabs\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuService, ModalComponent} from '@valtimo/components';\nimport {DocumentService, DocumentDefinitionCreateRequest} from '@valtimo/document';\nimport {BehaviorSubject, Observable, Subject, Subscription} from 'rxjs';\nimport {switchMap, take, tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-upload',\n templateUrl: './dossier-management-upload.component.html',\n styleUrls: ['./dossier-management-upload.component.scss'],\n})\nexport class DossierManagementUploadComponent implements AfterViewInit, OnDestroy {\n @Input() show$: Observable<boolean>;\n @Output() definitionUploaded: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('uploadDefinitionModal') modal: ModalComponent;\n\n readonly clear$ = new Subject();\n\n readonly jsonString$ = new BehaviorSubject<string>('');\n\n readonly error$ = new BehaviorSubject<string>('');\n\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private showSubscription: Subscription;\n\n private fileSubscription: Subscription;\n\n private errorSubscription: Subscription;\n\n private readonly file$ = new BehaviorSubject<File>(undefined);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly menuService: MenuService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openFileSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription.unsubscribe();\n this.fileSubscription.unsubscribe();\n this.closeErrorSubscription();\n }\n\n setFile(file: File): void {\n this.clearError();\n this.file$.next(file);\n }\n\n uploadDefinition(): void {\n this.disable();\n\n this.jsonString$\n .pipe(\n switchMap(jsonString =>\n this.documentService\n .createDocumentDefinitionForManagement(new DocumentDefinitionCreateRequest(jsonString))\n .pipe(\n tap(\n // success\n () => {\n this.closeErrorSubscription();\n this.clearError();\n this.enable();\n this.hideModal();\n this.menuService.reload();\n this.definitionUploaded.emit();\n },\n // error\n () => {\n this.openErrorSubscription('dropzone.error.invalidDocDef');\n this.enable();\n }\n )\n )\n ),\n take(1)\n )\n .subscribe();\n }\n\n private openErrorSubscription(errorCode: string): void {\n this.closeErrorSubscription();\n this.errorSubscription = this.translateService.stream(errorCode).subscribe(error => {\n this.error$.next(error);\n });\n }\n\n private closeErrorSubscription(): void {\n if (this.errorSubscription) {\n this.errorSubscription.unsubscribe();\n }\n }\n\n private clearError(): void {\n this.error$.next('');\n }\n\n private openFileSubscription(): void {\n this.fileSubscription = this.file$.subscribe(file => {\n if (file) {\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = reader.result.toString();\n if (this.stringIsValidJson(result)) {\n this.jsonString$.next(result);\n } else {\n this.clearJsonString();\n this.error$.next(this.translateService.instant('dropzone.error.invalidJson'));\n }\n };\n\n reader.readAsText(file);\n } else {\n this.clearJsonString();\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.show$.subscribe(show => {\n if (show) {\n this.showModal();\n } else {\n this.hideModal();\n }\n\n this.clearJsonString();\n this.clearError();\n this.clearDropzone();\n });\n }\n\n private clearJsonString(): void {\n this.jsonString$.next('');\n }\n\n private clearDropzone(): void {\n this.clear$.next(null);\n }\n\n private showModal(): void {\n this.modal.show();\n }\n\n private hideModal(): void {\n this.modal.hide();\n }\n\n private stringIsValidJson(string: string) {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #uploadDefinitionModal\n [title]=\"'Upload document definition' | translate\"\n showFooter=\"true\"\n>\n <div class=\"mt-2\" body>\n <valtimo-dropzone\n [clear$]=\"clear$\"\n (fileSelected)=\"setFile($event)\"\n [disabled]=\"disabled$ | async\"\n [subtitle]=\"'dropzone.jsonDocDef' | translate\"\n [externalError$]=\"error$\"\n [maxFiles]=\"1\"\n ></valtimo-dropzone>\n </div>\n <div footer>\n <ng-container *ngIf=\"(jsonString$ | async) && (error$ | async) === ''; else disabledUpload\">\n <button [disabled]=\"disabled$ | async\" class=\"btn btn-primary\" (click)=\"uploadDefinition()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload' | translate }}\n </button>\n </ng-container>\n </div>\n</valtimo-modal>\n\n<ng-template #disabledUpload>\n <button [disabled]=\"true\" class=\"btn btn-primary\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {DocumentService, DocumentDefinition, Page} from '@valtimo/document';\nimport {Router} from '@angular/router';\nimport moment from 'moment';\nimport {BehaviorSubject} from 'rxjs';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-dossier-management-list',\n templateUrl: './dossier-management-list.component.html',\n styleUrls: ['./dossier-management-list.component.scss'],\n})\nexport class DossierManagementListComponent {\n public dossiers: DocumentDefinition[] = [];\n public pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n public pageParam = 0;\n public dossierFields = [\n {key: 'schema.title', label: 'Title'},\n {key: 'createdOn', label: 'Created On'},\n {key: 'readOnly', label: 'Read-only'},\n ];\n\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private documentService: DocumentService,\n private router: Router\n ) {}\n\n public paginationClicked(page) {\n this.pageParam = page - 1;\n this.getDocumentDefinitions();\n }\n\n paginationSet() {\n this.getDocumentDefinitions();\n }\n\n redirectToDetails(documentDefinition: DocumentDefinition) {\n this.router.navigate(['/dossier-management/dossier', documentDefinition.id.name]);\n }\n\n private getDocumentDefinitions() {\n this.documentService\n .queryDefinitionsForManagement({page: this.pageParam, size: this.pagination.size})\n .subscribe((documentDefinitionPage: Page<DocumentDefinition>) => {\n this.pagination.collectionSize = documentDefinitionPage.totalElements;\n this.dossiers = documentDefinitionPage.content;\n this.dossiers.map((dossier: DocumentDefinition) => {\n dossier.createdOn = moment(dossier.createdOn).format('DD MMM YYYY HH:mm');\n });\n });\n }\n\n showModal() {\n this.showModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"btn-group mt-m3px mb-3 float-right\">\n <button class=\"btn btn-secondary btn-space mr-0\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload document definition' | translate }}\n </button>\n </div>\n <div class=\"clearfix\"></div>\n <valtimo-widget>\n <valtimo-list\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [header]=\"true\"\n [viewMode]=\"true\"\n [isSearchable]=\"true\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet()\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Dossiers' | translate }}</h3>\n <h5 class=\"list-header-description\">{{ 'Overview of all Dossiers' | translate }}</h5>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </div>\n</div>\n\n<valtimo-dossier-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"paginationSet()\"\n></valtimo-dossier-management-upload>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\n\nconst routes: Routes = [\n {\n path: 'dossier-management',\n component: DossierManagementListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossiers', roles: [ROLE_ADMIN]},\n },\n {\n path: 'dossier-management/dossier/:name',\n component: DossierManagementDetailContainerComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossier details', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class DossierManagementRoutingModule {}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n FormModule,\n InputModule,\n ListModule,\n ModalModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n TableModule,\n TooltipIconModule,\n ValtimoCdsModalDirectiveModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule} from '@valtimo/config';\nimport {\n ButtonModule,\n CheckboxModule,\n DropdownModule,\n IconModule,\n InputModule as CarbonInputModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n ComboBoxModule,\n} from 'carbon-components-angular';\nimport {DossierManagementAssigneeComponent} from './components/dossier-management-assignee/dossier-management-assignee.component';\nimport {DossierManagementConnectModalComponent} from './components/dossier-management-connect-modal/dossier-management-connect-modal.component';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\nimport {DossierManagementDetailComponent} from './components/dossier-management-detail/dossier-management-detail.component';\nimport {DossierManagementLinkProcessComponent} from './components/dossier-management-link-process/dossier-management-link-process.component';\nimport {DossierManagementListColumnsComponent} from './components/dossier-management-list-columns/dossier-management-list-columns.component';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {DossierManagementRemoveModalComponent} from './components/dossier-management-remove-modal/dossier-management-remove-modal.component';\nimport {DossierManagementSearchFieldsComponent} from './components/dossier-management-search-fields/dossier-management-search-fields.component';\nimport {DossierManagementAddTabModalComponent} from './components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component';\nimport {DossierManagementTabsComponent} from './components/dossier-management-tabs/dossier-management-tabs.component';\nimport {TabFormComponent} from './components/dossier-management-tabs/tab-form/tab-form.component';\nimport {DossierManagementUploadComponent} from './components/dossier-management-upload/dossier-management-upload.component';\nimport {DossierManagementRoutingModule} from './dossier-management-routing.module';\nimport {TabManagementService} from './services';\nimport {DossierManagementEditTabModalComponent} from './components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component';\n\n@NgModule({\n declarations: [\n DossierManagementListComponent,\n DossierManagementDetailComponent,\n DossierManagementConnectModalComponent,\n DossierManagementRemoveModalComponent,\n DossierManagementUploadComponent,\n DossierManagementLinkProcessComponent,\n DossierManagementSearchFieldsComponent,\n DossierManagementDetailContainerComponent,\n DossierManagementAssigneeComponent,\n DossierManagementListColumnsComponent,\n DossierManagementTabsComponent,\n DossierManagementAddTabModalComponent,\n TabFormComponent,\n DossierManagementEditTabModalComponent,\n ],\n imports: [\n CommonModule,\n WidgetModule,\n DropzoneModule,\n ListModule,\n DossierManagementRoutingModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ConfigModule,\n NgbTooltipModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n InputModule,\n SelectModule,\n FormModule,\n NotificationModule,\n ButtonModule,\n IconModule,\n CarbonModalModule,\n CarbonInputModule,\n ReactiveFormsModule,\n DropdownModule,\n CheckboxModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n LoadingModule,\n LinkModule,\n ConfirmationModalModule,\n CarbonMultiInputModule,\n TableModule,\n ValtimoCdsModalDirectiveModule,\n CarbonListModule,\n ComboBoxModule,\n ],\n providers: [TabManagementService],\n})\nexport class DossierManagementModule {}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of dossier-management\n */\n\nexport * from './lib/dossier-management.module';\nexport * from './lib/components/dossier-management-list/dossier-management-list.component';\nexport * from './lib/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5","i1","i2","i8","tap","i6","i7","i7.DossierManagementConnectModalComponent","i8.DossierManagementRemoveModalComponent","i9.DossierManagementLinkProcessComponent","i10.DossierManagementAssigneeComponent","i11","take","i1.TabService","i3.TabService","i5.TabFormComponent","i2.TabService","i2.TabManagementService","i6.DossierManagementAddTabModalComponent","i7.DossierManagementEditTabModalComponent","i4.TabService","i7.DossierManagementDetailComponent","i8.DossierManagementSearchFieldsComponent","i9.DossierManagementListColumnsComponent","i10.DossierManagementTabsComponent","switchMap","i4.DossierManagementUploadComponent","CarbonModalModule","CarbonInputModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-dossier-management.mjs","sources":["../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-assignee/dossier-management-assignee.component.html","../../../../projects/valtimo/dossier-management/src/lib/models/tab.enum.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/tab-management.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-export.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-detail.service.ts","../../../../projects/valtimo/dossier-management/src/lib/services/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/models/list-column.model.ts","../../../../projects/valtimo/dossier-management/src/lib/models/index.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-link-process/dossier-management-link-process.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-link-process/dossier-management-link-process.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail/dossier-management-detail.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/tab-form/tab-form.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-tabs/dossier-management-tabs.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-document-definition/dossier-management-document-definition.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-document-definition/dossier-management-document-definition.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-processes/dossier-management-processes.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-processes/dossier-management-processes.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.constants.ts","../../../../projects/valtimo/dossier-management/src/lib/services/dossier-import.service.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-upload/dossier-management-upload.component.html","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.ts","../../../../projects/valtimo/dossier-management/src/lib/components/dossier-management-list/dossier-management-list.component.html","../../../../projects/valtimo/dossier-management/src/lib/dossier-management-routing.module.ts","../../../../projects/valtimo/dossier-management/src/lib/dossier-management.module.ts","../../../../projects/valtimo/dossier-management/src/public-api.ts","../../../../projects/valtimo/dossier-management/src/valtimo-dossier-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {CaseSettings, DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-assignee',\n templateUrl: './dossier-management-assignee.component.html',\n styleUrls: ['./dossier-management-assignee.component.css'],\n})\nexport class DossierManagementAssigneeComponent {\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || '')\n );\n\n readonly currentValue$: Observable<CaseSettings> = this._refresh$.pipe(\n switchMap(() => this.documentDefinitionName$),\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettingsForManagement(documentDefinitionName)\n ),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private route: ActivatedRoute\n ) {\n this.disabled$ = new BehaviorSubject<boolean>(false);\n }\n\n updateCaseSettings(caseSettings: CaseSettings, documentDefinitionName: string): void {\n this.disableInput();\n\n this.documentService\n .patchCaseSettingsForManagement(documentDefinitionName, caseSettings)\n .subscribe(\n () => {\n this.enableInput();\n this.refreshSettings();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n disableInput(): void {\n this.disabled$.next(true);\n }\n\n enableInput(): void {\n this.disabled$.next(false);\n }\n\n private refreshSettings(): void {\n this._refresh$.next(null);\n }\n\n toggleAssignee(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: !currentSettings?.canHaveAssignee,\n autoAssignTasks: currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n\n toggleTaskAssignment(currentSettings: CaseSettings, documentDefinitionName: string) {\n this.updateCaseSettings(\n {\n canHaveAssignee: currentSettings?.canHaveAssignee,\n autoAssignTasks: !currentSettings.autoAssignTasks,\n },\n documentDefinitionName\n );\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<h2 class=\"mb-4 mt-6\">{{ 'dossierManagement.toggleAssignee.title' | translate }}</h2>\n\n<ng-container\n *ngIf=\"{\n currentValue: currentValue$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.canHaveAssignee\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleAssignee(obs?.currentValue, obs.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAssignee.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n <ng-container *ngIf=\"obs?.currentValue?.canHaveAssignee\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mr-5\"\n placement=\"bottom\"\n >\n <input\n [checked]=\"obs?.currentValue?.autoAssignTasks\"\n class=\"custom-control-input\"\n type=\"checkbox\"\n [disabled]=\"obs.disabled\"\n (click)=\"toggleTaskAssignment(obs?.currentValue, obs?.documentDefinitionName)\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'dossierManagement.toggleAutoAssignTasks.checkboxDescription' | translate\n }}</span>\n </label>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n DOCUMENT = 'document',\n CASE = 'case',\n PROCESSES = 'processes',\n SEARCH = 'search',\n LIST = 'list',\n TABS = 'tabs',\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CASE_TAB_TOKEN, CaseTabConfig, DefaultTabs} from '@valtimo/dossier';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable} from 'rxjs';\n\nimport {TabEnum} from '../models/tab.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n public configuredTabKeys: string[];\n\n private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.DOCUMENT);\n public get currentTab$(): Observable<TabEnum> {\n return this._currentTab$.asObservable();\n }\n public set currentTab(tab: TabEnum) {\n this._currentTab$.next(tab);\n }\n\n private _configuredContentKeys$ = new BehaviorSubject<string[]>([]);\n public get configuredContentKeys$(): Observable<string[]> {\n return this._configuredContentKeys$.asObservable();\n }\n public set configuredContentKeys(value: string[]) {\n this._configuredContentKeys$.next(value);\n }\n\n public readonly formDefinitions$: Observable<ListItem[]> = this.formService\n .getAllFormDefinitions()\n .pipe(\n map((formDefinitions: FormDefinitionOption[]) =>\n formDefinitions.map((formDefinition: FormDefinitionOption) => ({\n contentKey: formDefinition.name,\n content: formDefinition.name,\n selected: false,\n }))\n )\n );\n\n public readonly customComponentKeys$ = new BehaviorSubject<ListItem[]>(\n !this.caseTabConfig\n ? []\n : Object.keys(this.caseTabConfig).map((contentKey: string) => ({\n contentKey,\n content: contentKey,\n selected: false,\n }))\n );\n\n public readonly defaultTabs$: Observable<ListItem[]> = this.translateService.stream('key').pipe(\n map(() =>\n Object.values(DefaultTabs).map((key: string) => ({\n contentKey: key,\n content: this.translateService.instant(`dossier.tabs.${key}`),\n selected: false,\n }))\n )\n );\n\n public readonly disableAddTabs$: Observable<{\n standard: boolean;\n custom: boolean;\n formIO: boolean;\n }> = combineLatest([\n this.configuredContentKeys$,\n this.formDefinitions$,\n this.defaultTabs$,\n this.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => ({\n standard: defaultTabs.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n custom:\n !customComponentKeys.length ||\n customComponentKeys.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n formIO:\n !formDefinitions.length ||\n formDefinitions.every((tabItem: ListItem) => tabKeys.includes(tabItem.contentKey)),\n }))\n );\n\n constructor(\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n private readonly formService: FormService,\n private readonly translateService: TranslateService\n ) {}\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\n\n@Injectable()\nexport class TabManagementService {\n private _valtimoEndpointUri: string;\n private _caseDefinitionId: string;\n\n public readonly tabs$ = new BehaviorSubject<ApiTabItem[]>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/v1/case-definition`;\n }\n\n public loadTabs(): void {\n this.loading$.next(true);\n this.getTabList()\n .pipe(take(1))\n .subscribe({\n next: (items: ApiTabItem[]) => {\n this.tabs$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public dispatchAction(actionResult: Observable<ApiTabItem | ApiTabItem[] | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n this.tabs$.next([]);\n }),\n switchMap((result: ApiTabItem | ApiTabItem[] | null) =>\n Array.isArray(result) ? of(result) : this.getTabList()\n ),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (tabs: ApiTabItem[]) => {\n this.loading$.next(false);\n this.tabs$.next(tabs);\n },\n error: error => {\n console.log(error);\n },\n });\n }\n\n public addTab(tab: Partial<ApiTabItem>): Observable<ApiTabItem> {\n return this.http.post<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n this.getTabDto(tab)\n );\n }\n\n public deleteTab(tabKey: string): Observable<null> {\n return this.http.delete<null>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`\n );\n }\n\n public editTab(tab: Partial<ApiTabItem>, tabKey: string): Observable<ApiTabItem> {\n return this.http.put<ApiTabItem>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab/${tabKey}`,\n this.getTabDto(tab)\n );\n }\n\n public editTabsOrder(tabList: ApiTabItem[]): Observable<ApiTabItem[]> {\n return this.http.put<ApiTabItem[]>(\n `${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`,\n tabList\n );\n }\n\n public setCaseDefinitionId(caseDefinitionId: string): void {\n this._caseDefinitionId = caseDefinitionId;\n }\n\n private getTabList(): Observable<ApiTabItem[]> {\n return this.http.get<ApiTabItem[]>(`${this._valtimoEndpointUri}/${this._caseDefinitionId}/tab`);\n }\n\n private getTabDto(tab: Partial<ApiTabItem>): Partial<ApiTabItem> {\n if (tab.name === '') {\n delete tab.name;\n }\n\n return tab;\n }\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n *\n * You may obtain a copy of the License at\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpResponse} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {InterceptorSkipHeader} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierExportService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public exportDocumentDefinition(\n documentDefinitionName: string,\n version = 1\n ): Observable<HttpResponse<Blob>> {\n return this.http.get<Blob>(\n `${this.valtimoEndpointUri}management/v1/case/${documentDefinitionName}/${version}/export`,\n {observe: 'response', responseType: 'blob' as 'json', headers: InterceptorSkipHeader}\n );\n }\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {EditorModel, PageTitleService} from '@valtimo/components';\n\n@Injectable()\nexport class DossierDetailService implements OnDestroy {\n private readonly _loadingDocumentDefinition$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedVersionNumber$ = new BehaviorSubject<number | null>(null);\n private readonly _selectedDocumentDefinitionName$ = new BehaviorSubject<string>('');\n private readonly _documentDefinition$ = new BehaviorSubject<DocumentDefinition | null>(null);\n private readonly _documentDefinitionModel$: Observable<EditorModel> =\n this.documentDefinition$.pipe(\n map(definition => ({\n value: JSON.stringify(definition, null, 2),\n language: 'json',\n }))\n );\n\n public get selectedVersionNumber$(): Observable<number> {\n return this._selectedVersionNumber$.pipe(\n filter(version => typeof version === 'number'),\n distinctUntilChanged()\n );\n }\n\n public get selectedDocumentDefinitionName$(): Observable<string> {\n return this._selectedDocumentDefinitionName$.pipe(\n filter(name => !!name),\n distinctUntilChanged()\n );\n }\n\n public get selectedDocumentDefinitionIsReadOnly$(): Observable<boolean> {\n return this.documentDefinition$.pipe(\n map(definition => definition.readOnly),\n distinctUntilChanged()\n );\n }\n\n public get loadingDocumentDefinition$(): Observable<boolean> {\n return this._loadingDocumentDefinition$.asObservable();\n }\n\n public get documentDefinition$(): Observable<DocumentDefinition> {\n return this._documentDefinition$.pipe(filter(def => !!def));\n }\n\n public get documentDefinitionModel$(): Observable<EditorModel> {\n return this._documentDefinitionModel$;\n }\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly pageTitleService: PageTitleService\n ) {\n this.openDocumentDefinitionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setSelectedVersionNumber(versionNumber: number): void {\n this._selectedVersionNumber$.next(versionNumber);\n }\n\n public setSelectedDocumentDefinitionName(name: string): void {\n this._selectedDocumentDefinitionName$.next(name);\n }\n\n public setLoadingDocumentDefinition(loading: boolean): void {\n this._loadingDocumentDefinition$.next(loading);\n }\n private openDocumentDefinitionSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.selectedVersionNumber$, this.selectedDocumentDefinitionName$])\n .pipe(\n tap(() => {\n this.pageTitleService.setCustomPageTitleSet(false);\n this.setLoadingDocumentDefinition(true);\n }),\n switchMap(([selectedVersion, selectedDocumentDefinitionName]) =>\n this.documentService.getDocumentDefinitionByVersion(\n selectedDocumentDefinitionName,\n selectedVersion\n )\n ),\n tap(res => {\n this._documentDefinition$.next(res);\n this.pageTitleService.setCustomPageTitle(res?.schema?.title || '-');\n this.setLoadingDocumentDefinition(false);\n })\n )\n .subscribe()\n );\n }\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab.service';\nexport * from './tab-management.service';\nexport * from './dossier-export.service';\nexport * from './dossier-detail.service';\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ModalComponent} from '@valtimo/components';\nimport {\n DocumentDefinition,\n DocumentService,\n ProcessDocumentDefinition,\n ProcessDocumentDefinitionRequest,\n} from '@valtimo/document';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {NotificationService} from 'carbon-components-angular';\nimport {switchMap, take} from 'rxjs';\nimport {DossierDetailService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-connect-modal',\n templateUrl: './dossier-management-connect-modal.component.html',\n styleUrls: ['./dossier-management-connect-modal.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierManagementConnectModalComponent implements OnInit {\n @ViewChild('dossierConnectModal') private readonly _modal: ModalComponent;\n @Output() public reloadProcessDocumentDefinitions = new EventEmitter<any>();\n\n public documentDefinition: DocumentDefinition | null = null;\n public processDefinitions: ProcessDefinition[];\n public newDocumentProcessDefinition: ProcessDefinition | null = null;\n public newDocumentProcessDefinitionInit = true;\n public newDocumentProcessDefinitionStartableByUser = false;\n public processDocumentDefinitionExists: any = {};\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly notificationService: NotificationService,\n private readonly processService: ProcessService,\n private readonly translateService: TranslateService\n ) {}\n\n public loadProcessDocumentDefinitions(): void {\n if (!this.documentDefinition) {\n return;\n }\n const {name, version} = this.documentDefinition.id;\n this.processDocumentDefinitionExists = {};\n this.documentService\n .findProcessDocumentDefinitionsByVersion(name, version)\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n processDocumentDefinitions.forEach(\n (processDocumentDefinition: ProcessDocumentDefinition) => {\n this.processDocumentDefinitionExists[\n processDocumentDefinition.id.processDefinitionKey\n ] = true;\n }\n );\n });\n }\n\n public loadProcessDefinitions(): void {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n public ngOnInit(): void {\n this.loadProcessDefinitions();\n }\n\n public openModal(dossier: DocumentDefinition): void {\n this.documentDefinition = dossier;\n this.newDocumentProcessDefinition = null;\n this.newDocumentProcessDefinitionInit = true;\n this.newDocumentProcessDefinitionStartableByUser = false;\n this.loadProcessDocumentDefinitions();\n this._modal.show();\n }\n\n public submit(): void {\n if (!this.documentDefinition || !this.newDocumentProcessDefinition) {\n return;\n }\n\n const request: ProcessDocumentDefinitionRequest = {\n canInitializeDocument: this.newDocumentProcessDefinitionInit,\n documentDefinitionName: this.documentDefinition.id.name,\n documentDefinitionVersion: this.documentDefinition.id.version,\n processDefinitionKey: this.newDocumentProcessDefinition.key,\n startableByUser: this.newDocumentProcessDefinitionStartableByUser,\n };\n\n this.dossierDetailService.selectedVersionNumber$\n .pipe(\n switchMap((documentDefinitionVersion: number) =>\n this.documentService.createProcessDocumentDefinition({\n ...request,\n documentDefinitionVersion,\n })\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.linkSuccess'\n ),\n duration: 5000,\n });\n this.reloadProcessDocumentDefinitions.emit();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.linkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #dossierConnectModal\n elementId=\"dossierConnectModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"Connect document definition to process definition\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <p>\n {{ 'Select process definition for document definition' | translate }}\n <strong>{{ documentDefinition.id.name }} *</strong>\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"newDocumentProcessDefinition\">\n <option [ngValue]=\"null\">{{ 'dossierManagement.selectProcessDef' | translate }}</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [disabled]=\"processDocumentDefinitionExists[processDefinition.key]\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n </div>\n <p>\n {{ 'Select options for the selected process' | translate }}\n </p>\n <div class=\"input-group mb-3 align-items-center\">\n <label\n class=\"custom-control custom-checkbox custom-control-inline pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.processCreatesCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionInit\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.processCreatesCase' | translate\n }}</span>\n </label>\n <label\n class=\"custom-control custom-checkbox custom-control-inline ml-2 pl-6 mb-0\"\n placement=\"bottom\"\n ngbTooltip=\"{{ 'processCaseConnection.startableWithinCaseTooltip' | translate }}\"\n >\n <input\n class=\"custom-control-input\"\n type=\"checkbox\"\n [(ngModel)]=\"newDocumentProcessDefinitionStartableByUser\"\n /><span class=\"custom-control-label custom-control-color\">{{\n 'processCaseConnection.startableWithinCase' | translate\n }}</span>\n </label>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!newDocumentProcessDefinition\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype ListColumnModal = 'create' | 'edit';\n\nexport {ListColumnModal};\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './list-column.model';\nexport * from './tab.enum';\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnInit} from '@angular/core';\nimport {ConfigService, UploadProvider, ValtimoConfig} from '@valtimo/config';\nimport {BehaviorSubject, map, Observable} from 'rxjs';\nimport {SelectItem} from '@valtimo/components';\nimport {ProcessService} from '@valtimo/process';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService} from '@valtimo/document';\n\n@Component({\n selector: 'valtimo-dossier-management-link-process',\n templateUrl: './dossier-management-link-process.component.html',\n styleUrls: ['./dossier-management-link-process.component.scss'],\n})\nexport class DossierManagementLinkProcessComponent implements OnInit {\n documentenApiUploadProvider!: boolean;\n documentDefinitionName: string | null = null;\n\n readonly selectionId$ = new BehaviorSubject<string>('');\n readonly processItems$: Observable<Array<SelectItem>> = this.processService\n .getProcessDefinitions()\n .pipe(\n map(definitions => definitions.filter(definition => !!definition?.key) || []),\n map(processes => processes.map(process => ({text: process?.name || '-', id: process.key})))\n );\n\n readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService\n ) {\n this.setDocumentenApiUploaderProvider(configService.config);\n this.documentDefinitionName = this.route.snapshot.paramMap.get('name');\n }\n\n ngOnInit(): void {\n if (this.documentenApiUploadProvider) {\n this.getDefaultSelection();\n }\n }\n\n selectProcess(processDefinitionKey: string): void {\n this.disabled$.next(true);\n const currentSelectionId = this.selectionId$.getValue();\n if (processDefinitionKey && processDefinitionKey !== currentSelectionId) {\n this.disabled$.next(true);\n this.documentService\n .updateLinkedUploadProcess(this.documentDefinitionName, processDefinitionKey)\n .subscribe(processLink => {\n this.selectionId$.next(processLink.processDefinitionKey);\n this.disabled$.next(false);\n });\n } else if (!processDefinitionKey) {\n this.documentService.deleteLinkedUploadProcess(this.documentDefinitionName).subscribe(() => {\n this.disabled$.next(false);\n });\n }\n }\n\n private setDocumentenApiUploaderProvider(config: ValtimoConfig): void {\n this.documentenApiUploadProvider = config.uploadProvider === UploadProvider.DOCUMENTEN_API;\n }\n\n private getDefaultSelection(): void {\n this.documentService\n .getLinkedUploadProcess(this.documentDefinitionName)\n .subscribe(linkedUploadProcess => {\n if (linkedUploadProcess) {\n this.selectionId$.next(linkedUploadProcess.processDefinitionKey);\n }\n });\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"documentenApiUploadProvider\">\n <h2 class=\"mb-4\">{{ 'dossierManagement.linkProcess.title' | translate }}</h2>\n <v-paragraph [margin]=\"true\">{{\n 'dossierManagement.linkProcess.description' | translate\n }}</v-paragraph>\n <ng-container\n *ngIf=\"{\n processItems: processItems$ | async,\n disabled: disabled$ | async,\n defaultSelectionId: selectionId$ | async\n } as obs\"\n >\n <v-select\n *ngIf=\"obs.processItems\"\n (selectedChange)=\"selectProcess($event)\"\n [defaultSelectionId]=\"obs.defaultSelectionId\"\n [disabled]=\"obs.disabled\"\n [items]=\"obs.processItems\"\n [loading]=\"!obs.processItems\"\n [margin]=\"true\"\n [required]=\"false\"\n ></v-select>\n </ng-container>\n</ng-container>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {DocumentDefinition, DocumentService} from '@valtimo/document';\nimport {Observable, switchMap} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-detail',\n templateUrl: './dossier-management-detail.component.html',\n styleUrls: ['./dossier-management-detail.component.scss'],\n})\nexport class DossierManagementDetailComponent {\n public readonly documentDefinition$: Observable<DocumentDefinition> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.getDocumentDefinitionForManagement(params.get('name') ?? '')\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute\n ) {}\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"documentDefinition$ | async\">\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <valtimo-dossier-management-link-process></valtimo-dossier-management-link-process>\n\n <valtimo-extension\n module=\"dossier-management\"\n page=\"dossier\"\n section=\"right-panel\"\n ></valtimo-extension>\n <valtimo-dossier-management-assignee></valtimo-dossier-management-assignee>\n </div>\n </div>\n </valtimo-widget>\n</div>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n ColumnConfig,\n ModalComponent,\n MoveRowDirection,\n MoveRowEvent,\n MultiInputOutput,\n MultiInputValues,\n SelectItem,\n TableColumn,\n ViewType,\n} from '@valtimo/components';\nimport {\n SearchField,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '@valtimo/config';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-management-search-fields',\n templateUrl: './dossier-management-search-fields.component.html',\n styleUrls: ['./dossier-management-search-fields.component.scss'],\n})\nexport class DossierManagementSearchFieldsComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('searchFieldModal') modal: ModalComponent;\n\n @Output() searchField: EventEmitter<SearchField> = new EventEmitter();\n\n public readonly downloadName$ = new BehaviorSubject<string>('');\n public readonly downloadUrl$ = new BehaviorSubject<SafeUrl | undefined>(undefined);\n public readonly disableInput$ = new BehaviorSubject<boolean>(false);\n public readonly selectedSearchField$ = new BehaviorSubject<SearchField | undefined>(undefined);\n public readonly formData$ = new BehaviorSubject<SearchField | null>(null);\n public readonly valid$ = new BehaviorSubject<boolean>(false);\n\n private _subscriptions = new Subscription();\n\n public readonly actionItems: ActionItem[] = [\n {\n callback: this.deleteSelectedSearchField.bind(this),\n label: 'interface.delete',\n type: 'danger',\n },\n ];\n public readonly fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'title',\n label: 'searchFieldsOverview.title',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'key',\n label: 'searchFieldsOverview.key',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'path',\n label: 'searchFieldsOverview.path',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'dataType',\n label: 'searchFieldsOverview.dataType',\n },\n {\n viewType: ViewType.TEXT,\n sortable: false,\n key: 'fieldType',\n label: 'searchFieldsOverview.fieldType',\n },\n ];\n\n readonly dropdownColumns$ = new BehaviorSubject<Array<TableColumn>>([\n {\n labelTranslationKey: 'searchFieldsOverview.id',\n dataKey: 'key',\n },\n {\n labelTranslationKey: 'searchFieldsOverview.text',\n dataKey: 'value',\n },\n ]);\n\n private readonly DATA_TYPES: Array<SearchFieldDataType> = [\n 'text',\n 'number',\n 'date',\n 'datetime',\n 'boolean',\n ];\n readonly dataTypeItems$: Observable<Array<SelectItem>> = this.translateService.stream('key').pipe(\n map(() =>\n this.DATA_TYPES.map(dataType => ({\n id: dataType,\n text: this.translateService.instant(`searchFields.${dataType}`),\n }))\n )\n );\n\n readonly dataTypeIsBoolean$ = new BehaviorSubject<boolean>(false);\n private readonly dataTypeIsText$ = new BehaviorSubject<boolean>(false);\n private readonly ALL_FIELD_TYPES: Array<SearchFieldFieldType> = [\n 'single',\n 'range',\n 'single-select-dropdown',\n 'multi-select-dropdown',\n ];\n private readonly NON_TEXT_FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n private readonly BOOLEAN_FIELD_TYPES: Array<SearchFieldFieldType> = ['single'];\n readonly fieldTypeItems$: Observable<Array<SelectItem>> = combineLatest([\n this.dataTypeIsBoolean$,\n this.dataTypeIsText$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeIsBoolean, dataTypeIsText]) => {\n if (dataTypeIsBoolean) {\n return this.BOOLEAN_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n } else if (!dataTypeIsText) {\n return this.NON_TEXT_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n }\n\n return this.ALL_FIELD_TYPES.map(fieldType => ({\n id: fieldType,\n text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),\n }));\n })\n );\n\n private readonly MATCH_TYPES: Array<SearchFieldMatchType> = ['exact', 'like'];\n readonly matchTypeItems$: Observable<Array<SelectItem>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this.MATCH_TYPES.map(matchType => ({\n id: matchType,\n text: this.translateService.instant(`searchFieldsOverview.${matchType}`),\n }))\n )\n );\n\n private _documentDefinitionName: string;\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName),\n tap((documentDefinitionName: string) => (this._documentDefinitionName = documentDefinitionName))\n );\n\n private cachedSearchFields!: Array<SearchField>;\n searchFieldActionTypeIsAdd: boolean;\n loadingSearchFields = true;\n showSearchFieldsForm = false;\n\n private readonly refreshSearchFields$ = new BehaviorSubject<null>(null);\n\n private readonly searchFields$: Observable<Array<SearchField>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshSearchFields$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getDocumentSearchFields(documentDefinitionName)\n ),\n tap(searchFields => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (searchFields && Array.isArray(searchFields) && searchFields.length > 0) {\n this.setDownload(documentDefinitionName, searchFields);\n }\n });\n }),\n tap(searchFields => {\n this.cachedSearchFields = searchFields;\n this.loadingSearchFields = false;\n })\n );\n\n readonly translatedSearchFields$: Observable<Array<SearchField>> = combineLatest([\n this.searchFields$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([searchFields]) =>\n searchFields.map(searchField => ({\n ...searchField,\n title: searchField.title ? searchField.title : '',\n dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),\n matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),\n fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),\n }))\n )\n );\n\n readonly fieldTypeIsDropdown$ = new BehaviorSubject<boolean>(false);\n\n readonly dropdownDataProviderNames$: Observable<Array<SelectItem>> = combineLatest([\n this.documentService.getDropdownDataProviders(),\n this.translateService.stream('key'),\n ]).pipe(\n map(([providers]) =>\n providers.map(provider => ({\n id: provider,\n text: this.translateService.instant(`searchFieldsOverview.${provider}`),\n }))\n )\n );\n\n private readonly modifiedDropdownValues$ = new BehaviorSubject<MultiInputValues>([]);\n\n readonly initialDropdownValues$: Observable<MultiInputValues> = combineLatest([\n this.documentDefinitionName$,\n this.formData$,\n ]).pipe(\n distinctUntilChanged(\n ([prevDocumentDefinitionName, prevFormData], [currDocumentDefinitionName, currFormData]) =>\n prevDocumentDefinitionName === currDocumentDefinitionName &&\n prevFormData?.dropdownDataProvider === currFormData?.dropdownDataProvider &&\n prevFormData?.key === currFormData?.key\n ),\n switchMap(([documentDefinitionName, formData]) => {\n if (!formData || !formData.dropdownDataProvider) {\n return of([]);\n }\n\n return this.documentService\n .getDropdownData(formData.dropdownDataProvider, documentDefinitionName, formData.key)\n .pipe(\n map(dropdownData => {\n if (dropdownData) {\n return Object.keys(dropdownData).map(dropdownFieldKey => ({\n key: dropdownFieldKey,\n value: dropdownData[dropdownFieldKey],\n }));\n }\n\n return [];\n })\n );\n })\n );\n\n readonly showMatchTypes$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n ]).pipe(map(([dataTypeIsText, fieldTypeIsDropdown]) => dataTypeIsText && !fieldTypeIsDropdown));\n\n public readonly showReadonlyDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n !this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n public readonly showInputDropdownTable$: Observable<boolean> = combineLatest([\n this.dataTypeIsText$,\n this.fieldTypeIsDropdown$,\n this.formData$,\n ]).pipe(\n map(\n ([dataTypeIsText, fieldTypeIsDropdown, formData]) =>\n dataTypeIsText &&\n fieldTypeIsDropdown &&\n !!formData?.dropdownDataProvider &&\n this.dropdownDataProviderSupportsUpdates(formData?.dropdownDataProvider)\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly sanitizer: DomSanitizer,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n }\n\n public ngOnInit(): void {\n this.openSelectedSearchFieldSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.openModalShowingSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public searchFieldClicked(searchField: SearchField, searchFieldActionTypeIsAdd: boolean): void {\n this.disableInput$.pipe(take(1)).subscribe(inputDisabled => {\n if (!inputDisabled) {\n this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;\n const searchFieldToSelect = this.cachedSearchFields.find(\n field => field.key === searchField.key\n );\n this.selectedSearchField$.next(searchFieldToSelect);\n }\n });\n }\n\n public formValueChange(data: SearchField): void {\n setTimeout(() => {\n this.nextIfChanged(this.dataTypeIsText$, data.dataType === 'text');\n this.nextIfChanged(this.dataTypeIsBoolean$, data.dataType === 'boolean');\n this.nextIfChanged(this.fieldTypeIsDropdown$, this.isFieldTypeDropdown(data.fieldType));\n this.nextIfChanged(this.formData$, data);\n this.nextIfChanged(this.valid$, this.isValid(data));\n }, 0);\n }\n\n public dropdownDatalistChange(data: MultiInputOutput): void {\n this.modifiedDropdownValues$.next(data as MultiInputValues);\n }\n\n public onMoveRowClick(moveEvent: MoveRowEvent, documentDefinitionName: string): void {\n const {index, direction} = moveEvent;\n const moveUp = direction === MoveRowDirection.UP;\n const searchFields = [...this.cachedSearchFields];\n const searchFieldRow = searchFields[index];\n\n const searchFieldIndex = searchFields.findIndex(field => field.key === searchFieldRow.key);\n const foundSearchField = {...searchFields[searchFieldIndex]};\n const filteredSearchFields = searchFields.filter(field => field.key !== searchFieldRow.key);\n const multipleSearchFields = searchFields.length > 1;\n\n if (multipleSearchFields && moveUp && searchFieldIndex > 0) {\n const searchFieldBeforeKey = `${searchFields[searchFieldIndex - 1].key}`;\n const searchFieldBeforeIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldBeforeKey\n );\n filteredSearchFields.splice(searchFieldBeforeIndex, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n } else if (multipleSearchFields && !moveUp && searchFieldIndex < searchFields.length) {\n const searchFieldAfterKey = `${searchFields[searchFieldIndex + 1].key}`;\n const searchFieldAfterIndex = filteredSearchFields.findIndex(\n field => field.key === searchFieldAfterKey\n );\n filteredSearchFields.splice(searchFieldAfterIndex + 1, 0, foundSearchField);\n this.updateSearchFields(documentDefinitionName, filteredSearchFields);\n }\n }\n\n public deleteSelectedSearchField(selectedSearchField: SearchField): void {\n this.disableInput();\n\n if (this.dropdownDataProviderSupportsUpdates(selectedSearchField?.dropdownDataProvider)) {\n this.documentService\n .deleteDropdownData(\n selectedSearchField?.dropdownDataProvider ?? '',\n this._documentDefinitionName,\n selectedSearchField.key\n )\n .subscribe();\n }\n\n this.documentService\n .deleteDocumentSearch(this._documentDefinitionName, selectedSearchField.key)\n .subscribe({\n next: () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public saveSearchField(documentDefinitionName: string): void {\n this.disableInput();\n\n this.formData$.pipe(take(1)).subscribe(formData => {\n if (!formData) {\n return;\n }\n const mappedFormData: SearchField = {\n ...formData,\n matchType:\n !this.isFieldTypeDropdown(formData?.fieldType) && formData?.dataType === 'text'\n ? formData.matchType\n : 'exact',\n fieldType: formData.dataType !== 'boolean' ? formData.fieldType : 'single',\n };\n\n const prevFormData = this.selectedSearchField$.value;\n if (\n this.dropdownDataProviderSupportsUpdates(prevFormData?.dropdownDataProvider) &&\n prevFormData?.dropdownDataProvider !== mappedFormData?.dropdownDataProvider\n ) {\n this.documentService\n .deleteDropdownData(\n prevFormData?.dropdownDataProvider ?? '',\n documentDefinitionName,\n prevFormData?.key ?? ''\n )\n .subscribe();\n }\n\n if (this.dropdownDataProviderSupportsUpdates(mappedFormData.dropdownDataProvider)) {\n this.modifiedDropdownValues$.pipe(take(1)).subscribe(dropdownValues => {\n const request = dropdownValues.reduce(\n (acc, keyValue) => ({...acc, [keyValue.key]: keyValue.value}),\n {}\n );\n this.documentService\n .postDropdownData(\n mappedFormData.dropdownDataProvider ?? '',\n documentDefinitionName,\n mappedFormData.key,\n request\n )\n .subscribe();\n });\n }\n\n if (this.searchFieldActionTypeIsAdd) {\n this.documentService.postDocumentSearch(documentDefinitionName, mappedFormData).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n } else {\n const newFields = [...this.cachedSearchFields];\n const indexToReplace = newFields.findIndex(field => field.key === mappedFormData.key);\n const filteredFields = newFields.filter(field => field.key !== mappedFormData.key);\n\n filteredFields.splice(indexToReplace, 0, mappedFormData);\n this.updateSearchFields(documentDefinitionName, filteredFields);\n }\n });\n }\n\n public updateSearchFields(\n documentDefinitionName: string,\n newSearchFields: Array<SearchField>\n ): void {\n this.disableInput();\n\n this.documentService.putDocumentSearch(documentDefinitionName, newSearchFields).subscribe(\n () => {\n this.enableInput();\n this.hideModal();\n this.refreshSearchFields();\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n private nextIfChanged(behaviourSubject$: BehaviorSubject<any>, value: any) {\n if (JSON.stringify(behaviourSubject$.value) !== JSON.stringify(value)) {\n behaviourSubject$.next(value);\n }\n }\n\n private isValid(data: SearchField): boolean {\n const validMatchType =\n data.dataType === 'text' && !this.isFieldTypeDropdown(data.fieldType) ? data.matchType : true;\n const validDropdownDataProvider = this.isFieldTypeDropdown(data.fieldType)\n ? data.dropdownDataProvider\n : true;\n const containsAllValues = !!(\n data.key &&\n data.dataType &&\n validMatchType &&\n validDropdownDataProvider &&\n data.path\n );\n const keyIsUnique =\n !this.searchFieldActionTypeIsAdd ||\n this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;\n\n return containsAllValues && keyIsUnique;\n }\n\n private isFieldTypeDropdown(fieldType?: SearchFieldFieldType): boolean {\n return fieldType === 'single-select-dropdown' || fieldType === 'multi-select-dropdown';\n }\n\n private dropdownDataProviderSupportsUpdates(dropdownDataProvider?: string): boolean {\n return dropdownDataProvider === 'dropdownDatabaseDataProvider';\n }\n\n private openSelectedSearchFieldSubscription(): void {\n this._subscriptions.add(\n this.selectedSearchField$.subscribe(() => {\n this.showModal();\n })\n );\n }\n\n private openModalShowingSubscription(): void {\n this._subscriptions.add(\n this.modal.modalShowing$.subscribe(modalShowing => {\n if (modalShowing) {\n setTimeout(() => {\n this.showSearchFieldsForm = true;\n }, 0);\n } else {\n setTimeout(() => {\n this.showSearchFieldsForm = false;\n }, 150);\n }\n })\n );\n }\n\n private setDownload(documentDefinitionName: string, searchFields: Array<SearchField>): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify({searchFields}, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private showModal(): void {\n this.modal?.show();\n }\n\n private hideModal(): void {\n this.modal?.hide();\n }\n\n private refreshSearchFields(): void {\n this.refreshSearchFields$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n searchFields: translatedSearchFields$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <a\n cdsLink\n class=\"center-link\"\n [disabled]=\"\n !obs.downloadUrl || !obs.downloadName || obs.searchFields.length <= 0 || obs.disableInput\n \"\n [download]=\"obs.downloadName\"\n [href]=\"obs.downloadUrl\"\n >\n {{ 'searchFields.downloadButtonText' | translate }}\n </a>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"loadingSearchFields || obs.disableInput\"\n (click)=\"searchFieldClicked($event, true)\"\n >\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.searchFields\"\n [loading]=\"!obs.searchFields\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <valtimo-modal\n #searchFieldModal\n elementId=\"searchFieldModal\"\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [showFooter]=\"true\"\n >\n <div body class=\"mt-2\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"showSearchFieldsForm && {searchField: selectedSearchField$ | async} as searchObs\"\n >\n <v-input\n name=\"title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input>\n <v-input\n name=\"key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [widthPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input>\n <v-input\n name=\"path\"\n [title]=\"'searchFieldsOverview.path' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input>\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"(showMatchTypes$ | async) && (matchTypeItems$ | async) as matchTypeItems\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"\n (fieldTypeIsDropdown$ | async) &&\n (dropdownDataProviderNames$ | async) as dropdownDataProviderNames\n \"\n [items]=\"dropdownDataProviderNames\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"false\"\n name=\"dropdownDataProvider\"\n [defaultSelectionId]=\"searchObs.searchField?.dropdownDataProvider\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n ></v-select>\n <valtimo-carbon-multi-input\n *ngIf=\"\n (showInputDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n name=\"dropdownValues\"\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n type=\"keyValue\"\n [disabled]=\"obs.disableInput\"\n [defaultValues]=\"initialDropdownValues\"\n [margin]=\"true\"\n [required]=\"false\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n (valueChange)=\"dropdownDatalistChange($event)\"\n >\n </valtimo-carbon-multi-input>\n <v-table\n *ngIf=\"\n (showReadonlyDropdownTable$ | async) &&\n (initialDropdownValues$ | async) as initialDropdownValues\n \"\n [items]=\"initialDropdownValues\"\n [columns]=\"dropdownColumns$ | async\"\n [showEditButtons]=\"false\"\n [itemsTranslationKey]=\"'searchFieldsOverview'\"\n [showPagination]=\"false\"\n [mobileBreakpointPx]=\"200\"\n ></v-table>\n </v-form>\n </div>\n <div footer>\n <div class=\"col-12 p-0\">\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </valtimo-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <div class=\"buttons-container\" *ngIf=\"{searchField: selectedSearchField$ | async} as searchObs\">\n <div class=\"right-buttons\">\n <button\n class=\"btn btn-space btn-secondary\"\n *ngIf=\"!searchFieldActionTypeIsAdd\"\n [disabled]=\"obs.disableInput\"\n (click)=\"deleteSelectedSearchField(searchObs.searchField)\"\n >\n {{ 'searchFieldsOverview.delete' | translate }}\n </button>\n <button\n (click)=\"saveSearchField(obs.documentDefinitionName)\"\n type=\"button\"\n class=\"btn btn-primary btn-space mr-0\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {AfterViewInit, Component} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActionItem, ColumnConfig, MultiInputValues, ViewType} from '@valtimo/components';\nimport {ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {\n CaseListColumn,\n CaseListColumnView,\n DisplayTypeParameters,\n DocumentService,\n} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport {ListItem} from 'carbon-components-angular/dropdown/list-item.interface';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n filter,\n map,\n Observable,\n startWith,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ListColumnModal} from '../../models';\n\n@Component({\n selector: 'valtimo-dossier-management-list-columns',\n templateUrl: './dossier-management-list-columns.component.html',\n styleUrls: ['./dossier-management-list-columns.component.scss'],\n})\nexport class DossierManagementListColumnsComponent implements AfterViewInit {\n readonly downloadName$ = new BehaviorSubject<string>('');\n readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.delete',\n callback: this.deleteRow.bind(this),\n type: 'danger',\n },\n ];\n public readonly loadingCaseListColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n public readonly fields: Array<ColumnConfig> = [\n {\n viewType: 'string',\n sortable: false,\n key: 'title',\n label: 'listColumn.title',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'key',\n label: 'listColumn.key',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'path',\n label: 'listColumn.path',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayType',\n label: 'listColumn.displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'sortable',\n label: 'listColumn.sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n },\n ];\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n\n readonly hasEnvironmentConfig$: Observable<boolean> = this.documentDefinitionName$.pipe(\n map(\n documentDefinitionName =>\n !!this.configService?.config?.customDefinitionTables[documentDefinitionName]\n )\n );\n\n private cachedCaseListColumns: Array<CaseListColumn> = [];\n\n private readonly refreshCaseListcolumns$ = new BehaviorSubject<null>(null);\n\n private readonly caseListColumns$: Observable<Array<CaseListColumn>> = combineLatest([\n this.documentDefinitionName$,\n this.refreshCaseListcolumns$,\n ]).pipe(\n switchMap(([documentDefinitionName]) =>\n this.documentService.getCaseListForManagement(documentDefinitionName)\n ),\n tap(caseListColumns => {\n this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n if (caseListColumns && Array.isArray(caseListColumns) && caseListColumns.length > 0) {\n this.setDownload(documentDefinitionName, caseListColumns);\n }\n });\n }),\n tap(caseListColumns => {\n this.lastItemIndex$.next(caseListColumns.length - 1);\n this.cachedCaseListColumns = caseListColumns;\n this.loadingCaseListColumns$.next(false);\n this.enableInput();\n })\n );\n\n readonly translatedCaseListColumns$: Observable<Array<CaseListColumnView>> = combineLatest([\n this.caseListColumns$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([columns]) =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: this.getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n )\n );\n\n readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n readonly modalShowing$ = this.showModal$.pipe(delay(250));\n\n readonly INVALID_KEY = 'invalid';\n\n readonly formGroup = new FormGroup({\n title: new FormControl(''),\n key: new FormControl('', Validators.required),\n path: new FormControl('', Validators.required),\n dateFormat: new FormControl(''),\n displayType: new FormControl({\n key: this.INVALID_KEY,\n }),\n sortable: new FormControl(false),\n defaultSort: new FormControl({\n key: this.INVALID_KEY,\n }),\n enum: new FormControl([]),\n });\n\n readonly disableDefaultSort$ = combineLatest([\n this.currentModalType$,\n this.formGroup.valueChanges,\n ]).pipe(\n map(\n ([currentModalType]) =>\n currentModalType === 'create' &&\n this.cachedCaseListColumns.find(column => !!column.defaultSort)\n ),\n startWith(false)\n );\n\n readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ];\n\n readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n tap(showDateFormat => {\n if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n this.formGroup.patchValue({dateFormat: ''});\n }\n }),\n startWith(false)\n );\n\n readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(\n formValues =>\n !!(\n formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n formValues.displayType?.key === this.DISPLAY_TYPES[2]\n )\n ),\n tap(showEnum => {\n const enumValue = this.formGroup.value.enum;\n if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n this.formGroup.patchValue({enum: []});\n }\n }),\n startWith(false)\n );\n\n readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[2]))\n );\n\n readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedViewTypeItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedViewTypeItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this.INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => ({\n content: this.translateService.instant(`listColumnDisplayType.${type}`),\n key: type,\n })),\n ].map((item, index) => ({\n ...item,\n selected: index === selectedViewTypeItemIndex,\n }))\n )\n );\n\n readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n this.selectedSortItemIndex$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([selectedSortItemIndex]) =>\n [\n {\n content: this.translateService.instant(`listColumn.selectDefaultSort`),\n key: this.INVALID_KEY,\n },\n {\n content: this.translateService.instant(`listColumn.sortableAsc`),\n key: 'ASC',\n },\n {\n content: this.translateService.instant(`listColumn.sortableDesc`),\n key: 'DESC',\n },\n ].map((item, index) => ({\n ...item,\n selected: index === selectedSortItemIndex,\n }))\n )\n );\n\n readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n map(([formValues, currentModalType]) => {\n const existingKeys = this.cachedCaseListColumns.map(column => column.key);\n return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n }),\n startWith(false)\n );\n\n readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n map(\n ([formValues, validKey]) =>\n !!(\n formValues.displayType?.key !== this.INVALID_KEY &&\n formValues.path &&\n validKey &&\n (formValues.displayType.key === 'enum' ? formValues.enum?.length > 0 : true)\n )\n ),\n startWith(false)\n );\n\n readonly showDeleteModal$ = new Subject<boolean>();\n\n readonly deleteRowKey$ = new BehaviorSubject<string>('');\n\n readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly sanitizer: DomSanitizer,\n private readonly iconService: IconService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n }\n\n openModal(modalType: ListColumnModal): void {\n this.showModal$.next(true);\n this.currentModalType$.next(modalType);\n\n if (modalType === 'create') {\n this.formGroup.controls['key'].enable();\n this.resetFormGroup();\n } else if (modalType === 'edit') {\n this.formGroup.controls['key'].disable();\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n deleteRow(caseListColumn: CaseListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteRowKey$.next(caseListColumn.key);\n }\n\n deleteRowConfirmation(columnKey: string): void {\n if (columnKey) {\n this.disableInput();\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.deleteCaseListForManagement(docDefName, columnKey).subscribe(\n () => {\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n }\n\n moveRow(\n caseListColumnRowIndex: number,\n moveUp: boolean,\n clickEvent: MouseEvent,\n documentDefinitionName: string\n ): void {\n const caseListColumns = [...this.cachedCaseListColumns];\n const caseListColumnRow = caseListColumns[caseListColumnRowIndex];\n\n clickEvent.stopPropagation();\n\n const caseListColumnIndex = caseListColumns.findIndex(\n field => field.key === caseListColumnRow.key\n );\n const foundCaseListColumn = {...caseListColumns[caseListColumnIndex]};\n const filteredCaseListColumns = caseListColumns.filter(\n field => field.key !== caseListColumnRow.key\n );\n const multipleCaseListColumns = caseListColumns.length > 1;\n\n if (multipleCaseListColumns && moveUp && caseListColumnIndex > 0) {\n const caseListColumnBeforeKey = `${caseListColumns[caseListColumnIndex - 1].key}`;\n const caseListColumnBeforeIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnBeforeKey\n );\n filteredCaseListColumns.splice(caseListColumnBeforeIndex, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\n } else if (multipleCaseListColumns && !moveUp && caseListColumnIndex < caseListColumns.length) {\n const caseListColumnAfterKey = `${caseListColumns[caseListColumnIndex + 1].key}`;\n const caseListColumnAfterIndex = filteredCaseListColumns.findIndex(\n field => field.key === caseListColumnAfterKey\n );\n filteredCaseListColumns.splice(caseListColumnAfterIndex + 1, 0, foundCaseListColumn);\n this.updateCaseListColumns(documentDefinitionName, filteredCaseListColumns);\n }\n }\n\n saveCasListColumns(): void {\n this.disableInput();\n\n this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n if (currentModalType === 'create') {\n this.addColumn();\n } else {\n this.updateColumn();\n }\n });\n }\n\n enumValueChange(value: Array<{[key: string]: string}>): void {\n this.formGroup.patchValue({enum: value});\n }\n\n columnRowClicked(row: {key: string}): void {\n this.resetFormGroup();\n\n combineLatest([this.viewTypeItems$, this.sortItems$])\n .pipe(take(1))\n .subscribe(([viewTypeItems, sortItems]) => {\n const column = this.cachedCaseListColumns.find(\n cachedColumn => cachedColumn.key === row.key\n );\n const viewTypeItem = viewTypeItems.find(item => item.key === column.displayType.type);\n const viewTypeItemIndex = viewTypeItems.findIndex(\n item => item.key === column.displayType.type\n );\n const sortItem = sortItems.find(item => item.key === column.defaultSort);\n const sortItemIndex = sortItems.findIndex(item => item.key === column.defaultSort);\n const enumValues = column?.displayType?.displayTypeParameters?.enum;\n const mappedEnumValues: MultiInputValues = [];\n const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n\n this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n if (sortItem) {\n this.selectedSortItemIndex$.next(sortItemIndex);\n }\n\n if (enumValues) {\n Object.keys(enumValues).forEach(key => {\n mappedEnumValues.push({key, value: enumValues[key]});\n });\n this.defaultEnumValues$.next(mappedEnumValues);\n } else {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n }\n\n this.formGroup.patchValue({\n key: column.key,\n title: column.title,\n path: column.path,\n sortable: column.sortable,\n // @ts-ignore\n displayType: {...viewTypeItem},\n // @ts-ignore\n defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n ...(columnDateFormat && {\n dateFormat: columnDateFormat,\n }),\n });\n\n this.openModal('edit');\n });\n }\n\n private updateCaseListColumns(\n documentDefinitionName: string,\n newCaseListColumns: Array<CaseListColumn>\n ): void {\n this.disableInput();\n\n this.documentService\n .putCaseListForManagement(documentDefinitionName, newCaseListColumns)\n .subscribe(\n () => {\n this.refreshCaseListColumns();\n localStorage.setItem(`list-search-${documentDefinitionName}`, null);\n },\n () => {\n this.enableInput();\n }\n );\n }\n\n private addColumn(): void {\n const formValue = this.formGroup.value;\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService\n .postCaseListForManagement(docDefName, this.mapFormValuesToColumn(formValue))\n .subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n\n private getDisplayTypeParametersView(displayTypeParameters: DisplayTypeParameters): string {\n if (displayTypeParameters?.dateFormat) {\n return displayTypeParameters.dateFormat;\n } else if (displayTypeParameters?.enum) {\n return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n const keyValuePairString = `${curr}: ${displayTypeParameters.enum[curr]}`;\n if (!acc) {\n return `${keyValuePairString}`;\n }\n\n return `${acc}, ${keyValuePairString}`;\n }, '');\n }\n\n return '-';\n }\n\n private updateColumn(): void {\n const updatedColumnFormValue = this.formGroup.value;\n const mappedUpdatedColumn = this.mapFormValuesToColumn(updatedColumnFormValue);\n const currentColumns = this.cachedCaseListColumns;\n const mappedCurrentColumns = currentColumns.map(column => {\n const columnCopy = {...column};\n if (columnCopy.key === updatedColumnFormValue.key) {\n const changedColumn = {...columnCopy, ...mappedUpdatedColumn};\n if (!mappedUpdatedColumn.defaultSort) {\n delete changedColumn.defaultSort;\n }\n return changedColumn;\n }\n if (mappedUpdatedColumn.defaultSort) {\n delete columnCopy.defaultSort;\n }\n return columnCopy;\n });\n\n this.documentDefinitionName$.pipe(take(1)).subscribe(docDefName => {\n this.documentService.putCaseListForManagement(docDefName, mappedCurrentColumns).subscribe(\n () => {\n this.closeModal();\n this.refreshCaseListColumns();\n },\n () => {\n this.enableInput();\n }\n );\n });\n }\n\n private setDownload(\n documentDefinitionName: string,\n caseListColumns: Array<CaseListColumn>\n ): void {\n this.downloadName$.next(`${documentDefinitionName}.json`);\n this.downloadUrl$.next(\n this.sanitizer.bypassSecurityTrustUrl(\n 'data:text/json;charset=UTF-8,' +\n encodeURIComponent(JSON.stringify(caseListColumns, null, 2))\n )\n );\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n this.formGroup.disable();\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n this.formGroup.enable();\n }\n\n private refreshCaseListColumns(): void {\n this.refreshCaseListcolumns$.next(null);\n }\n\n private resetFormGroup(): void {\n this.formGroup.reset();\n combineLatest([this.sortItems$, this.viewTypeItems$])\n .pipe(take(1))\n .subscribe(([sortItems, viewTypeItems]) => {\n this.defaultEnumValues$.next([{key: '', value: ''}]);\n this.selectedViewTypeItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({displayType: viewTypeItems[0]});\n this.selectedSortItemIndex$.next(0);\n // @ts-ignore\n this.formGroup.patchValue({defaultSort: sortItems[0]});\n });\n }\n\n private mapFormValuesToColumn(formValue: any): CaseListColumn {\n return {\n key: formValue.key,\n sortable: formValue.sortable,\n ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n defaultSort: formValue.defaultSort?.key,\n }),\n title: formValue.title || '',\n path: formValue.path,\n displayType: {\n type: formValue.displayType?.key,\n displayTypeParameters: {\n ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n ...(Array.isArray(formValue.enum) &&\n formValue.enum.length > 0 && {\n enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n },\n };\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n caseListColumn: translatedCaseListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n hasEnvironmentConfig: hasEnvironmentConfig$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loadingCaseListColumns: loadingCaseListColumns$ | async\n } as obs\"\n>\n <div class=\"cds--toolbar-content list-columns__buttons\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n\n <ng-container *ngIf=\"!obs.hasEnvironmentConfig; else environmentConfigWarning\">\n <ng-container *ngIf=\"!obs.caseListColumn || obs.caseListColumn?.length > 0\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.caseListColumn?.length === 0\">\n <ng-container *ngTemplateOutlet=\"noConfigWarning\"></ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [loading]=\"obs.loadingCaseListColumns\"\n [items]=\"obs.caseListColumn\"\n [fields]=\"fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n obs.hasEnvironmentConfig ||\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.caseListColumn?.length < 1 ||\n obs.disableInput ||\n loadingCaseListColumns\n \"\n >\n {{ 'listColumn.downloadButtonText' | translate }}\n </a>\n\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n [disabled]=\"obs.hasEnvironmentConfig || loadingCaseListColumns\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #environmentConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'warning',\n title: 'listColumn.hasEnvConfigWarningTitle' | translate,\n message: 'listColumn.hasEnvConfigWarning' | translate,\n showClose: false\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2 pt-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'listColumn.noConfigWarningTitle' | translate,\n message: 'listColumn.noConfigWarning' | translate,\n showClose: false\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n showEnum: showEnum$ | async,\n isYesNo: isYesNo$ | async\n } as modalObs\"\n [open]=\"modalObs.show\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"displayType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"viewTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"showDateFormat$ | async\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n <div\n class=\"cds--text-input__field-wrapper\"\n *ngIf=\"modalObs.showEnum || modalObs.isYesNo\"\n [ngClass]=\"{'no-margin': modalObs.isYesNo}\"\n >\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{\n modalObs.isYesNo\n ? ('listColumn.enumTitleOptional' | translate)\n : ('listColumn.enumTitle' | translate)\n }}\n <v-tooltip-icon\n [tooltip]=\"\n modalObs.isYesNo\n ? ('listColumn.enumTooltipOptional' | translate)\n : ('listColumn.enumTooltip' | translate)\n \"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <valtimo-carbon-multi-input\n *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n [defaultValues]=\"defaultEnumValues$ | async\"\n [hideAddButton]=\"modalObs.isYesNo\"\n [hideDeleteButton]=\"modalObs.isYesNo\"\n [maxRows]=\"modalObs.isYesNo ? 1 : null\"\n [keyColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.Yes' | translate)\"\n [valueColumnTitle]=\"modalObs.isYesNo && ('viewTypeConverter.No' | translate)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\"\n >\n <cds-dropdown-list [items]=\"sortItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveCasListColumns()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\nimport {FormGroup, FormGroupDirective} from '@angular/forms';\nimport {ApiTabType} from '@valtimo/dossier';\nimport {ListItem} from 'carbon-components-angular';\nimport {combineLatest, map, startWith} from 'rxjs';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-tab-form',\n templateUrl: './tab-form.component.html',\n styleUrls: ['./tab-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabFormComponent implements OnInit {\n @Input() tabType: ApiTabType;\n\n public readonly listItems$ = combineLatest([\n this.tabService.configuredContentKeys$,\n this.tabService.formDefinitions$,\n this.tabService.defaultTabs$,\n this.tabService.customComponentKeys$,\n ]).pipe(\n map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {\n switch (this.tabType) {\n case ApiTabType.STANDARD:\n return this.getListItems(defaultTabs, tabKeys);\n case ApiTabType.CUSTOM:\n return this.getListItems(customComponentKeys, tabKeys);\n case ApiTabType.FORMIO:\n return this.getListItems(formDefinitions, tabKeys);\n }\n }),\n startWith([])\n );\n public form!: FormGroup;\n\n private _searchActive: boolean;\n\n constructor(\n private readonly tabService: TabService,\n private readonly formGroupDirective: FormGroupDirective\n ) {}\n\n public ngOnInit(): void {\n this.form = this.formGroupDirective.control;\n }\n\n public onSearch(): void {\n if (this._searchActive) {\n return;\n }\n\n this._searchActive = true;\n this.form.get('contentKey')?.reset('');\n }\n\n public onSelected(): void {\n this._searchActive = false;\n }\n\n private getListItems(tabItems: ListItem[], configuredContentKeys: string[]): ListItem[] {\n return tabItems\n .filter(\n (tabItem: ListItem) =>\n !configuredContentKeys.includes(tabItem.contentKey) ||\n this.form?.get('contentKey')?.value === tabItem.contentKey\n )\n .map((tabItem: ListItem) => ({\n ...tabItem,\n selected: this.form?.get('contentKey')?.value === tabItem.contentKey,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\">\n <cds-label>\n {{ 'dossierManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [invalidText]=\"'dossierManagement.tabManagement.addModal.uniqueKeyError' | translate\"\n >\n {{ 'dossierManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'dossierManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n</form>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {Code16, Development16, WatsonHealthPageScroll16} from '@carbon/icons';\nimport {ApiTabItem, ApiTabType} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map} from 'rxjs';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-add-tab-modal',\n templateUrl: './dossier-management-add-tab-modal.component.html',\n styleUrls: ['./dossier-management-add-tab-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementAddTabModalComponent {\n @Input() documentDefinitionName: string;\n @Input() open = false;\n\n @Output() closeModalEvent = new EventEmitter<Partial<ApiTabItem> | null>();\n\n public readonly ApiTabType = ApiTabType;\n public readonly tabTypes$ = this.tabService.disableAddTabs$.pipe(\n map(disabled => [\n {\n icon: 'development',\n title: 'dossierManagement.tabManagement.addModal.standardTab',\n type: ApiTabType.STANDARD,\n disabled: disabled.standard,\n },\n {\n icon: 'page-scroll',\n title: 'dossierManagement.tabManagement.addModal.formIOComponent',\n type: ApiTabType.FORMIO,\n disabled: disabled.formIO,\n },\n {\n icon: 'code',\n title: 'dossierManagement.tabManagement.addModal.customComponent',\n type: ApiTabType.CUSTOM,\n disabled: disabled.custom,\n },\n ])\n );\n\n public readonly form = this.fb.group({\n name: this.fb.control(null),\n key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),\n contentKey: this.fb.control('', Validators.required),\n });\n public readonly selectedTabType$ = new BehaviorSubject<ApiTabType | null>(null);\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly tabService: TabService\n ) {\n this.iconService.registerAll([Code16, Development16, WatsonHealthPageScroll16]);\n }\n\n public addTab(type: ApiTabType): void {\n const {contentKey, key, name} = this.form.getRawValue();\n\n if (!contentKey || !key) {\n return;\n }\n this.closeModalEvent.emit({name, key, contentKey, type});\n }\n\n public backClick(): void {\n this.resetModal();\n }\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n this.resetModal();\n }\n\n public onTabTypeSelect(type: ApiTabType): void {\n this.selectedTabType$.next(type);\n }\n\n private resetModal(): void {\n this.selectedTabType$.next(null);\n this.form.reset();\n }\n\n private uniqueKeyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null =>\n this.tabService.configuredTabKeys.every((key: string) => key !== control.value)\n ? null\n : {uniqueKey: {value: control.value}};\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('dossierManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (documentDefinitionName | titlecase)})\n : ('dossierManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'dossierManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <button\n *ngFor=\"let tabType of tabTypes\"\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {TabService} from '../../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-edit-tab-modal',\n templateUrl: './dossier-management-edit-tab-modal.component.html',\n})\nexport class DossierManagementEditTabModalComponent {\n @Input() open: boolean;\n\n private _tab: ApiTabItem;\n @Input() public set tab(value: ApiTabItem) {\n if (!value) {\n return;\n }\n\n if (!!this.tabService.configuredContentKeys) {\n this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter(\n (tabKey: string) => tabKey !== value.contentKey\n );\n }\n\n this._tab = value;\n this.form = this.fb.group({\n name: this.fb.control(value.name),\n key: this.fb.control({value: value.key, disabled: true}, Validators.required),\n contentKey: this.fb.control(value.contentKey, Validators.required),\n });\n }\n public get tab(): ApiTabItem {\n return this._tab;\n }\n\n @Output() closeModalEvent = new EventEmitter<ApiTabItem | null>();\n\n public form: FormGroup;\n public configuredKeysForEdit: string[];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly tabService: TabService\n ) {}\n\n public onCloseModal(): void {\n this.closeModalEvent.emit(null);\n }\n\n public editTab(): void {\n const {contentKey, name} = this.form.getRawValue();\n\n if (!contentKey) {\n return;\n }\n\n this.closeModalEvent.emit({...this.tab, name, contentKey});\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"form\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'dossierManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'dossier.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent>\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'dossierManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ArrowDown16, ArrowUp16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n ColumnConfig,\n MoveRowDirection,\n MoveRowEvent,\n ViewType,\n} from '@valtimo/components';\nimport {ApiTabItem} from '@valtimo/dossier';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, tap} from 'rxjs';\nimport {TabManagementService, TabService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-management-tabs',\n templateUrl: './dossier-management-tabs.component.html',\n styleUrls: ['./dossier-management-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierManagementTabsComponent implements AfterViewInit {\n @ViewChild('tabContentColumn') tabContentColumnTemplate: TemplateRef<any>;\n @ViewChild('tabTypeColumn') tabTypeColumnTemplate: TemplateRef<any>;\n @ViewChild('moveButtonsTemplate') moveButtonsTemplate: TemplateRef<any>;\n\n private _documentDefinitionName: string;\n @Input() public set documentDefinitionName(value: string) {\n if (!value) {\n return;\n }\n this._documentDefinitionName = value;\n this.tabManagementService.setCaseDefinitionId(value);\n this.tabManagementService.loadTabs();\n }\n public get documentDefinitionName(): string {\n return this._documentDefinitionName;\n }\n\n public actionItems: ActionItem[] = [\n {\n label: 'interface.delete',\n callback: this.openDeleteConfirmationModal.bind(this),\n type: 'danger',\n },\n ];\n public readonly deleteRowKey$ = new BehaviorSubject<string | null>(null);\n public readonly showDeleteModal$: Observable<boolean> = this.deleteRowKey$.pipe(\n map((key: string | null) => !!key)\n );\n public readonly openEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly loading$: Observable<boolean> = this.tabManagementService.loading$;\n public readonly openAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly lastItemIndex$ = new BehaviorSubject<number>(-1);\n\n private _tabs: ApiTabItem[];\n public readonly tabs$ = this.tabManagementService.tabs$.pipe(\n tap((tabs: ApiTabItem[]) => {\n this._tabs = tabs;\n this.tabService.configuredContentKeys = tabs.map((tab: ApiTabItem) => tab.contentKey);\n this.tabService.configuredTabKeys = tabs.map((tab: ApiTabItem) => tab.key);\n this.lastItemIndex$.next(tabs.length - 1);\n })\n );\n public readonly tab$ = new BehaviorSubject<ApiTabItem | null>(null);\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly tabManagementService: TabManagementService,\n private readonly tabService: TabService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16]);\n this.fields$.next([\n {\n key: 'name',\n label: 'dossierManagement.tabManagement.columns.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'dossierManagement.tabManagement.columns.key',\n viewType: ViewType.TEXT,\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabTypeColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.type',\n },\n {\n viewType: ViewType.TEMPLATE,\n template: this.tabContentColumnTemplate,\n key: '',\n label: 'dossierManagement.tabManagement.columns.content',\n },\n ]);\n\n this.cd.detectChanges();\n }\n\n public isTranslated(key: string): boolean {\n return this.translateService.instant(key) !== key;\n }\n\n public onMoveRowClick(event: MoveRowEvent): void {\n const {direction, index} = event;\n\n const orderedTabs: ApiTabItem[] =\n direction === MoveRowDirection.UP\n ? this.swapTabs(this._tabs, index - 1, index)\n : this.swapTabs(this._tabs, index, index + 1);\n\n this.tabManagementService.dispatchAction(this.tabManagementService.editTabsOrder(orderedTabs));\n }\n\n public openAddTabModal(): void {\n this.openAddModal$.next(true);\n }\n\n public onRowClicked(tab: ApiTabItem): void {\n this.tab$.next(tab);\n this.openEditModal$.next(true);\n }\n\n public onCloseAddModalEvent(tab: ApiTabItem | null): void {\n this.openAddModal$.next(false);\n\n if (!tab) {\n return;\n }\n\n this.addTab(tab);\n }\n\n public onCloseEditModalEvent(tab: ApiTabItem | null): void {\n this.openEditModal$.next(false);\n this.tab$.next(null);\n\n if (!tab) {\n return;\n }\n\n this.editTab(tab);\n }\n\n public openDeleteConfirmationModal(tab: ApiTabItem): void {\n this.deleteRowKey$.next(tab.key);\n }\n\n public onConfirmEvent(tabKey: string): void {\n this.deleteTab(tabKey);\n }\n\n private addTab(tab: Partial<ApiTabItem>): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));\n }\n\n private deleteTab(tabKey: string): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));\n }\n\n private editTab(tab: ApiTabItem): void {\n this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));\n }\n\n private swapTabs(tabItems: ApiTabItem[], index1: number, index2: number): ApiTabItem[] {\n const temp = [...tabItems];\n temp[index1] = temp.splice(index2, 1, temp[index1])[0];\n\n return temp;\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [actionItems]=\"actionItems\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"onRowClicked($event)\"\n (moveRow)=\"onMoveRowClick($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('dossierManagement.tabType.' + data.item.type)\n ? ('dossierManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n</ng-template>\n\n<ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('dossier.tabs.' + data.item.contentKey)\n ? ('dossier.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n</ng-template>\n\n<ng-template #addTabButton>\n <button cdsButton=\"primary\" (click)=\"openAddTabModal()\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-dossier-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n></valtimo-dossier-management-add-tab-modal>\n\n<valtimo-dossier-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n></valtimo-dossier-management-edit-tab-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossierManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, ViewChild} from '@angular/core';\nimport {\n DocumentService,\n DocumentDefinition,\n UndeployDocumentDefinitionResult,\n} from '@valtimo/document';\nimport {MenuService, ModalComponent} from '@valtimo/components';\nimport {ToastrService} from 'ngx-toastr';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-dossier-management-remove-modal',\n templateUrl: './dossier-management-remove-modal.component.html',\n styleUrls: ['./dossier-management-remove-modal.component.scss'],\n})\nexport class DossierManagementRemoveModalComponent {\n public documentDefinition: DocumentDefinition | null = null;\n public errors: string[] = [];\n @ViewChild('documentDefinitionRemoveModal') modal: ModalComponent;\n\n constructor(\n private documentService: DocumentService,\n private toasterService: ToastrService,\n private router: Router,\n private translateService: TranslateService,\n private menuService: MenuService\n ) {}\n\n openModal(documentDefinition: DocumentDefinition) {\n this.documentDefinition = documentDefinition;\n this.modal.show();\n }\n\n removeDocumentDefinition() {\n this.documentService\n .removeDocumentDefinitionForManagement(this.documentDefinition.id.name)\n .subscribe(\n () => {\n this.menuService.reload();\n this.router.navigate(['/dossier-management']);\n this.toasterService.success(\n this.translateService.instant('remove-document-definition-success')\n );\n },\n (result: UndeployDocumentDefinitionResult) => {\n this.errors = result.errors;\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #documentDefinitionRemoveModal\n elementId=\"documentDefinitionRemoveModal\"\n [title]=\"documentDefinition ? documentDefinition.schema.title : 'Document definition'\"\n subtitle=\"{{ 'Remove document definition' | translate }}\"\n showFooter=\"true\"\n>\n <div body *ngIf=\"documentDefinition\">\n <div class=\"alert alert-contrast alert-danger mt-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div\n class=\"message\"\n [innerHTML]=\"'remove-document-definition-confirmation' | translate\"\n ></div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n </div>\n <div footer>\n <button (click)=\"removeDocumentDefinition()\" class=\"btn btn-primary\" data-dismiss=\"modal\">\n {{ 'remove-document-definition-confirmation-button' | translate }}\n </button>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {ListItem, Notification, NotificationService} from 'carbon-components-angular';\nimport {DossierDetailService, DossierExportService} from '../../services';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DOCUMENT} from '@angular/common';\nimport {HttpResponse} from '@angular/common/http';\nimport {DocumentService} from '@valtimo/document';\nimport {take} from 'rxjs/operators';\nimport {DossierManagementRemoveModalComponent} from '../dossier-management-remove-modal/dossier-management-remove-modal.component';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container-actions',\n templateUrl: './dossier-management-detail-container-actions.html',\n styleUrls: ['./dossier-management-detail-container-actions.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NotificationService],\n})\nexport class DossierManagementDetailContainerActionsComponent {\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n @ViewChild('dossierRemoveModal')\n private readonly _dossierRemoveModal: DossierManagementRemoveModalComponent;\n\n @Input() public documentDefinitionTitle = '';\n @Input() public set documentDefinitionName(value: string) {\n this.dossierDetailService.setSelectedDocumentDefinitionName(value);\n }\n\n public readonly CARBON_THEME = 'g10';\n\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly selectedVersionNumber$ = this.dossierDetailService.selectedVersionNumber$;\n private readonly _documentDefinitionName$ =\n this.dossierDetailService.selectedDocumentDefinitionName$;\n public readonly loadingVersion$ = new BehaviorSubject<boolean>(true);\n private readonly _documentDefinitionVersions$ = this._documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinitionVersions(documentDefinitionName)\n ),\n tap(res => {\n this.dossierDetailService.setSelectedVersionNumber(this.findLargestInArray(res.versions));\n this.loadingVersion$.next(false);\n })\n );\n\n public readonly versionListItems$: Observable<Array<ListItem>> = combineLatest([\n this._documentDefinitionVersions$,\n this.selectedVersionNumber$,\n this.translateService.stream('key'),\n ]).pipe(\n map(\n ([versionsRes, selectVersionNumber]) =>\n versionsRes?.versions?.map(version => ({\n content: `${this.translateService.instant('dossierManagement.version')}${version}`,\n selected: selectVersionNumber === version,\n id: `${version}`,\n })) || []\n )\n );\n public readonly selectedDocumentDefinition$ = this.dossierDetailService.documentDefinition$;\n\n public readonly selectedDocumentDefinitionIsReadOnly$ =\n this.dossierDetailService.selectedDocumentDefinitionIsReadOnly$;\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly notificationService: NotificationService,\n private readonly dossierExportService: DossierExportService,\n private readonly translateService: TranslateService,\n private readonly documentService: DocumentService,\n private readonly dossierDetailService: DossierDetailService\n ) {}\n\n public export(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n let selectedVersionNumber!: number;\n\n this.startExporting();\n\n combineLatest([this.selectedVersionNumber$, this._documentDefinitionName$])\n .pipe(\n take(1),\n tap(([selectedVersion]) => (selectedVersionNumber = selectedVersion)),\n switchMap(([selectedVersion, documentDefinitionName]) =>\n this.dossierExportService.exportDocumentDefinition(\n documentDefinitionName,\n selectedVersion\n )\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('dossierManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response, selectedVersionNumber);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('dossierManagement.exportErrorTitle'),\n message: this.translateService.instant('dossierManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public setVersion(version: any): void {\n this.dossierDetailService.setSelectedVersionNumber(Number(version.item.id));\n }\n\n public openDossierRemoveModal(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n this._dossierRemoveModal.openModal(definition);\n });\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private stopExporting(): void {\n this.exporting$.next(false);\n }\n\n private downloadZip(response: HttpResponse<Blob>, versionNumber: number): void {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition.split('filename=');\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView.URL.createObjectURL(response.body);\n link.download = fileName || `${this.documentDefinitionName}_${versionNumber}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private findLargestInArray(array: Array<number>): number {\n return array.reduce(function (a, b) {\n return a > b ? a : b;\n });\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"dossier-actions\"\n *ngIf=\"{\n exporting: exporting$ | async,\n loadingVersion: loadingVersion$ | async,\n versionListItems: versionListItems$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n selectedDocumentDefinitionIsReadOnly: selectedDocumentDefinitionIsReadOnly$ | async\n } as obs\"\n>\n <div class=\"dossier-metadata\">\n <ng-container *ngTemplateOutlet=\"versionSelection;context:{obs:obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"readOnly;context:{obs:obs}\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"exportMenu;context:{obs:obs}\"></ng-container>\n</div>\n\n<ng-template #versionSelection let-obs=\"obs\">\n <cds-dropdown\n class=\"version-selection\"\n [disabled]=\"obs.loadingVersion || obs.versionListItems.length === 1\"\n [attr.data-carbon-theme]=\"CARBON_THEME\"\n [skeleton]=\"obs.loadingVersion\"\n (selected)=\"setVersion($event)\"\n >\n <cds-dropdown-list [items]=\"obs.versionListItems\"></cds-dropdown-list>\n </cds-dropdown>\n</ng-template>\n\n<ng-template #exportMenu let-obs=\"obs\">\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [width]=\"250\"\n [customTrigger]=\"customTrigger\"\n [offset]=\"{y: 48, x: 37}\"\n class=\"overflow-button\"\n [attr.data-carbon-theme]=\"CARBON_THEME\"\n >\n <cds-overflow-menu-option\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"export() \"\n [attr.data-carbon-theme]=\"CARBON_THEME\"\n >{{ 'dossierManagement.export' | translate: {value: documentDefinitionTitle}\n }}</cds-overflow-menu-option\n >\n\n <cds-overflow-menu-option\n *ngIf=\"obs.selectedDocumentDefinition && !obs.selectedDocumentDefinition.readOnly\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"openDossierRemoveModal() \"\n [attr.data-carbon-theme]=\"CARBON_THEME\"\n >{{ 'Remove document definition' | translate}}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n</ng-template>\n\n<ng-template #customTrigger>\n <button cdsButton=\"tertiary\" [attr.data-carbon-theme]=\"CARBON_THEME\">\n {{ 'dossierManagement.more' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\"\n >{{'dossierManagement.preparingDownload' | translate}}</span\n >\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #readOnly let-obs=\"obs\">\n <cds-tag *ngIf=\"obs.selectedDocumentDefinitionIsReadOnly\" type=\"blue\"\n >{{'dossierManagement.readonly' | translate}}</cds-tag\n >\n</ng-template>\n\n<valtimo-dossier-management-remove-modal\n #dossierRemoveModal\n></valtimo-dossier-management-remove-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {DossierDetailService} from '../../services';\nimport {Observable} from 'rxjs';\nimport {EditorModel} from '@valtimo/components';\nimport {take} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-management-document-definition',\n templateUrl: './dossier-management-document-definition.html',\n styleUrls: ['./dossier-management-document-definition.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementDocumentDefinitionComponent {\n public readonly loadingDocumentDefinition$ = this.dossierDetailService.loadingDocumentDefinition$;\n public readonly documentDefinitionModel$: Observable<EditorModel> =\n this.dossierDetailService.documentDefinitionModel$;\n public readonly selectedDocumentDefinition$ = this.dossierDetailService.documentDefinition$;\n\n constructor(private readonly dossierDetailService: DossierDetailService) {}\n\n public downloadDefinition(): void {\n this.selectedDocumentDefinition$.pipe(take(1)).subscribe(definition => {\n const dataString =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(definition.schema, null, 2));\n const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n downloadAnchorElement.setAttribute('href', dataString);\n downloadAnchorElement.setAttribute(\n 'download',\n `${definition.id.name}-v${definition.id.version}.json`\n );\n downloadAnchorElement.click();\n });\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{documentDefinitionModel: documentDefinitionModel$ | async, loadingDocumentDefinition: loadingDocumentDefinition$ | async, selectedDocumentDefinition:selectedDocumentDefinition$ | async} as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n (click)=\"downloadDefinition()\"\n [disabled]=\"obs.loadingDocumentDefinition || !obs.selectedDocumentDefinition\"\n >\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'Download document definition'| translate }}\n </button>\n </div>\n\n <valtimo-editor\n *ngIf=\"!obs.loadingDocumentDefinition; else loading\"\n [model]=\"obs.documentDefinitionModel\"\n [disabled]=\"true\"\n heightStyle=\"calc(100vh - 316px)\"\n >\n </valtimo-editor>\n\n <a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, ViewChild} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Link16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActionItem, ColumnConfig, ViewType} from '@valtimo/components';\nimport {DocumentDefinition, DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {IconService, NotificationService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable, switchMap} from 'rxjs';\nimport {DossierDetailService} from '../../services';\nimport {DossierManagementConnectModalComponent} from '../dossier-management-connect-modal/dossier-management-connect-modal.component';\n\n@Component({\n selector: 'valtimo-dossier-management-processes',\n templateUrl: './dossier-management-processes.component.html',\n styleUrls: ['./dossier-management-processes.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierManagementProcessesComponent {\n @ViewChild('dossierConnectModal')\n private readonly _dossierConnectModal: DossierManagementConnectModalComponent;\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly processDocumentDefinitions$: Observable<ProcessDocumentDefinition[]> =\n this._refresh$.pipe(\n switchMap(() =>\n combineLatest([this.route.paramMap, this.dossierDetailService.selectedVersionNumber$])\n ),\n switchMap(([params, version]) =>\n this.documentService.findProcessDocumentDefinitionsByVersion(\n params.get('name') ?? '',\n version\n )\n )\n );\n\n public readonly documentDefinition$ = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.getDocumentDefinitionForManagement(params.get('name') ?? '')\n )\n );\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'dossierManagement.unlinkProcess',\n callback: this.deleteProcessDocumentDefinition.bind(this),\n type: 'danger',\n },\n ];\n public readonly fields: ColumnConfig[] = [\n {\n key: 'processName',\n label: 'interface.name',\n viewType: ViewType.TEXT,\n },\n {\n key: 'canInitializeDocument',\n label: 'processCaseConnection.processCreatesCase',\n viewType: ViewType.BOOLEAN,\n },\n {\n key: 'startableByUser',\n label: 'processCaseConnection.startableWithinCase',\n viewType: ViewType.BOOLEAN,\n },\n ];\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly dossierDetailService: DossierDetailService,\n private readonly route: ActivatedRoute,\n private readonly notificationService: NotificationService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Link16);\n }\n\n public deleteProcessDocumentDefinition(\n processDocumentDefinition: ProcessDocumentDefinition\n ): void {\n this.documentService\n .deleteProcessDocumentDefinition({\n documentDefinitionName: processDocumentDefinition.id.documentDefinitionId.name,\n processDefinitionKey: processDocumentDefinition.id.processDefinitionKey,\n documentDefinitionVersion: processDocumentDefinition.id.documentDefinitionId.version,\n canInitializeDocument: processDocumentDefinition.canInitializeDocument,\n startableByUser: processDocumentDefinition.startableByUser,\n })\n .subscribe({\n next: () => {\n this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.unlinkSuccess'\n ),\n duration: 5000,\n });\n this.loadProcessDocumentDefinitions();\n },\n error: () => {\n this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant(\n 'dossierManagement.processLinkNotification.unlinkFailure'\n ),\n duration: 5000,\n });\n },\n });\n }\n\n public loadProcessDocumentDefinitions(): void {\n this._refresh$.next(null);\n }\n\n public openDossierConnectModal(documentDefinition: DocumentDefinition): void {\n this._dossierConnectModal.openModal(documentDefinition);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n documentDefinition: documentDefinition$ | async,\n processDocumentDefinitions: processDocumentDefinitions$ | async\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.processDocumentDefinitions\"\n [loading]=\"!obs.processDocumentDefinitions\"\n [fields]=\"fields\"\n [header]=\"false\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"connectProcessButton\"></ng-container>\n\n <valtimo-no-results\n [title]=\"'processCaseConnection.noProcesses' | translate\"\n [action]=\"connectProcessButton\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #connectProcessButton>\n <button\n cdsButton=\"primary\"\n [disabled]=\"!obs.processDocumentDefinitions\"\n (click)=\"openDossierConnectModal(obs.documentDefinition)\"\n >\n {{ 'dossierManagement.processLink' | translate }}\n\n <svg cdsIcon=\"link\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<valtimo-dossier-management-connect-modal\n #dossierConnectModal\n (reloadProcessDocumentDefinitions)=\"loadProcessDocumentDefinitions()\"\n></valtimo-dossier-management-connect-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService} from '@valtimo/document';\nimport {filter, map, Observable, Subscription, switchMap} from 'rxjs';\nimport {ConfigService} from '@valtimo/config';\nimport {DossierDetailService, TabService} from '../../services';\nimport {TabEnum} from '../../models';\nimport {PageTitleService} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-management-detail-container',\n templateUrl: './dossier-management-detail-container.component.html',\n styleUrls: ['./dossier-management-detail-container.component.scss'],\n providers: [DossierDetailService],\n})\nexport class DossierManagementDetailContainerComponent implements OnInit, OnDestroy {\n public currentTab: TabEnum;\n public caseListColumn!: boolean;\n public tabManagementEnabled!: boolean;\n\n public readonly documentDefinitionTitle$ = this.pageTitleService.customPageTitle$;\n public readonly CARBON_THEME = 'g10';\n\n private tabSubscription: Subscription;\n\n readonly TabEnum = TabEnum;\n\n readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.name || ''),\n filter(docDefName => !!docDefName)\n );\n\n readonly documentDefinition$ = this.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinitionForManagement(documentDefinitionName)\n )\n );\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService,\n private readonly pageTitleService: PageTitleService\n ) {\n const featureToggles = this.configService.config.featureToggles;\n this.caseListColumn = !!featureToggles?.caseListColumn;\n this.tabManagementEnabled = !!featureToggles?.enableTabManagement;\n }\n\n ngOnInit(): void {\n this.openCurrentTabSubscription();\n }\n\n displayBodyComponent(tab: TabEnum): void {\n this.tabService.currentTab = tab;\n }\n\n openCurrentTabSubscription(): void {\n this.tabSubscription = this.tabService.currentTab$.subscribe(\n value => (this.currentTab = value)\n );\n }\n\n ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.DOCUMENT;\n this.tabSubscription?.unsubscribe();\n }\n}","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"dossier-management-detail-container\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n</div>\n\n<ng-template #tabs>\n <cds-tabs\n class=\"dossier-management-tabs\"\n type=\"contained\"\n [attr.data-carbon-theme]=\"CARBON_THEME\"\n >\n <cds-tab\n *ngIf=\"{active: currentTab === TabEnum.DOCUMENT} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n <valtimo-dossier-management-document-definition\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-document-definition>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: currentTab === TabEnum.CASE} as vars\"\n class=\"no-padding-left-right main-content\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n <valtimo-dossier-management-detail *ngIf=\"vars.active\"></valtimo-dossier-management-detail>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: currentTab === TabEnum.PROCESSES} as vars\"\n class=\"no-padding-left-right main-content\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n <valtimo-dossier-management-processes\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-processes>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: currentTab === TabEnum.SEARCH} as vars\"\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n <valtimo-dossier-management-search-fields\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-search-fields>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: currentTab === TabEnum.LIST} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n <valtimo-dossier-management-list-columns\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-list-columns>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: currentTab === TabEnum.TABS} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n <valtimo-dossier-management-tabs\n *ngIf=\"vars.active\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n","enum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n ACCESS_CONTROL = 'accessControl',\n DASHBOARD = 'dashboard',\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n PLUGINS = 'plugins',\n}\n\nconst STEPS = [\n UPLOAD_STEP.PLUGINS,\n UPLOAD_STEP.FILE_SELECT,\n UPLOAD_STEP.FILE_UPLOAD,\n UPLOAD_STEP.ACCESS_CONTROL,\n UPLOAD_STEP.DASHBOARD,\n];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n *\n * You may obtain a copy of the License at\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpResponse} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierImportService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public importDocumentDefinitionZip(file: FormData): Observable<HttpResponse<Blob>> {\n return this.http.post<HttpResponse<Blob>>(\n `${this.valtimoEndpointUri}management/v1/case/import`,\n file\n );\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'valtimo-dossier-management-upload-step',\n templateUrl: './dossier-management-upload-step.component.html',\n styleUrls: ['./dossier-management-upload-step.component.scss'],\n})\nexport class DossierManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {WarningFilled16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS, ModalComponent} from '@valtimo/components';\nimport {DocumentDefinitionCreateRequest, DocumentService} from '@valtimo/document';\nimport {FileItem, IconService, NotificationContent} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {DossierImportService} from '../../services/dossier-import.service';\nimport {STEPS, UPLOAD_STATUS, UPLOAD_STEP} from './dossier-management-upload.constants';\n\n@Component({\n selector: 'valtimo-dossier-management-upload',\n templateUrl: './dossier-management-upload.component.html',\n styleUrls: ['./dossier-management-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierManagementUploadComponent implements OnInit, OnDestroy {\n @ViewChild('uploadDefinitionModal') modal: ModalComponent;\n\n @Input() open = false;\n @Output() closeModal = new EventEmitter<boolean>();\n\n public acceptedFiles: string[] = ['.json', '.zip'];\n public selectedFile: File | null;\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.PLUGINS);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.ACCESS_CONTROL, UPLOAD_STEP.DASHBOARD].includes(\n activeStep\n )\n )\n );\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map(\n (activeStep: UPLOAD_STEP) =>\n ![UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT].includes(activeStep)\n )\n );\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.PLUGINS, UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n ]).pipe(map(([activeStep, disabled]) => activeStep !== UPLOAD_STEP.PLUGINS && disabled));\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('dossierManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private _checked = false;\n\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly dossierImportService: DossierImportService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(WarningFilled16);\n }\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) {\n return;\n }\n\n this._subscriptions.add(\n control.valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this._checked = false;\n return;\n }\n\n if (fileItem.file.type === 'application/json') {\n this.setJsonFile(fileItem);\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.closeModal.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this._checked) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.activeStep$.next(STEPS[nextIndex]);\n if (STEPS[nextIndex] !== UPLOAD_STEP.FILE_UPLOAD) {\n return;\n }\n\n this.uploadDefinition();\n }\n\n public onCheckedChange(checked: boolean): void {\n this._checked = checked;\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n private setJsonFile(fileItem: FileItem | undefined): void {\n const file = fileItem?.file;\n\n if (!file) {\n this.clearJsonString();\n return;\n }\n const reader = new FileReader();\n\n reader.onloadend = () => {\n const result = (reader.result ?? '').toString();\n if (this.stringIsValidJson(result)) {\n this._disabled$.next(false);\n this._importFile$.next(result);\n return;\n }\n\n this.clearJsonString();\n this.setErrorState(fileItem);\n };\n\n reader.readAsText(file);\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: string | FormData) =>\n file instanceof FormData\n ? this.dossierImportService.importDocumentDefinitionZip(file)\n : this.documentService.createDocumentDefinitionForManagement(\n new DocumentDefinitionCreateRequest(file)\n )\n ),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private clearJsonString(): void {\n this._importFile$.next('');\n }\n\n private stringIsValidJson(string: string) {\n try {\n JSON.parse(string);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n private setErrorState(fileItem: FileItem): void {\n this._disabled$.next(true);\n fileItem.invalid = true;\n fileItem.invalidTitle = this.translateService.instant(\n 'dossierManagement.importDefinition.invalidJsonError.title'\n );\n fileItem.invalidText = this.translateService.instant(\n 'dossierManagement.importDefinition.invalidJsonError.text'\n );\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.activeStep$.next(UPLOAD_STEP.PLUGINS);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n this._subscriptions.unsubscribe();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n data-carbon-theme=\"g10\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Upload16} from '@carbon/icons';\nimport {ColumnConfig, MenuService, Pagination, ViewType} from '@valtimo/components';\nimport {DocumentDefinition, DocumentService, Page} from '@valtimo/document';\nimport {IconService} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-dossier-management-list',\n templateUrl: './dossier-management-list.component.html',\n styleUrls: ['./dossier-management-list.component.scss'],\n})\nexport class DossierManagementListComponent {\n public pagination: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n };\n\n private readonly _refreshData$ = new BehaviorSubject<null>(null);\n public dossiers$: Observable<DocumentDefinition[]> = this._refreshData$.pipe(\n switchMap(() =>\n this.documentService.queryDefinitionsForManagement({\n page: this.pagination.page - 1,\n size: this.pagination.size,\n })\n ),\n map((documentDefinitionPage: Page<DocumentDefinition>) => {\n this.pagination = {\n ...this.pagination,\n collectionSize: documentDefinitionPage.totalElements,\n };\n\n return documentDefinitionPage.content.map((documentDefinition: DocumentDefinition) => ({\n ...documentDefinition,\n createdOn: moment(documentDefinition.createdOn).format('DD MMM YYYY HH:mm'),\n }));\n })\n );\n\n public dossierFields: ColumnConfig[] = [\n {key: 'schema.title', label: 'fieldLabels.title', viewType: ViewType.TEXT},\n {key: 'createdOn', label: 'fieldLabels.createdOn', viewType: ViewType.TEXT},\n {key: 'readOnly', label: 'fieldLabels.readOnly', viewType: ViewType.BOOLEAN},\n ];\n\n public readonly showModal$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly menuService: MenuService,\n private readonly router: Router\n ) {\n this.iconService.registerAll([Upload16]);\n }\n\n public onCloseModal(definitionUploaded: boolean): void {\n this.showModal$.next(false);\n\n if (!definitionUploaded) {\n return;\n }\n this._refreshData$.next(null);\n this.menuService.reload();\n }\n\n public paginationClicked(page: number): void {\n this.pagination = {...this.pagination, page};\n this._refreshData$.next(null);\n }\n\n public paginationSet(size: number): void {\n this.pagination = {...this.pagination, size};\n this._refreshData$.next(null);\n }\n\n public redirectToDetails(documentDefinition: DocumentDefinition): void {\n this.router.navigate(['/dossier-management/dossier', documentDefinition.id.name]);\n }\n\n public showModal(): void {\n this.showModal$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"dossiers$ | async as dossiers; else loading\"\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"importCaseDefinitionButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addCaseDefinitionButton\"\n [description]=\"'dossierManagement.noResults.description' | translate\"\n [title]=\"'dossierManagement.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #loading>\n <valtimo-carbon-list loading=\"true\"></valtimo-carbon-list>\n</ng-template>\n\n<valtimo-dossier-management-upload\n [open]=\"showModal$ | async\"\n (closeModal)=\"onCloseModal($event)\"\n></valtimo-dossier-management-upload>\n\n<ng-template #importCaseDefinitionButton>\n <button cdsButton=\"primary\" (click)=\"showModal()\">\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'Import' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\n\nconst routes: Routes = [\n {\n path: 'dossier-management',\n component: DossierManagementListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossiers', roles: [ROLE_ADMIN]},\n },\n {\n path: 'dossier-management/dossier/:name',\n component: DossierManagementDetailContainerComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossier details', roles: [ROLE_ADMIN], customPageTitle: true},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class DossierManagementRoutingModule {}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n CarbonMultiInputModule,\n ConfirmationModalModule,\n DropzoneModule,\n EditorModule,\n FormModule,\n InputModule,\n ListModule,\n ModalModule,\n MultiselectDropdownModule,\n ParagraphModule,\n RenderInPageHeaderDirectiveModule,\n SelectModule,\n SpinnerModule,\n TableModule,\n TooltipIconModule,\n ValtimoCdsModalDirectiveModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule} from '@valtimo/config';\nimport {\n ButtonModule,\n CheckboxModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n FileUploaderModule,\n IconModule,\n InputModule as CarbonInputModule,\n LinkModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n ProgressBarModule,\n TabsModule,\n TagModule,\n} from 'carbon-components-angular';\nimport {DossierManagementAssigneeComponent} from './components/dossier-management-assignee/dossier-management-assignee.component';\nimport {DossierManagementConnectModalComponent} from './components/dossier-management-connect-modal/dossier-management-connect-modal.component';\nimport {DossierManagementDetailContainerComponent} from './components/dossier-management-detail-container/dossier-management-detail-container.component';\nimport {DossierManagementDetailComponent} from './components/dossier-management-detail/dossier-management-detail.component';\nimport {DossierManagementLinkProcessComponent} from './components/dossier-management-link-process/dossier-management-link-process.component';\nimport {DossierManagementListColumnsComponent} from './components/dossier-management-list-columns/dossier-management-list-columns.component';\nimport {DossierManagementListComponent} from './components/dossier-management-list/dossier-management-list.component';\nimport {DossierManagementRemoveModalComponent} from './components/dossier-management-remove-modal/dossier-management-remove-modal.component';\nimport {DossierManagementSearchFieldsComponent} from './components/dossier-management-search-fields/dossier-management-search-fields.component';\nimport {DossierManagementAddTabModalComponent} from './components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component';\nimport {DossierManagementTabsComponent} from './components/dossier-management-tabs/dossier-management-tabs.component';\nimport {TabFormComponent} from './components/dossier-management-tabs/tab-form/tab-form.component';\nimport {DossierManagementUploadComponent} from './components/dossier-management-upload/dossier-management-upload.component';\nimport {DossierManagementRoutingModule} from './dossier-management-routing.module';\nimport {TabManagementService} from './services';\nimport {DossierManagementEditTabModalComponent} from './components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component';\nimport {DossierManagementDetailContainerActionsComponent} from './components/dossier-management-detail-container-actions/dossier-management-detail-container-actions';\nimport {DossierManagementDocumentDefinitionComponent} from './components/dossier-management-document-definition/dossier-management-document-definition';\nimport {DossierManagementProcessesComponent} from './components/dossier-management-processes/dossier-management-processes.component';\nimport {DossierManagementUploadStepComponent} from './components/dossier-management-upload/step/dossier-management-upload-step.component';\n\n@NgModule({\n declarations: [\n DossierManagementListComponent,\n DossierManagementDetailComponent,\n DossierManagementConnectModalComponent,\n DossierManagementRemoveModalComponent,\n DossierManagementUploadComponent,\n DossierManagementLinkProcessComponent,\n DossierManagementSearchFieldsComponent,\n DossierManagementDetailContainerComponent,\n DossierManagementAssigneeComponent,\n DossierManagementListColumnsComponent,\n DossierManagementTabsComponent,\n DossierManagementAddTabModalComponent,\n TabFormComponent,\n DossierManagementEditTabModalComponent,\n DossierManagementDetailContainerActionsComponent,\n DossierManagementDocumentDefinitionComponent,\n DossierManagementProcessesComponent,\n DossierManagementUploadStepComponent,\n ],\n imports: [\n CommonModule,\n WidgetModule,\n DropzoneModule,\n ListModule,\n DossierManagementRoutingModule,\n FormsModule,\n TranslateModule,\n ModalModule,\n ConfigModule,\n NgbTooltipModule,\n MultiselectDropdownModule,\n ParagraphModule,\n SelectModule,\n SpinnerModule,\n InputModule,\n SelectModule,\n FormModule,\n NotificationModule,\n ButtonModule,\n IconModule,\n CarbonModalModule,\n CarbonInputModule,\n ReactiveFormsModule,\n DropdownModule,\n CheckboxModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n LoadingModule,\n LinkModule,\n ConfirmationModalModule,\n TableModule,\n ValtimoCdsModalDirectiveModule,\n CarbonListModule,\n ComboBoxModule,\n RenderInPageHeaderDirectiveModule,\n DialogModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n NotificationModule,\n EditorModule,\n CarbonListModule,\n TabsModule,\n TagModule,\n FileUploaderModule,\n ProgressBarModule,\n ],\n providers: [TabManagementService],\n})\nexport class DossierManagementModule {}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of dossier-management\n */\n\nexport * from './lib/dossier-management.module';\nexport * from './lib/components/dossier-management-list/dossier-management-list.component';\nexport * from './lib/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5","i1","i2","tap","i2.DossierDetailService","i7","i8","i6","i6.DossierManagementLinkProcessComponent","i7.DossierManagementAssigneeComponent","take","i9","i1.TabService","i3.TabService","i5.TabFormComponent","i2.TabService","i2.TabManagementService","i6.DossierManagementAddTabModalComponent","i7.DossierManagementEditTabModalComponent","i2.DossierExportService","i7.DossierManagementRemoveModalComponent","i1.DossierDetailService","i3.DossierDetailService","i8.DossierManagementConnectModalComponent","i4.TabService","i8.DossierManagementDetailComponent","i9.DossierManagementSearchFieldsComponent","i10.DossierManagementListColumnsComponent","i11.DossierManagementTabsComponent","i12.DossierManagementDetailContainerActionsComponent","i13.DossierManagementDocumentDefinitionComponent","i14.DossierManagementProcessesComponent","i15","i2.DossierImportService","i8.DossierManagementUploadStepComponent","i6.DossierManagementUploadComponent","CarbonModalModule","CarbonInputModule"],"mappings":"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"}
|