@valtimo/task-management 12.0.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.
Files changed (57) hide show
  1. package/esm2022/lib/components/index.mjs +20 -0
  2. package/esm2022/lib/components/task-management/index.mjs +17 -0
  3. package/esm2022/lib/components/task-management/task-management.component.mjs +73 -0
  4. package/esm2022/lib/components/task-management-column-modal/index.mjs +17 -0
  5. package/esm2022/lib/components/task-management-column-modal/task-management-column-modal.component.mjs +373 -0
  6. package/esm2022/lib/components/task-management-columns/index.mjs +17 -0
  7. package/esm2022/lib/components/task-management-columns/task-management-columns.component.mjs +218 -0
  8. package/esm2022/lib/components/task-management-detail/index.mjs +17 -0
  9. package/esm2022/lib/components/task-management-detail/task-management-detail.component.mjs +64 -0
  10. package/esm2022/lib/models/index.mjs +17 -0
  11. package/esm2022/lib/models/task-management.model.mjs +21 -0
  12. package/esm2022/lib/services/index.mjs +18 -0
  13. package/esm2022/lib/services/task-management-api.service.mjs +48 -0
  14. package/esm2022/lib/services/task-management.service.mjs +36 -0
  15. package/esm2022/lib/task-management-routing.module.mjs +50 -0
  16. package/esm2022/lib/task-management.module.mjs +31 -0
  17. package/esm2022/public_api.mjs +23 -0
  18. package/esm2022/valtimo-task-management.mjs +5 -0
  19. package/fesm2022/valtimo-task-management.mjs +993 -0
  20. package/fesm2022/valtimo-task-management.mjs.map +1 -0
  21. package/index.d.ts +6 -0
  22. package/lib/components/index.d.ts +5 -0
  23. package/lib/components/index.d.ts.map +1 -0
  24. package/lib/components/task-management/index.d.ts +2 -0
  25. package/lib/components/task-management/index.d.ts.map +1 -0
  26. package/lib/components/task-management/task-management.component.d.ts +20 -0
  27. package/lib/components/task-management/task-management.component.d.ts.map +1 -0
  28. package/lib/components/task-management-column-modal/index.d.ts +2 -0
  29. package/lib/components/task-management-column-modal/index.d.ts.map +1 -0
  30. package/lib/components/task-management-column-modal/task-management-column-modal.component.d.ts +89 -0
  31. package/lib/components/task-management-column-modal/task-management-column-modal.component.d.ts.map +1 -0
  32. package/lib/components/task-management-columns/index.d.ts +2 -0
  33. package/lib/components/task-management-columns/index.d.ts.map +1 -0
  34. package/lib/components/task-management-columns/task-management-columns.component.d.ts +43 -0
  35. package/lib/components/task-management-columns/task-management-columns.component.d.ts.map +1 -0
  36. package/lib/components/task-management-detail/index.d.ts +2 -0
  37. package/lib/components/task-management-detail/index.d.ts.map +1 -0
  38. package/lib/components/task-management-detail/task-management-detail.component.d.ts +22 -0
  39. package/lib/components/task-management-detail/task-management-detail.component.d.ts.map +1 -0
  40. package/lib/models/index.d.ts +2 -0
  41. package/lib/models/index.d.ts.map +1 -0
  42. package/lib/models/task-management.model.d.ts +5 -0
  43. package/lib/models/task-management.model.d.ts.map +1 -0
  44. package/lib/services/index.d.ts +3 -0
  45. package/lib/services/index.d.ts.map +1 -0
  46. package/lib/services/task-management-api.service.d.ts +17 -0
  47. package/lib/services/task-management-api.service.d.ts.map +1 -0
  48. package/lib/services/task-management.service.d.ts +11 -0
  49. package/lib/services/task-management.service.d.ts.map +1 -0
  50. package/lib/task-management-routing.module.d.ts +9 -0
  51. package/lib/task-management-routing.module.d.ts.map +1 -0
  52. package/lib/task-management.module.d.ts +9 -0
  53. package/lib/task-management.module.d.ts.map +1 -0
  54. package/package.json +27 -0
  55. package/public_api.d.ts +5 -0
  56. package/public_api.d.ts.map +1 -0
  57. package/valtimo-task-management.d.ts.map +1 -0
@@ -0,0 +1,993 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Injectable, EventEmitter, Input, Output, ViewEncapsulation, NgModule } from '@angular/core';
3
+ import * as i6 from '@valtimo/components';
4
+ import { ViewType, CarbonListModule, CARBON_THEME, CARBON_CONSTANTS, TooltipIconModule, CarbonMultiInputModule, ValtimoCdsModalDirectiveModule, MoveRowDirection, ConfirmationModalModule } from '@valtimo/components';
5
+ import { BehaviorSubject, switchMap, map, tap, combineLatest, of, filter, Subject, take } from 'rxjs';
6
+ import moment from 'moment/moment';
7
+ import * as i3 from '@angular/common';
8
+ import { CommonModule } from '@angular/common';
9
+ import * as i1$2 from '@ngx-translate/core';
10
+ import { TranslateModule } from '@ngx-translate/core';
11
+ import * as i1 from '@valtimo/document';
12
+ import * as i1$1 from '@angular/router';
13
+ import { RouterModule } from '@angular/router';
14
+ import * as i5 from 'carbon-components-angular';
15
+ import { TabsModule, ModalModule, CheckboxModule, DropdownModule, InputModule, ButtonModule, IconModule } from 'carbon-components-angular';
16
+ import * as i2 from '@valtimo/config';
17
+ import { BaseApiService, ROLE_ADMIN } from '@valtimo/config';
18
+ import * as i1$3 from '@angular/common/http';
19
+ import * as i4 from '@angular/forms';
20
+ import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
21
+ import { TaskListColumnDefaultSort } from '@valtimo/task';
22
+ import { distinctUntilChanged } from 'rxjs/operators';
23
+ import { isEqual } from 'lodash';
24
+ import { AuthGuardService } from '@valtimo/security';
25
+
26
+ /*
27
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
28
+ *
29
+ * Licensed under EUPL, Version 1.2 (the "License");
30
+ * you may not use this file except in compliance with the License.
31
+ * You may obtain a copy of the License at
32
+ *
33
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
34
+ *
35
+ * Unless required by applicable law or agreed to in writing, software
36
+ * distributed under the License is distributed on an "AS IS" basis,
37
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
38
+ * See the License for the specific language governing permissions and
39
+ * limitations under the License.
40
+ */
41
+ class TaskManagementComponent {
42
+ constructor(documentService, router) {
43
+ this.documentService = documentService;
44
+ this.router = router;
45
+ this.pagination = {
46
+ collectionSize: 0,
47
+ page: 1,
48
+ size: 10,
49
+ };
50
+ this._refreshData$ = new BehaviorSubject(null);
51
+ this.dossiers$ = this._refreshData$.pipe(switchMap(() => this.documentService.queryDefinitionsForManagement({
52
+ page: this.pagination.page - 1,
53
+ size: this.pagination.size,
54
+ })), map((documentDefinitionPage) => {
55
+ this.pagination = {
56
+ ...this.pagination,
57
+ collectionSize: documentDefinitionPage.totalElements,
58
+ };
59
+ return documentDefinitionPage.content.map((documentDefinition) => ({
60
+ ...documentDefinition,
61
+ createdOn: moment(documentDefinition.createdOn).format('DD MMM YYYY HH:mm'),
62
+ }));
63
+ }));
64
+ this.dossierFields = [
65
+ { key: 'schema.title', label: 'taskManagement.caseName', viewType: ViewType.TEXT },
66
+ ];
67
+ }
68
+ paginationClicked(page) {
69
+ this.pagination = { ...this.pagination, page };
70
+ this._refreshData$.next(null);
71
+ }
72
+ paginationSet(size) {
73
+ this.pagination = { ...this.pagination, size };
74
+ this._refreshData$.next(null);
75
+ }
76
+ redirectToDetails(documentDefinition) {
77
+ this.router.navigate(['/task-management/dossier', documentDefinition.id.name]);
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementComponent, deps: [{ token: i1.DocumentService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: TaskManagementComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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 [hideToolbar]=\"true\"\n>\n <valtimo-no-results\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", styles: ["/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, CarbonListModule, TranslateModule], template: "<!--\n ~ Copyright 2015-2024 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 [hideToolbar]=\"true\"\n>\n <valtimo-no-results\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", styles: ["/*!\n * Copyright 2015-2024 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"] }]
85
+ }], ctorParameters: () => [{ type: i1.DocumentService }, { type: i1$1.Router }] });
86
+
87
+ /*
88
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
89
+ *
90
+ * Licensed under EUPL, Version 1.2 (the "License");
91
+ * you may not use this file except in compliance with the License.
92
+ * You may obtain a copy of the License at
93
+ *
94
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
95
+ *
96
+ * Unless required by applicable law or agreed to in writing, software
97
+ * distributed under the License is distributed on an "AS IS" basis,
98
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
99
+ * See the License for the specific language governing permissions and
100
+ * limitations under the License.
101
+ */
102
+
103
+ /*
104
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
105
+ *
106
+ * Licensed under EUPL, Version 1.2 (the "License");
107
+ * you may not use this file except in compliance with the License.
108
+ * You may obtain a copy of the License at
109
+ *
110
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
111
+ *
112
+ * Unless required by applicable law or agreed to in writing, software
113
+ * distributed under the License is distributed on an "AS IS" basis,
114
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
115
+ * See the License for the specific language governing permissions and
116
+ * limitations under the License.
117
+ */
118
+ var TaskManagementTab;
119
+ (function (TaskManagementTab) {
120
+ TaskManagementTab[TaskManagementTab["COLUMNS"] = 0] = "COLUMNS";
121
+ })(TaskManagementTab || (TaskManagementTab = {}));
122
+
123
+ /*
124
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
125
+ *
126
+ * Licensed under EUPL, Version 1.2 (the "License");
127
+ * you may not use this file except in compliance with the License.
128
+ * You may obtain a copy of the License at
129
+ *
130
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
131
+ *
132
+ * Unless required by applicable law or agreed to in writing, software
133
+ * distributed under the License is distributed on an "AS IS" basis,
134
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135
+ * See the License for the specific language governing permissions and
136
+ * limitations under the License.
137
+ */
138
+
139
+ /*
140
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
141
+ *
142
+ * Licensed under EUPL, Version 1.2 (the "License");
143
+ * you may not use this file except in compliance with the License.
144
+ * You may obtain a copy of the License at
145
+ *
146
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
147
+ *
148
+ * Unless required by applicable law or agreed to in writing, software
149
+ * distributed under the License is distributed on an "AS IS" basis,
150
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
151
+ * See the License for the specific language governing permissions and
152
+ * limitations under the License.
153
+ */
154
+ class TaskManagementService {
155
+ constructor() {
156
+ this._activeTab$ = new BehaviorSubject(TaskManagementTab.COLUMNS);
157
+ }
158
+ get activeTab$() {
159
+ return this._activeTab$.asObservable();
160
+ }
161
+ setActiveTab(tab) {
162
+ this._activeTab$.next(tab);
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
165
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementService }); }
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementService, decorators: [{
168
+ type: Injectable
169
+ }] });
170
+
171
+ /*
172
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
173
+ *
174
+ * Licensed under EUPL, Version 1.2 (the "License");
175
+ * you may not use this file except in compliance with the License.
176
+ * You may obtain a copy of the License at
177
+ *
178
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
179
+ *
180
+ * Unless required by applicable law or agreed to in writing, software
181
+ * distributed under the License is distributed on an "AS IS" basis,
182
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
183
+ * See the License for the specific language governing permissions and
184
+ * limitations under the License.
185
+ */
186
+ class TaskManagementApiService extends BaseApiService {
187
+ constructor(httpClient, configService) {
188
+ super(httpClient, configService);
189
+ this.httpClient = httpClient;
190
+ this.configService = configService;
191
+ }
192
+ getTaskListColumns(caseDefinitionName) {
193
+ return this.httpClient.get(this.getApiUrl(`/management/v1/case/${caseDefinitionName}/task-list-column`));
194
+ }
195
+ updateTaskListColumn(caseDefinitionName, column) {
196
+ return this.httpClient.put(this.getApiUrl(`/management/v1/case/${caseDefinitionName}/task-list-column/${column.key}`), column);
197
+ }
198
+ deleteTaskListColumn(caseDefinitionName, columnKey) {
199
+ return this.httpClient.delete(this.getApiUrl(`/management/v1/case/${caseDefinitionName}/task-list-column/${columnKey}`));
200
+ }
201
+ swapTaskListColumns(caseDefinitionName, firstColumn, secondColumn) {
202
+ return this.httpClient.post(this.getApiUrl(`/management/v1/case/${caseDefinitionName}/task-list-column`), { first: firstColumn.key, second: secondColumn.key });
203
+ }
204
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementApiService, deps: [{ token: i1$3.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
205
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementApiService, providedIn: 'root' }); }
206
+ }
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementApiService, decorators: [{
208
+ type: Injectable,
209
+ args: [{
210
+ providedIn: 'root',
211
+ }]
212
+ }], ctorParameters: () => [{ type: i1$3.HttpClient }, { type: i2.ConfigService }] });
213
+
214
+ /*
215
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
216
+ *
217
+ * Licensed under EUPL, Version 1.2 (the "License");
218
+ * you may not use this file except in compliance with the License.
219
+ * You may obtain a copy of the License at
220
+ *
221
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
222
+ *
223
+ * Unless required by applicable law or agreed to in writing, software
224
+ * distributed under the License is distributed on an "AS IS" basis,
225
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
226
+ * See the License for the specific language governing permissions and
227
+ * limitations under the License.
228
+ */
229
+
230
+ /*
231
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
232
+ *
233
+ * Licensed under EUPL, Version 1.2 (the "License");
234
+ * you may not use this file except in compliance with the License.
235
+ * You may obtain a copy of the License at
236
+ *
237
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
238
+ *
239
+ * Unless required by applicable law or agreed to in writing, software
240
+ * distributed under the License is distributed on an "AS IS" basis,
241
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
242
+ * See the License for the specific language governing permissions and
243
+ * limitations under the License.
244
+ */
245
+ class TaskManagementColumnModalComponent {
246
+ set taskListColumns(value) {
247
+ if (value?.length > 0) {
248
+ this._taskListColumns$.next(value);
249
+ }
250
+ }
251
+ set type(value) {
252
+ this.type$.next(value);
253
+ }
254
+ get type() {
255
+ return this.type$.getValue();
256
+ }
257
+ set show(showModal) {
258
+ this.show$.next(showModal);
259
+ if (showModal)
260
+ this.enable();
261
+ if (!showModal)
262
+ this.resetFormAfterTimeout();
263
+ }
264
+ set selectedTaskListColumn(column) {
265
+ if (column)
266
+ this.prefillForm(column);
267
+ }
268
+ get taskListColumns$() {
269
+ return this._taskListColumns$.pipe(distinctUntilChanged((previous, current) => isEqual(previous, current)));
270
+ }
271
+ get title() {
272
+ return this.formGroup.get('title');
273
+ }
274
+ get key() {
275
+ return this.formGroup.get('key');
276
+ }
277
+ get keyValue$() {
278
+ return this.key.valueChanges.pipe(distinctUntilChanged());
279
+ }
280
+ get path() {
281
+ return this.formGroup.get('path');
282
+ }
283
+ get dateFormat() {
284
+ return this.formGroup.get('dateFormat');
285
+ }
286
+ get displayType() {
287
+ return this.formGroup.get('displayType');
288
+ }
289
+ get sortable() {
290
+ return this.formGroup.get('sortable');
291
+ }
292
+ get defaultSort() {
293
+ return this.formGroup.get('defaultSort');
294
+ }
295
+ get _SORT_ASC_ITEM() {
296
+ return {
297
+ content: this.translateService.instant(`listColumn.sortableAsc`),
298
+ key: 'ASC',
299
+ };
300
+ }
301
+ get _SORT_DESC_ITEM() {
302
+ return {
303
+ content: this.translateService.instant(`listColumn.sortableDesc`),
304
+ key: 'DESC',
305
+ };
306
+ }
307
+ get enumValues$() {
308
+ return this._enumValues$.pipe(distinctUntilChanged((previous, current) => isEqual(previous, current)));
309
+ }
310
+ get enumValid$() {
311
+ return this.enumValues$.pipe(map(values => this.getValidEnumValues(values).length > 0));
312
+ }
313
+ get yesNoValues$() {
314
+ return this._yesNoValues$.pipe(distinctUntilChanged((previous, current) => isEqual(previous, current)));
315
+ }
316
+ constructor(translateService, taskManagementApiService) {
317
+ this.translateService = translateService;
318
+ this.taskManagementApiService = taskManagementApiService;
319
+ this.carbonTheme = CARBON_THEME.G10;
320
+ this.closeEvent = new EventEmitter();
321
+ this.type$ = new BehaviorSubject('add');
322
+ this.isAdd$ = this.type$.pipe(map(type => type === 'add'));
323
+ this.isEdit$ = this.type$.pipe(map(type => type === 'edit'), tap(isEdit => {
324
+ if (isEdit) {
325
+ this.key.disable();
326
+ }
327
+ else {
328
+ this.key.enable();
329
+ }
330
+ }));
331
+ this.show$ = new BehaviorSubject(false);
332
+ this.disabled$ = new BehaviorSubject(false);
333
+ this._taskListColumns$ = new BehaviorSubject([]);
334
+ this._INVALID_KEY = 'INVALID_KEY';
335
+ this.DISPLAY_TYPES = [
336
+ ViewType.TEXT,
337
+ ViewType.DATE,
338
+ ViewType.BOOLEAN,
339
+ ViewType.ENUM,
340
+ ViewType.ARRAY_COUNT,
341
+ ViewType.UNDERSCORES_TO_SPACES,
342
+ ];
343
+ this.getInvalidListItem = (translateKey) => ({
344
+ content: this.translateService.instant(translateKey),
345
+ key: this._INVALID_KEY,
346
+ selected: true,
347
+ });
348
+ this.uniqueKeyValidator = (keyFormControl) => {
349
+ const taskListColumns = this._taskListColumns$.getValue();
350
+ return !taskListColumns?.find(column => column?.key?.trim()?.toLowerCase() === keyFormControl?.value?.trim()?.toLowerCase())
351
+ ? null
352
+ : { notUnique: true };
353
+ };
354
+ this.listItemValidator = (listItemControl) => listItemControl?.value?.key && listItemControl.value.key !== this._INVALID_KEY
355
+ ? null
356
+ : { invalidItem: true };
357
+ this.formGroup = new FormGroup({
358
+ title: new FormControl(null),
359
+ key: new FormControl(null, [this.uniqueKeyValidator.bind(this), Validators.required]),
360
+ path: new FormControl(null, Validators.required),
361
+ dateFormat: new FormControl(null),
362
+ displayType: new FormControl(this.getInvalidListItem(`listColumn.selectDefaultSort`), [
363
+ Validators.required,
364
+ this.listItemValidator.bind(this),
365
+ ]),
366
+ sortable: new FormControl(false),
367
+ defaultSort: new FormControl(this.getInvalidListItem(`listColumn.selectDefaultSort`), [
368
+ Validators.required,
369
+ ]),
370
+ });
371
+ this.sortItems$ = combineLatest([
372
+ this.defaultSort?.valueChanges || of(null),
373
+ this.translateService.stream('key'),
374
+ ]).pipe(map(([defaultSortItem]) => [
375
+ this.getInvalidListItem(`listColumn.selectDefaultSort`),
376
+ this._SORT_ASC_ITEM,
377
+ this._SORT_DESC_ITEM,
378
+ ].map((item, index) => ({
379
+ ...item,
380
+ selected: defaultSortItem?.key === item?.key,
381
+ }))));
382
+ this.viewTypeItems$ = combineLatest([
383
+ this.displayType?.valueChanges || of(null),
384
+ this.translateService.stream('key'),
385
+ ]).pipe(map(([displayTypeItem]) => [
386
+ {
387
+ content: this.translateService.instant(`listColumnDisplayType.select`),
388
+ key: this._INVALID_KEY,
389
+ },
390
+ ...this.DISPLAY_TYPES.map(type => this.getListItemFromViewType(type)),
391
+ ].map((item, index) => ({
392
+ ...item,
393
+ selected: displayTypeItem?.key === item?.key,
394
+ }))));
395
+ this.showDateFormat$ = this.formGroup.valueChanges.pipe(map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])), tap(showDateFormat => (this._showDateFormat = showDateFormat)));
396
+ this.showEnum$ = this.formGroup.valueChanges.pipe(map(formValues => !!(formValues.displayType?.key === ViewType.ENUM)), tap(showEnum => {
397
+ this._showEnum = showEnum;
398
+ if ((this._enumValues$.getValue() || []).length === 0)
399
+ this.resetEnumValues();
400
+ }));
401
+ this.showYesNo$ = this.formGroup.valueChanges.pipe(map(formValues => !!(formValues.displayType?.key === ViewType.BOOLEAN)), tap(showYesNo => {
402
+ this._showYesNo = showYesNo;
403
+ if ((this._yesNoValues$.getValue() || []).length === 0)
404
+ this.resetYesNoValues();
405
+ }));
406
+ this.CARBON_THEME_WHITE = CARBON_THEME.WHITE;
407
+ this.disableDefaultSort$ = combineLatest([this.taskListColumns$, this.keyValue$]).pipe(map(([taskListColumns, keyValue]) => {
408
+ const defaultSortColumn = taskListColumns.find(column => column?.defaultSort === TaskListColumnDefaultSort.ASC ||
409
+ column?.defaultSort === TaskListColumnDefaultSort.DESC);
410
+ const defaultSortColumnExists = !!defaultSortColumn;
411
+ const enabled = !defaultSortColumnExists || defaultSortColumn.key === keyValue;
412
+ if (enabled) {
413
+ this.defaultSort?.enable();
414
+ }
415
+ else {
416
+ this.defaultSort?.disable();
417
+ }
418
+ return !enabled;
419
+ }));
420
+ this._DEFAULT_ENUM_VALUES = [{ key: '', value: '' }];
421
+ this._enumValues$ = new BehaviorSubject(this._DEFAULT_ENUM_VALUES);
422
+ this._yesNoValues$ = new BehaviorSubject(this._DEFAULT_ENUM_VALUES);
423
+ }
424
+ closeModal() {
425
+ this.closeEvent.emit('close');
426
+ }
427
+ save() {
428
+ this.disable();
429
+ this.taskManagementApiService
430
+ .updateTaskListColumn(this.documentDefinitionName, this.getTaskListColumnFromFormValue(this._showEnum, this._showDateFormat, this._showYesNo))
431
+ .subscribe({
432
+ next: () => {
433
+ this.closeModalAndRefresh();
434
+ this.enableAfterTimeout();
435
+ },
436
+ error: () => {
437
+ this.enable();
438
+ },
439
+ });
440
+ }
441
+ enumValueChange(value) {
442
+ this._enumValues$.next(value);
443
+ }
444
+ yesNoValueChange(value) {
445
+ this._yesNoValues$.next(value);
446
+ }
447
+ resetEnumValues() {
448
+ this._enumValues$.next(this._DEFAULT_ENUM_VALUES);
449
+ }
450
+ resetYesNoValues() {
451
+ this._yesNoValues$.next(this._DEFAULT_ENUM_VALUES);
452
+ }
453
+ resetFormAfterTimeout() {
454
+ setTimeout(() => {
455
+ this.resetForm();
456
+ }, CARBON_CONSTANTS.modalAnimationMs);
457
+ }
458
+ resetForm() {
459
+ this.resetEnumValues();
460
+ this.resetYesNoValues();
461
+ this.formGroup.reset({
462
+ title: null,
463
+ key: null,
464
+ dateFormat: null,
465
+ displayType: this.getInvalidListItem('listColumnDisplayType.select'),
466
+ sortable: false,
467
+ defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),
468
+ });
469
+ }
470
+ disable() {
471
+ this.disabled$.next(true);
472
+ }
473
+ enableAfterTimeout() {
474
+ setTimeout(() => {
475
+ this.enable();
476
+ }, CARBON_CONSTANTS.modalAnimationMs);
477
+ }
478
+ enable() {
479
+ this.disabled$.next(false);
480
+ }
481
+ closeModalAndRefresh() {
482
+ this.closeEvent.emit('refresh');
483
+ }
484
+ getTaskListColumnFromFormValue(includeEnum, includeDateFormat, includeYesNo) {
485
+ const validEnumValues = this.getValidEnumValues(this._enumValues$.getValue());
486
+ const mappedEnumValues = validEnumValues && validEnumValues.length > 0 && this.mapEnumValues(validEnumValues);
487
+ const validYesNoValues = this.getValidEnumValues(this._yesNoValues$.getValue());
488
+ const mappedYesNoValues = validYesNoValues && validYesNoValues.length > 0 && this.mapEnumValues(validYesNoValues);
489
+ const formValue = this.formGroup.getRawValue();
490
+ const taskListColumn = {
491
+ ...(formValue.title && { title: formValue.title }),
492
+ key: formValue.key,
493
+ path: formValue.path,
494
+ displayType: {
495
+ type: formValue.displayType.key,
496
+ displayTypeParameters: {
497
+ ...(includeDateFormat && formValue.dateFormat && { dateFormat: formValue.dateFormat }),
498
+ ...(includeEnum && mappedEnumValues && { enum: mappedEnumValues }),
499
+ ...(includeYesNo && mappedYesNoValues && { enum: mappedYesNoValues }),
500
+ },
501
+ },
502
+ sortable: formValue.sortable,
503
+ ...(formValue.defaultSort.key !== this._INVALID_KEY && {
504
+ defaultSort: formValue.defaultSort.key,
505
+ }),
506
+ };
507
+ return taskListColumn;
508
+ }
509
+ mapEnumValues(enumValues) {
510
+ return enumValues.reduce((acc, curr) => ({ ...acc, [curr.key]: curr.value }), {});
511
+ }
512
+ getValidEnumValues(values) {
513
+ return (values || []).filter(value => value.value && value.key);
514
+ }
515
+ getListItemFromViewType(viewType) {
516
+ return {
517
+ content: this.translateService.instant(`listColumnDisplayType.${viewType}`),
518
+ key: viewType,
519
+ };
520
+ }
521
+ getMultiInputValuesFromTaskListColumnEnum(taskListColumnEnum) {
522
+ return Object.keys(taskListColumnEnum).reduce((acc, curr) => [...acc, { key: curr, value: taskListColumnEnum[curr] }], []);
523
+ }
524
+ prefillForm(column) {
525
+ if (column?.displayType?.type === ViewType.ENUM &&
526
+ column?.displayType?.displayTypeParameters?.enum) {
527
+ this._enumValues$.next(this.getMultiInputValuesFromTaskListColumnEnum(column.displayType.displayTypeParameters.enum));
528
+ }
529
+ if (column?.displayType?.type === ViewType.BOOLEAN &&
530
+ column?.displayType?.displayTypeParameters?.enum) {
531
+ this._yesNoValues$.next(this.getMultiInputValuesFromTaskListColumnEnum(column.displayType.displayTypeParameters.enum));
532
+ }
533
+ this.formGroup.patchValue({
534
+ key: column.key,
535
+ path: column.path,
536
+ sortable: column.sortable,
537
+ displayType: this.getListItemFromViewType(column.displayType.type),
538
+ ...(column.title && { title: column.title }),
539
+ ...(!column.defaultSort && {
540
+ defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),
541
+ }),
542
+ ...(column.defaultSort === 'ASC' && { defaultSort: this._SORT_ASC_ITEM }),
543
+ ...(column.defaultSort === 'DESC' && { defaultSort: this._SORT_DESC_ITEM }),
544
+ ...(column.displayType?.type === ViewType.DATE && {
545
+ dateFormat: column.displayType.displayTypeParameters.dateFormat,
546
+ }),
547
+ });
548
+ }
549
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementColumnModalComponent, deps: [{ token: i1$2.TranslateService }, { token: TaskManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
550
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: TaskManagementColumnModalComponent, isStandalone: true, selector: "valtimo-task-management-column-modal", inputs: { carbonTheme: "carbonTheme", taskListColumns: "taskListColumns", type: "type", show: "show", documentDefinitionName: "documentDefinitionName", selectedTaskListColumn: "selectedTaskListColumn" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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 show: show$ | async,\n type: type$ | async,\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n disabled: disabled$ | async,\n showDateFormat: showDateFormat$ | async,\n showEnum: showEnum$ | async,\n showYesNo: showYesNo$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n enumValues: enumValues$ | async,\n enumValid: enumValid$ | async,\n yesNoValues: yesNoValues$ | async,\n viewTypeItems: viewTypeItems$ | async,\n sortItems: sortItems$ | async\n } as obs\"\n>\n <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n obs.type === 'add'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"form; context: {obs: obs}\"></ng-container>\n </section>\n\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {obs: obs}\"> </ng-container>\n </cds-modal>\n</ng-container>\n\n<ng-template #form let-obs=\"obs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [invalid]=\"key?.touched && key?.invalid\"\n [disabled]=\"obs.disabled || obs.isEdit\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"key\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n *ngIf=\"obs.viewTypeItems\"\n formControlName=\"displayType\"\n [disabled]=\"obs.disabled\"\n >\n <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showEnum\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.enumValues\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitleOptional' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showYesNo\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.yesNoValues\"\n type=\"keyValue\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n (valueChange)=\"yesNoValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown formControlName=\"defaultSort\" [disabled]=\"obs.disabled\" *ngIf=\"obs.sortItems\">\n <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-obs=\"obs\">\n <cds-modal-footer>\n <ng-container>\n <button\n (click)=\"closeModal()\"\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"obs.disabled\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n (click)=\"save()\"\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"!obs.valid\"\n [disabled]=\"obs.disabled || formGroup?.invalid || (obs.showEnum && !obs.enumValid)\"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n", styles: [".cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:16px}.label-with-tooltip{display:flex;align-items:center}.select-label{padding-bottom:8px}.list-column-form{margin-bottom:16px}.no-margin{margin-bottom:0!important}\n/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i5.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i5.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i5.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i5.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i5.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i5.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i5.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TooltipIconModule }, { kind: "component", type: i6.TooltipIconComponent, selector: "v-tooltip-icon", inputs: ["tooltip", "disabled"] }, { kind: "ngmodule", type: CarbonMultiInputModule }, { kind: "component", type: i6.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["name", "title", "titleTranslationKey", "type", "arbitraryValueAmount", "arbitraryAmountTitles", "initialAmountOfRows", "minimumAmountOfRows", "maxRows", "addRowText", "addRowTranslationKey", "deleteRowText", "deleteRowTranslationKey", "disabled", "defaultValues", "margin", "tooltip", "required", "keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "hideDeleteButton", "hideAddButton", "dropdownItems", "dropdownWidth", "fullWidth", "carbonTheme"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ValtimoCdsModalDirectiveModule }, { kind: "directive", type: i6.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
551
+ }
552
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementColumnModalComponent, decorators: [{
553
+ type: Component,
554
+ args: [{ selector: 'valtimo-task-management-column-modal', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
555
+ CommonModule,
556
+ CarbonListModule,
557
+ TranslateModule,
558
+ TabsModule,
559
+ FormsModule,
560
+ ModalModule,
561
+ CheckboxModule,
562
+ DropdownModule,
563
+ InputModule,
564
+ ReactiveFormsModule,
565
+ TooltipIconModule,
566
+ CarbonMultiInputModule,
567
+ ButtonModule,
568
+ ValtimoCdsModalDirectiveModule,
569
+ ], template: "<!--\n ~ Copyright 2015-2024 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 show: show$ | async,\n type: type$ | async,\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n disabled: disabled$ | async,\n showDateFormat: showDateFormat$ | async,\n showEnum: showEnum$ | async,\n showYesNo: showYesNo$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n enumValues: enumValues$ | async,\n enumValid: enumValid$ | async,\n yesNoValues: yesNoValues$ | async,\n viewTypeItems: viewTypeItems$ | async,\n sortItems: sortItems$ | async\n } as obs\"\n>\n <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n obs.type === 'add'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"form; context: {obs: obs}\"></ng-container>\n </section>\n\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {obs: obs}\"> </ng-container>\n </cds-modal>\n</ng-container>\n\n<ng-template #form let-obs=\"obs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [invalid]=\"key?.touched && key?.invalid\"\n [disabled]=\"obs.disabled || obs.isEdit\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"key\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n *ngIf=\"obs.viewTypeItems\"\n formControlName=\"displayType\"\n [disabled]=\"obs.disabled\"\n >\n <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showEnum\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.enumValues\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitleOptional' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showYesNo\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.yesNoValues\"\n type=\"keyValue\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n (valueChange)=\"yesNoValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown formControlName=\"defaultSort\" [disabled]=\"obs.disabled\" *ngIf=\"obs.sortItems\">\n <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-obs=\"obs\">\n <cds-modal-footer>\n <ng-container>\n <button\n (click)=\"closeModal()\"\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"obs.disabled\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n (click)=\"save()\"\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"!obs.valid\"\n [disabled]=\"obs.disabled || formGroup?.invalid || (obs.showEnum && !obs.enumValid)\"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n", styles: [".cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:16px}.label-with-tooltip{display:flex;align-items:center}.select-label{padding-bottom:8px}.list-column-form{margin-bottom:16px}.no-margin{margin-bottom:0!important}\n/*!\n * Copyright 2015-2024 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"] }]
570
+ }], ctorParameters: () => [{ type: i1$2.TranslateService }, { type: TaskManagementApiService }], propDecorators: { carbonTheme: [{
571
+ type: Input
572
+ }], taskListColumns: [{
573
+ type: Input
574
+ }], type: [{
575
+ type: Input
576
+ }], show: [{
577
+ type: Input
578
+ }], documentDefinitionName: [{
579
+ type: Input
580
+ }], selectedTaskListColumn: [{
581
+ type: Input
582
+ }], closeEvent: [{
583
+ type: Output
584
+ }] } });
585
+
586
+ /*
587
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
588
+ *
589
+ * Licensed under EUPL, Version 1.2 (the "License");
590
+ * you may not use this file except in compliance with the License.
591
+ * You may obtain a copy of the License at
592
+ *
593
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
594
+ *
595
+ * Unless required by applicable law or agreed to in writing, software
596
+ * distributed under the License is distributed on an "AS IS" basis,
597
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
598
+ * See the License for the specific language governing permissions and
599
+ * limitations under the License.
600
+ */
601
+ class TaskManagementColumnsComponent {
602
+ constructor(route, taskManagementApiService, translateService) {
603
+ this.route = route;
604
+ this.taskManagementApiService = taskManagementApiService;
605
+ this.translateService = translateService;
606
+ this.carbonTheme = CARBON_THEME.G10;
607
+ this._refreshColumns$ = new BehaviorSubject(null);
608
+ this.documentDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(name => !!name));
609
+ this.loadingColumns$ = new BehaviorSubject(true);
610
+ this.selectedTaskListColumn$ = new Subject();
611
+ this.cachedTaskListColumns$ = new BehaviorSubject([]);
612
+ this.taskListColumns$ = combineLatest([
613
+ this.documentDefinitionName$,
614
+ this._refreshColumns$,
615
+ this.translateService.stream('key'),
616
+ ]).pipe(tap(([_, refresh]) => {
617
+ if (refresh !== 'noAnimation')
618
+ this.loadingColumns$.next(true);
619
+ }), switchMap(([documentDefinitionName]) => this.taskManagementApiService.getTaskListColumns(documentDefinitionName)), tap(columns => {
620
+ this.cachedTaskListColumns$.next(columns);
621
+ }), map(columns => columns.map(column => ({
622
+ ...column,
623
+ title: column.title || '-',
624
+ sortable: column.sortable
625
+ ? this.translateService.instant('listColumn.sortableYes')
626
+ : this.translateService.instant('listColumn.sortableNo'),
627
+ defaultSort: (column.defaultSort === 'ASC' &&
628
+ this.translateService.instant('listColumn.sortableAsc')) ||
629
+ (column.defaultSort === 'DESC' &&
630
+ this.translateService.instant('listColumn.sortableDesc')) ||
631
+ '-',
632
+ displayType: this.translateService.instant(`listColumnDisplayType.${column?.displayType?.type}`),
633
+ displayTypeParameters: this.getDisplayTypeParametersView(column.displayType.displayTypeParameters),
634
+ }))), tap(() => {
635
+ this.enable();
636
+ this.loadingColumns$.next(false);
637
+ }));
638
+ this.showDeleteModal$ = new Subject();
639
+ this.deleteRowKey$ = new BehaviorSubject('');
640
+ this.disabled$ = new BehaviorSubject(true);
641
+ this.fields = [
642
+ {
643
+ viewType: 'string',
644
+ sortable: false,
645
+ key: 'title',
646
+ label: 'listColumn.title',
647
+ },
648
+ {
649
+ viewType: 'string',
650
+ sortable: false,
651
+ key: 'key',
652
+ label: 'listColumn.key',
653
+ },
654
+ {
655
+ viewType: 'string',
656
+ sortable: false,
657
+ key: 'path',
658
+ label: 'listColumn.path',
659
+ },
660
+ {
661
+ viewType: 'string',
662
+ sortable: false,
663
+ key: 'displayType',
664
+ label: 'listColumn.displayType',
665
+ },
666
+ {
667
+ viewType: 'string',
668
+ sortable: false,
669
+ key: 'displayTypeParameters',
670
+ label: 'listColumn.displayTypeParameters',
671
+ },
672
+ {
673
+ viewType: 'string',
674
+ sortable: false,
675
+ key: 'sortable',
676
+ label: 'listColumn.sortable',
677
+ },
678
+ {
679
+ viewType: 'string',
680
+ sortable: false,
681
+ key: 'defaultSort',
682
+ label: 'listColumn.defaultSort',
683
+ },
684
+ ];
685
+ this.actionItems = [
686
+ {
687
+ label: 'interface.delete',
688
+ callback: this.deleteRow.bind(this),
689
+ type: 'danger',
690
+ },
691
+ ];
692
+ this.modalType$ = new Subject();
693
+ this.showModal$ = new Subject();
694
+ }
695
+ refreshColumns(noAnimation = false) {
696
+ this._refreshColumns$.next(noAnimation ? 'noAnimation' : null);
697
+ }
698
+ deleteRow(taskListColumn) {
699
+ this.showDeleteModal$.next(true);
700
+ this.deleteRowKey$.next(taskListColumn.key);
701
+ }
702
+ onMoveRowClick(event, documentDefinitionName) {
703
+ const { direction, index } = event;
704
+ this.disable();
705
+ this.cachedTaskListColumns$
706
+ .pipe(take(1), switchMap(taskListColumns => this.taskManagementApiService.swapTaskListColumns(documentDefinitionName, taskListColumns[index], taskListColumns[direction === MoveRowDirection.UP ? index - 1 : index + 1])))
707
+ .subscribe({
708
+ next: () => {
709
+ this.refreshColumns(true);
710
+ },
711
+ error: () => this.enable(),
712
+ });
713
+ }
714
+ columnRowClicked(row) {
715
+ this.cachedTaskListColumns$.pipe(take(1)).subscribe(cachedTaskListColumns => {
716
+ const selectedTaskListColumn = cachedTaskListColumns.find(column => column.key === row.key);
717
+ this.selectedTaskListColumn$.next(selectedTaskListColumn);
718
+ this.showModal('edit');
719
+ });
720
+ }
721
+ showModal(type) {
722
+ this.modalType$.next(type);
723
+ this.showModal$.next(true);
724
+ }
725
+ onModalCloseEvent(event) {
726
+ this.showModal$.next(false);
727
+ if (event === 'refresh') {
728
+ this.disable();
729
+ this.refreshColumns();
730
+ }
731
+ setTimeout(() => {
732
+ this.clearSelectedTaskListColumn();
733
+ }, CARBON_CONSTANTS.modalAnimationMs);
734
+ }
735
+ deleteRowConfirmation(columnKey, documentDefinitionName) {
736
+ this.disable();
737
+ this.taskManagementApiService
738
+ .deleteTaskListColumn(documentDefinitionName, columnKey)
739
+ .subscribe({
740
+ next: () => {
741
+ this.refreshColumns(true);
742
+ },
743
+ error: () => this.enable(),
744
+ });
745
+ }
746
+ getDisplayTypeParametersView(displayTypeParameters) {
747
+ if (displayTypeParameters?.dateFormat) {
748
+ return displayTypeParameters.dateFormat;
749
+ }
750
+ else if (displayTypeParameters?.enum) {
751
+ return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {
752
+ const keyValuePairString = `${curr}: ${displayTypeParameters.enum[curr]}`;
753
+ if (!acc) {
754
+ return `${keyValuePairString}`;
755
+ }
756
+ return `${acc}, ${keyValuePairString}`;
757
+ }, '');
758
+ }
759
+ return '-';
760
+ }
761
+ disable() {
762
+ this.disabled$.next(true);
763
+ }
764
+ enable() {
765
+ this.disabled$.next(false);
766
+ }
767
+ clearSelectedTaskListColumn() {
768
+ this.selectedTaskListColumn$.next(null);
769
+ }
770
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementColumnsComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: TaskManagementApiService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
771
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: TaskManagementColumnsComponent, isStandalone: true, selector: "valtimo-task-management-columns", inputs: { carbonTheme: "carbonTheme" }, providers: [TaskManagementService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n disabled: disabled$ | async\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [documentDefinitionName]=\"obs.documentDefinitionName\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event, obs.documentDefinitionName)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"columnRowClicked($event)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"primary\" (click)=\"showModal('add')\" [disabled]=\"obs.disabled\">\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: TaskManagementColumnModalComponent, selector: "valtimo-task-management-column-modal", inputs: ["carbonTheme", "taskListColumns", "type", "show", "documentDefinitionName", "selectedTaskListColumn"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i6.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
772
+ }
773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementColumnsComponent, decorators: [{
774
+ type: Component,
775
+ args: [{ selector: 'valtimo-task-management-columns', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
776
+ CommonModule,
777
+ CarbonListModule,
778
+ TranslateModule,
779
+ TabsModule,
780
+ TaskManagementColumnModalComponent,
781
+ ButtonModule,
782
+ IconModule,
783
+ ConfirmationModalModule,
784
+ ], providers: [TaskManagementService], template: "<!--\n ~ Copyright 2015-2024 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n disabled: disabled$ | async\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [documentDefinitionName]=\"obs.documentDefinitionName\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event, obs.documentDefinitionName)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [movingRowsEnabled]=\"true\"\n (rowClicked)=\"columnRowClicked($event)\"\n (moveRow)=\"onMoveRowClick($event, obs.documentDefinitionName)\"\n >\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"primary\" (click)=\"showModal('add')\" [disabled]=\"obs.disabled\">\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n" }]
785
+ }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: TaskManagementApiService }, { type: i1$2.TranslateService }], propDecorators: { carbonTheme: [{
786
+ type: Input
787
+ }] } });
788
+
789
+ /*
790
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
791
+ *
792
+ * Licensed under EUPL, Version 1.2 (the "License");
793
+ * you may not use this file except in compliance with the License.
794
+ * You may obtain a copy of the License at
795
+ *
796
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
797
+ *
798
+ * Unless required by applicable law or agreed to in writing, software
799
+ * distributed under the License is distributed on an "AS IS" basis,
800
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
801
+ * See the License for the specific language governing permissions and
802
+ * limitations under the License.
803
+ */
804
+
805
+ /*
806
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
807
+ *
808
+ * Licensed under EUPL, Version 1.2 (the "License");
809
+ * you may not use this file except in compliance with the License.
810
+ * You may obtain a copy of the License at
811
+ *
812
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
813
+ *
814
+ * Unless required by applicable law or agreed to in writing, software
815
+ * distributed under the License is distributed on an "AS IS" basis,
816
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
817
+ * See the License for the specific language governing permissions and
818
+ * limitations under the License.
819
+ */
820
+ class TaskManagementDetailComponent {
821
+ constructor(route, documentService, pageTitleService, taskManagementService) {
822
+ this.route = route;
823
+ this.documentService = documentService;
824
+ this.pageTitleService = pageTitleService;
825
+ this.taskManagementService = taskManagementService;
826
+ this.carbonTheme = CARBON_THEME.G10;
827
+ this.setDocumentDefinitionName$ = this.route.params.pipe(map(params => params.name || ''), filter(docDefName => !!docDefName), switchMap(documentDefinitionName => this.documentService.getDocumentDefinition(documentDefinitionName)), tap(documentDefinition => {
828
+ this.pageTitleService.setCustomPageTitle(documentDefinition?.schema?.title || '-');
829
+ }));
830
+ this.activeTab$ = this.taskManagementService.activeTab$;
831
+ this.TAB_ENUM = TaskManagementTab;
832
+ }
833
+ setActiveTab(tab) {
834
+ this.taskManagementService.setActiveTab(tab);
835
+ }
836
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementDetailComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: i1.DocumentService }, { token: i6.PageTitleService }, { token: TaskManagementService }], target: i0.ɵɵFactoryTarget.Component }); }
837
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: TaskManagementDetailComponent, isStandalone: true, selector: "ng-component", inputs: { carbonTheme: "carbonTheme" }, providers: [TaskManagementService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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 *ngIf=\"{\n documentDefinitionName: setDocumentDefinitionName$ | async,\n activeTab: activeTab$ | async\n } as obs\"\n class=\"task-management-detail\"\n>\n <ng-container *ngIf=\"{columns: obs.activeTab === TAB_ENUM.COLUMNS} as activeTab\">\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"activeTab.columns\"\n [heading]=\"'taskManagement.columns' | translate\"\n (selected)=\"setActiveTab(TAB_ENUM.COLUMNS)\"\n ></cds-tab>\n </cds-tabs>\n\n <valtimo-task-management-columns *ngIf=\"activeTab.columns\"> </valtimo-task-management-columns>\n </ng-container>\n</div>\n", styles: [".task-management-detail .cds--tab-content{display:none}\n/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i5.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i5.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive"], outputs: ["selected"] }, { kind: "component", type: TaskManagementColumnsComponent, selector: "valtimo-task-management-columns", inputs: ["carbonTheme"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
838
+ }
839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementDetailComponent, decorators: [{
840
+ type: Component,
841
+ args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
842
+ CommonModule,
843
+ CarbonListModule,
844
+ TranslateModule,
845
+ TabsModule,
846
+ TaskManagementColumnsComponent,
847
+ ], providers: [TaskManagementService], encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 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 *ngIf=\"{\n documentDefinitionName: setDocumentDefinitionName$ | async,\n activeTab: activeTab$ | async\n } as obs\"\n class=\"task-management-detail\"\n>\n <ng-container *ngIf=\"{columns: obs.activeTab === TAB_ENUM.COLUMNS} as activeTab\">\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n [active]=\"activeTab.columns\"\n [heading]=\"'taskManagement.columns' | translate\"\n (selected)=\"setActiveTab(TAB_ENUM.COLUMNS)\"\n ></cds-tab>\n </cds-tabs>\n\n <valtimo-task-management-columns *ngIf=\"activeTab.columns\"> </valtimo-task-management-columns>\n </ng-container>\n</div>\n", styles: [".task-management-detail .cds--tab-content{display:none}\n/*!\n * Copyright 2015-2024 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"] }]
848
+ }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: i1.DocumentService }, { type: i6.PageTitleService }, { type: TaskManagementService }], propDecorators: { carbonTheme: [{
849
+ type: Input
850
+ }] } });
851
+
852
+ /*
853
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
854
+ *
855
+ * Licensed under EUPL, Version 1.2 (the "License");
856
+ * you may not use this file except in compliance with the License.
857
+ * You may obtain a copy of the License at
858
+ *
859
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
860
+ *
861
+ * Unless required by applicable law or agreed to in writing, software
862
+ * distributed under the License is distributed on an "AS IS" basis,
863
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
864
+ * See the License for the specific language governing permissions and
865
+ * limitations under the License.
866
+ */
867
+
868
+ /*
869
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
870
+ *
871
+ * Licensed under EUPL, Version 1.2 (the "License");
872
+ * you may not use this file except in compliance with the License.
873
+ * You may obtain a copy of the License at
874
+ *
875
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
876
+ *
877
+ * Unless required by applicable law or agreed to in writing, software
878
+ * distributed under the License is distributed on an "AS IS" basis,
879
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
880
+ * See the License for the specific language governing permissions and
881
+ * limitations under the License.
882
+ */
883
+
884
+ /*
885
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
886
+ *
887
+ * Licensed under EUPL, Version 1.2 (the "License");
888
+ * you may not use this file except in compliance with the License.
889
+ * You may obtain a copy of the License at
890
+ *
891
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
892
+ *
893
+ * Unless required by applicable law or agreed to in writing, software
894
+ * distributed under the License is distributed on an "AS IS" basis,
895
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
896
+ * See the License for the specific language governing permissions and
897
+ * limitations under the License.
898
+ */
899
+
900
+ /*
901
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
902
+ *
903
+ * Licensed under EUPL, Version 1.2 (the "License");
904
+ * you may not use this file except in compliance with the License.
905
+ * You may obtain a copy of the License at
906
+ *
907
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
908
+ *
909
+ * Unless required by applicable law or agreed to in writing, software
910
+ * distributed under the License is distributed on an "AS IS" basis,
911
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
912
+ * See the License for the specific language governing permissions and
913
+ * limitations under the License.
914
+ */
915
+ const routes = [
916
+ {
917
+ path: 'task-management',
918
+ component: TaskManagementComponent,
919
+ canActivate: [AuthGuardService],
920
+ data: { title: 'Tasks', roles: [ROLE_ADMIN] },
921
+ },
922
+ {
923
+ path: 'task-management/dossier/:name',
924
+ component: TaskManagementDetailComponent,
925
+ canActivate: [AuthGuardService],
926
+ data: { title: 'Task details', roles: [ROLE_ADMIN], customPageTitle: true },
927
+ },
928
+ ];
929
+ class TaskManagementRoutingModule {
930
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
931
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementRoutingModule, imports: [CommonModule, i1$1.RouterModule], exports: [RouterModule] }); }
932
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
933
+ }
934
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementRoutingModule, decorators: [{
935
+ type: NgModule,
936
+ args: [{
937
+ imports: [CommonModule, RouterModule.forChild(routes)],
938
+ exports: [RouterModule],
939
+ }]
940
+ }] });
941
+
942
+ /*
943
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
944
+ *
945
+ * Licensed under EUPL, Version 1.2 (the "License");
946
+ * you may not use this file except in compliance with the License.
947
+ * You may obtain a copy of the License at
948
+ *
949
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
950
+ *
951
+ * Unless required by applicable law or agreed to in writing, software
952
+ * distributed under the License is distributed on an "AS IS" basis,
953
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
954
+ * See the License for the specific language governing permissions and
955
+ * limitations under the License.
956
+ */
957
+ class TaskManagementModule {
958
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
959
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementModule, imports: [TaskManagementRoutingModule, TaskManagementComponent] }); }
960
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementModule, imports: [TaskManagementRoutingModule, TaskManagementComponent] }); }
961
+ }
962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TaskManagementModule, decorators: [{
963
+ type: NgModule,
964
+ args: [{
965
+ imports: [TaskManagementRoutingModule, TaskManagementComponent],
966
+ }]
967
+ }] });
968
+
969
+ /*
970
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
971
+ *
972
+ * Licensed under EUPL, Version 1.2 (the "License");
973
+ * you may not use this file except in compliance with the License.
974
+ * You may obtain a copy of the License at
975
+ *
976
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
977
+ *
978
+ * Unless required by applicable law or agreed to in writing, software
979
+ * distributed under the License is distributed on an "AS IS" basis,
980
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
981
+ * See the License for the specific language governing permissions and
982
+ * limitations under the License.
983
+ */
984
+ /*
985
+ * Public API Surface of task
986
+ */
987
+
988
+ /**
989
+ * Generated bundle index. Do not edit.
990
+ */
991
+
992
+ export { TaskManagementApiService, TaskManagementColumnModalComponent, TaskManagementColumnsComponent, TaskManagementComponent, TaskManagementDetailComponent, TaskManagementModule, TaskManagementService, TaskManagementTab };
993
+ //# sourceMappingURL=valtimo-task-management.mjs.map