@valtimo/task 13.22.0 → 13.23.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/fesm2022/valtimo-task.mjs +222 -437
- package/fesm2022/valtimo-task.mjs.map +1 -1
- package/lib/components/task-detail-modal/task-detail-modal.component.d.ts +8 -3
- package/lib/components/task-detail-modal/task-detail-modal.component.d.ts.map +1 -1
- package/lib/components/task-list/task-list.component.d.ts +3 -1
- package/lib/components/task-list/task-list.component.d.ts.map +1 -1
- package/lib/models/task.model.d.ts +8 -2
- package/lib/models/task.model.d.ts.map +1 -1
- package/lib/services/task-list-pagination.service.d.ts.map +1 -1
- package/lib/services/task-list-sort.service.d.ts.map +1 -1
- package/lib/services/task.service.d.ts +2 -1
- package/lib/services/task.service.d.ts.map +1 -1
- package/lib/task.module.d.ts +4 -5
- package/lib/task.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/public_api.d.ts.map +1 -1
- package/lib/components/assign-user-to-task/assign-user-to-task.component.d.ts +0 -72
- package/lib/components/assign-user-to-task/assign-user-to-task.component.d.ts.map +0 -1
|
@@ -1,37 +1,113 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { Injectable, EventEmitter, Input, Output, Component, ViewContainerRef, ViewChild, Optional, Inject, ChangeDetectionStrategy, signal, ViewEncapsulation, HostListener, NgModule } from '@angular/core';
|
|
3
|
-
import * as i9 from '@valtimo/components';
|
|
4
|
-
import { ViewType, RemoveClassnamesDirective, FormioOptionsImpl, FormIoModule, ConfirmationModalModule, TooltipModule, runAfterCarbonModalClosed, CarbonListModule, PageHeaderModule, WidgetModule, SpinnerModule, CamundaFormModule, RenderInPageHeaderDirective, SearchFieldsModule, ValtimoCdsModalDirective } from '@valtimo/components';
|
|
5
|
-
import { BehaviorSubject, combineLatest, tap, filter, switchMap, of, map as map$1, catchError, Subject, Subscription, take as take$1, distinctUntilChanged, EMPTY } from 'rxjs';
|
|
6
|
-
import * as i11 from '@angular/common';
|
|
1
|
+
import * as i6 from '@angular/common';
|
|
7
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { Injectable, EventEmitter, ViewContainerRef, Output, Input, ViewChild, Optional, Inject, ChangeDetectionStrategy, Component, signal, ViewEncapsulation, HostListener, NgModule } from '@angular/core';
|
|
5
|
+
import { RecentlyViewed16, CalendarAdd16, Edit16, FolderDetailsReference16 } from '@carbon/icons';
|
|
8
6
|
import * as i4$1 from '@ngx-translate/core';
|
|
9
7
|
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
|
|
10
|
-
import * as
|
|
11
|
-
import {
|
|
12
|
-
import { UserFollow16, UserRole16, Edit16, RecentlyViewed16, CalendarAdd16, FolderDetailsReference16 } from '@carbon/icons';
|
|
13
|
-
import { map, take, filter as filter$1, startWith, distinctUntilChanged as distinctUntilChanged$1, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs/operators';
|
|
14
|
-
import * as i1 from '@angular/common/http';
|
|
15
|
-
import { HttpParams, HttpHeaders, HttpClient } from '@angular/common/http';
|
|
8
|
+
import * as i9 from '@valtimo/components';
|
|
9
|
+
import { ViewType, FormioOptionsImpl, FormIoModule, ConfirmationModalModule, TooltipModule, RemoveClassnamesDirective, runAfterCarbonModalClosed, CarbonListModule, PageHeaderModule, WidgetModule, SpinnerModule, CamundaFormModule, RenderInPageHeaderDirective, SearchFieldsModule, AssignmentComponent, ValtimoCdsModalDirective } from '@valtimo/components';
|
|
16
10
|
import * as i1$1 from '@valtimo/shared';
|
|
17
11
|
import { BaseApiService, TaskListTab, InterceptorSkip, FORM_VIEW_MODEL_TOKEN, ROLE_USER, HttpLoaderFactory } from '@valtimo/shared';
|
|
18
|
-
import { omit, isEqual } from 'lodash';
|
|
19
|
-
import * as i1$2 from '@angular/router';
|
|
20
|
-
import { RouterModule } from '@angular/router';
|
|
21
|
-
import * as i4 from '@valtimo/security';
|
|
22
|
-
import { AuthGuardService } from '@valtimo/security';
|
|
23
|
-
import * as i14 from 'carbon-components-angular/dropdown';
|
|
24
12
|
import * as i7 from '@valtimo/process-link';
|
|
25
13
|
import { FORM_CUSTOM_COMPONENT_TOKEN, ProcessLinkModule, formSizeToCarbonModalSizeMap } from '@valtimo/process-link';
|
|
14
|
+
import * as i2$1 from 'carbon-components-angular';
|
|
15
|
+
import { LoadingModule, NotificationModule, ButtonModule, IconModule, ModalModule, ToggletipModule, DatePickerModule, LayerModule, LinkModule, TabsModule, ContentSwitcherModule, DropdownModule, TooltipModule as TooltipModule$1 } from 'carbon-components-angular';
|
|
16
|
+
import { BehaviorSubject, combineLatest, tap, filter, switchMap, of, map as map$1, catchError, Subscription, take as take$1, distinctUntilChanged, Subject, shareReplay, EMPTY } from 'rxjs';
|
|
26
17
|
import * as i2 from '@valtimo/document';
|
|
27
|
-
import * as i4
|
|
28
|
-
import * as i3
|
|
18
|
+
import * as i4 from 'ngx-logger';
|
|
19
|
+
import * as i3 from '@valtimo/access-control';
|
|
20
|
+
import * as i1$2 from '@angular/router';
|
|
21
|
+
import { RouterModule } from '@angular/router';
|
|
22
|
+
import * as i1 from '@angular/common/http';
|
|
23
|
+
import { HttpParams, HttpHeaders, HttpClient } from '@angular/common/http';
|
|
24
|
+
import { map, take, filter as filter$1, startWith, distinctUntilChanged as distinctUntilChanged$1, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs/operators';
|
|
25
|
+
import { omit, isEqual } from 'lodash';
|
|
29
26
|
import moment from 'moment';
|
|
30
|
-
import * as i6 from '@valtimo/sse';
|
|
31
|
-
import * as
|
|
27
|
+
import * as i6$1 from '@valtimo/sse';
|
|
28
|
+
import * as i11 from '@valtimo/teams';
|
|
29
|
+
import * as i13 from '@ng-bootstrap/ng-bootstrap';
|
|
32
30
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
33
31
|
import { FormsModule } from '@angular/forms';
|
|
34
32
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
33
|
+
import { AuthGuardService } from '@valtimo/security';
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
37
|
+
*
|
|
38
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
39
|
+
* you may not use this file except in compliance with the License.
|
|
40
|
+
* You may obtain a copy of the License at
|
|
41
|
+
*
|
|
42
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
43
|
+
*
|
|
44
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
45
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
46
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
47
|
+
* See the License for the specific language governing permissions and
|
|
48
|
+
* limitations under the License.
|
|
49
|
+
*/
|
|
50
|
+
var PERMISSION_ACTION;
|
|
51
|
+
(function (PERMISSION_ACTION) {
|
|
52
|
+
PERMISSION_ACTION["assign"] = "assign";
|
|
53
|
+
PERMISSION_ACTION["view"] = "view";
|
|
54
|
+
PERMISSION_ACTION["modify"] = "modify";
|
|
55
|
+
})(PERMISSION_ACTION || (PERMISSION_ACTION = {}));
|
|
56
|
+
var TASK_DETAIL_PERMISSION_RESOURCE;
|
|
57
|
+
(function (TASK_DETAIL_PERMISSION_RESOURCE) {
|
|
58
|
+
TASK_DETAIL_PERMISSION_RESOURCE["jsonSchemaDocument"] = "com.ritense.document.domain.impl.JsonSchemaDocument";
|
|
59
|
+
TASK_DETAIL_PERMISSION_RESOURCE["task"] = "com.ritense.valtimo.operaton.domain.OperatonTask";
|
|
60
|
+
})(TASK_DETAIL_PERMISSION_RESOURCE || (TASK_DETAIL_PERMISSION_RESOURCE = {}));
|
|
61
|
+
const CAN_ASSIGN_TASK_PERMISSION = {
|
|
62
|
+
action: PERMISSION_ACTION.assign,
|
|
63
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
64
|
+
};
|
|
65
|
+
const CAN_VIEW_TASK_PERMISSION = {
|
|
66
|
+
action: PERMISSION_ACTION.view,
|
|
67
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
68
|
+
};
|
|
69
|
+
const CAN_VIEW_CASE_PERMISSION = {
|
|
70
|
+
action: PERMISSION_ACTION.view,
|
|
71
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
72
|
+
};
|
|
73
|
+
const CAN_MODIFY_TASK_PERMISSION = {
|
|
74
|
+
action: PERMISSION_ACTION.modify,
|
|
75
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
80
|
+
*
|
|
81
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
82
|
+
* you may not use this file except in compliance with the License.
|
|
83
|
+
* You may obtain a copy of the License at
|
|
84
|
+
*
|
|
85
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
86
|
+
*
|
|
87
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
88
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
89
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
90
|
+
* See the License for the specific language governing permissions and
|
|
91
|
+
* limitations under the License.
|
|
92
|
+
*/
|
|
93
|
+
/**
|
|
94
|
+
* Enriches a task with assignee and due date from a process link result,
|
|
95
|
+
* only filling in fields that are missing on the task itself.
|
|
96
|
+
* Returns a new task object if any fields were enriched, or the original task if unchanged.
|
|
97
|
+
*/
|
|
98
|
+
function enrichTaskFromProcessLink(task, processLink) {
|
|
99
|
+
if (!processLink)
|
|
100
|
+
return task;
|
|
101
|
+
const needsAssignee = processLink.assignee && !task.assignee;
|
|
102
|
+
const needsDue = processLink.due && !task.due;
|
|
103
|
+
if (!needsAssignee && !needsDue)
|
|
104
|
+
return task;
|
|
105
|
+
return {
|
|
106
|
+
...task,
|
|
107
|
+
...(needsAssignee && { assignee: processLink.assignee }),
|
|
108
|
+
...(needsDue && { due: processLink.due }),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
35
111
|
|
|
36
112
|
/*
|
|
37
113
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -92,6 +168,9 @@ class TaskService extends BaseApiService {
|
|
|
92
168
|
getCandidateUsers(id) {
|
|
93
169
|
return this.httpClient.get(this.getApiUrl(`/v2/task/${id}/candidate-user`));
|
|
94
170
|
}
|
|
171
|
+
getCandidateTeams(id) {
|
|
172
|
+
return this.httpClient.get(this.getApiUrl(`/v1/task/${id}/candidate-team`), { params: { size: '1000' } });
|
|
173
|
+
}
|
|
95
174
|
assignTask(id, assigneeRequest) {
|
|
96
175
|
return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/assign`), assigneeRequest);
|
|
97
176
|
}
|
|
@@ -122,10 +201,10 @@ class TaskService extends BaseApiService {
|
|
|
122
201
|
removeTaskDueDate(taskId) {
|
|
123
202
|
return this.httpClient.post(this.getApiUrl(`/v1/task/${taskId}/set-due-date`), null);
|
|
124
203
|
}
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
126
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskService, deps: [{ token: i1.HttpClient }, { token: i1$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
205
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskService, providedIn: 'root' }); }
|
|
127
206
|
}
|
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskService, decorators: [{
|
|
129
208
|
type: Injectable,
|
|
130
209
|
args: [{ providedIn: 'root' }]
|
|
131
210
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.ConfigService }] });
|
|
@@ -180,10 +259,10 @@ class TaskListService {
|
|
|
180
259
|
setLoadingStateForCaseDefinition(loading) {
|
|
181
260
|
this._loadingStateForCaseDefinition$.next(loading);
|
|
182
261
|
}
|
|
183
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
184
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
262
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
263
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListService }); }
|
|
185
264
|
}
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListService, decorators: [{
|
|
187
266
|
type: Injectable
|
|
188
267
|
}] });
|
|
189
268
|
|
|
@@ -226,6 +305,7 @@ class TaskListSortService {
|
|
|
226
305
|
[TaskListTab.ALL]: this._defaultSortState,
|
|
227
306
|
[TaskListTab.MINE]: this._defaultSortState,
|
|
228
307
|
[TaskListTab.OPEN]: this._defaultSortState,
|
|
308
|
+
[TaskListTab.TEAM]: this._defaultSortState,
|
|
229
309
|
});
|
|
230
310
|
this._sortStateForCurrentTaskType$ = combineLatest([
|
|
231
311
|
this.taskListService.selectedTaskType$,
|
|
@@ -289,10 +369,10 @@ class TaskListSortService {
|
|
|
289
369
|
getSortString(sort) {
|
|
290
370
|
return `${sort.state.name},${sort.state.direction}`;
|
|
291
371
|
}
|
|
292
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
293
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
372
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListSortService, deps: [{ token: TaskService }, { token: TaskListService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
373
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListSortService }); }
|
|
294
374
|
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListSortService, decorators: [{
|
|
296
376
|
type: Injectable
|
|
297
377
|
}], ctorParameters: () => [{ type: TaskService }, { type: TaskListService }] });
|
|
298
378
|
|
|
@@ -475,10 +555,10 @@ class TaskListColumnService {
|
|
|
475
555
|
return taskListColumnColumnDisplayType;
|
|
476
556
|
}
|
|
477
557
|
}
|
|
478
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
479
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
558
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListColumnService, deps: [{ token: TaskService }, { token: TaskListService }, { token: TaskListSortService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
559
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListColumnService }); }
|
|
480
560
|
}
|
|
481
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
561
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListColumnService, decorators: [{
|
|
482
562
|
type: Injectable
|
|
483
563
|
}], ctorParameters: () => [{ type: TaskService }, { type: TaskListService }, { type: TaskListSortService }] });
|
|
484
564
|
|
|
@@ -510,6 +590,7 @@ class TaskListPaginationService {
|
|
|
510
590
|
[TaskListTab.ALL]: this.getDefaultPagination(),
|
|
511
591
|
[TaskListTab.MINE]: this.getDefaultPagination(),
|
|
512
592
|
[TaskListTab.OPEN]: this.getDefaultPagination(),
|
|
593
|
+
[TaskListTab.TEAM]: this.getDefaultPagination(),
|
|
513
594
|
});
|
|
514
595
|
this._paginationForCurrentTaskType$ = combineLatest([
|
|
515
596
|
this.taskListService.selectedTaskType$,
|
|
@@ -543,10 +624,10 @@ class TaskListPaginationService {
|
|
|
543
624
|
size: 10,
|
|
544
625
|
};
|
|
545
626
|
}
|
|
546
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
547
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
627
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListPaginationService, deps: [{ token: TaskListService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
628
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListPaginationService }); }
|
|
548
629
|
}
|
|
549
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
630
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListPaginationService, decorators: [{
|
|
550
631
|
type: Injectable
|
|
551
632
|
}], ctorParameters: () => [{ type: TaskListService }] });
|
|
552
633
|
|
|
@@ -636,10 +717,10 @@ class TaskListSearchService {
|
|
|
636
717
|
});
|
|
637
718
|
return filters;
|
|
638
719
|
}
|
|
639
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
640
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
720
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListSearchService, deps: [{ token: i1$1.ConfigService }, { token: TaskListService }, { token: TaskService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
721
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListSearchService }); }
|
|
641
722
|
}
|
|
642
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListSearchService, decorators: [{
|
|
643
724
|
type: Injectable
|
|
644
725
|
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: TaskListService }, { type: TaskService }] });
|
|
645
726
|
|
|
@@ -685,10 +766,10 @@ class TaskListQueryParamService {
|
|
|
685
766
|
parseBase64(base64string) {
|
|
686
767
|
return JSON.parse(atob(base64string));
|
|
687
768
|
}
|
|
688
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
689
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
769
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListQueryParamService, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
770
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListQueryParamService }); }
|
|
690
771
|
}
|
|
691
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
772
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListQueryParamService, decorators: [{
|
|
692
773
|
type: Injectable
|
|
693
774
|
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }] });
|
|
694
775
|
|
|
@@ -749,10 +830,10 @@ class TaskIntermediateSaveService extends BaseApiService {
|
|
|
749
830
|
setFormIoFormData(value) {
|
|
750
831
|
this._formIoFormData$.next(value);
|
|
751
832
|
}
|
|
752
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
753
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskIntermediateSaveService, deps: [{ token: i1.HttpClient }, { token: i1$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
834
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskIntermediateSaveService, providedIn: 'root' }); }
|
|
754
835
|
}
|
|
755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskIntermediateSaveService, decorators: [{
|
|
756
837
|
type: Injectable,
|
|
757
838
|
args: [{ providedIn: 'root' }]
|
|
758
839
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.ConfigService }] });
|
|
@@ -773,353 +854,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
773
854
|
* limitations under the License.
|
|
774
855
|
*/
|
|
775
856
|
|
|
776
|
-
/*
|
|
777
|
-
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
778
|
-
*
|
|
779
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
780
|
-
* you may not use this file except in compliance with the License.
|
|
781
|
-
* You may obtain a copy of the License at
|
|
782
|
-
*
|
|
783
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
784
|
-
*
|
|
785
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
786
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
787
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
788
|
-
* See the License for the specific language governing permissions and
|
|
789
|
-
* limitations under the License.
|
|
790
|
-
*/
|
|
791
|
-
class AssignUserToTaskComponent {
|
|
792
|
-
set taskId(value) {
|
|
793
|
-
if (this._taskId === value)
|
|
794
|
-
return;
|
|
795
|
-
this._taskId = value;
|
|
796
|
-
this.fetchCandidateUsers(value);
|
|
797
|
-
}
|
|
798
|
-
set canAssignUserToTask(value) {
|
|
799
|
-
this.canAssignUserToTaskSet$.next(true);
|
|
800
|
-
this.canAssignUserToTask$.next(value);
|
|
801
|
-
}
|
|
802
|
-
constructor(taskService, cdsThemeService, iconService, elementRef, renderer2, userProviderService) {
|
|
803
|
-
this.taskService = taskService;
|
|
804
|
-
this.cdsThemeService = cdsThemeService;
|
|
805
|
-
this.iconService = iconService;
|
|
806
|
-
this.elementRef = elementRef;
|
|
807
|
-
this.renderer2 = renderer2;
|
|
808
|
-
this.userProviderService = userProviderService;
|
|
809
|
-
this.assignmentOfTaskChanged = new EventEmitter();
|
|
810
|
-
this.canAssignUserToTaskSet$ = new BehaviorSubject(false);
|
|
811
|
-
this.canAssignUserToTask$ = new BehaviorSubject(false);
|
|
812
|
-
this.assignedIdOnServer$ = new BehaviorSubject(null);
|
|
813
|
-
this._assignedUserFullName$ = new BehaviorSubject(null);
|
|
814
|
-
this.assignedUserFullName$ = this._assignedUserFullName$.pipe(map(fullName => `${fullName?.trim()}`));
|
|
815
|
-
this._candidateUsersForTask$ = new BehaviorSubject(undefined);
|
|
816
|
-
this._selectedUserId$ = new BehaviorSubject(null);
|
|
817
|
-
this.selectedUserId$ = this._selectedUserId$.asObservable();
|
|
818
|
-
this.candidateUsersForTask$ = this._candidateUsersForTask$.pipe(map(users => this.mapUsersForDropdown(users)));
|
|
819
|
-
this.editCandidateUsersForTask$ = combineLatest([
|
|
820
|
-
this._candidateUsersForTask$,
|
|
821
|
-
this.assignedIdOnServer$,
|
|
822
|
-
]).pipe(map(([users, assignedId]) => this.mapUsersForDropdown(users, assignedId)));
|
|
823
|
-
this.toggletipView$ = new BehaviorSubject('choice');
|
|
824
|
-
this.editToggletipOpen$ = new BehaviorSubject(false);
|
|
825
|
-
this.mouseIsOverAssignee$ = new BehaviorSubject(false);
|
|
826
|
-
this.showComboBox$ = new BehaviorSubject(true);
|
|
827
|
-
this.open$ = new Subject();
|
|
828
|
-
this.disabled$ = new BehaviorSubject(true);
|
|
829
|
-
this.toggletipTheme$ = this.cdsThemeService.toggletipTheme$;
|
|
830
|
-
this.toggletipDropdownTheme$ = this.cdsThemeService.toggletipDropdownTheme$;
|
|
831
|
-
this._subscriptions = new Subscription();
|
|
832
|
-
this.iconService.registerAll([UserFollow16, UserRole16, Edit16]);
|
|
833
|
-
}
|
|
834
|
-
ngOnInit() {
|
|
835
|
-
this.openHideElementSubscription();
|
|
836
|
-
}
|
|
837
|
-
ngOnChanges(changes) {
|
|
838
|
-
this._candidateUsersForTask$.pipe(take$1(1)).subscribe(candidateUsers => {
|
|
839
|
-
const currentUserId = changes.assigneeId?.currentValue || this.assigneeId;
|
|
840
|
-
const resolvedId = candidateUsers?.length
|
|
841
|
-
? this.resolveUserId(candidateUsers, currentUserId)
|
|
842
|
-
: currentUserId;
|
|
843
|
-
this.assignedIdOnServer$.next(resolvedId || null);
|
|
844
|
-
this._selectedUserId$.next(resolvedId || null);
|
|
845
|
-
this._assignedUserFullName$.next(this.getAssignedUserName(candidateUsers ?? [], currentUserId));
|
|
846
|
-
});
|
|
847
|
-
}
|
|
848
|
-
ngOnDestroy() {
|
|
849
|
-
this._subscriptions.unsubscribe();
|
|
850
|
-
}
|
|
851
|
-
assignTask(userId) {
|
|
852
|
-
this.disable();
|
|
853
|
-
combineLatest([
|
|
854
|
-
this._candidateUsersForTask$,
|
|
855
|
-
this.taskService.assignTask(this._taskId, { assignee: userId }),
|
|
856
|
-
])
|
|
857
|
-
.pipe(take$1(1))
|
|
858
|
-
.subscribe({
|
|
859
|
-
next: ([candidateUsers]) => {
|
|
860
|
-
this._selectedUserId$.next(userId);
|
|
861
|
-
this.assignedIdOnServer$.next(userId);
|
|
862
|
-
this._assignedUserFullName$.next(this.getAssignedUserName(candidateUsers ?? [], userId));
|
|
863
|
-
this.closeToggletip();
|
|
864
|
-
this.emitChange();
|
|
865
|
-
this.enable();
|
|
866
|
-
},
|
|
867
|
-
error: () => {
|
|
868
|
-
this.enable();
|
|
869
|
-
},
|
|
870
|
-
});
|
|
871
|
-
}
|
|
872
|
-
unassignTask() {
|
|
873
|
-
this.disable();
|
|
874
|
-
this.taskService
|
|
875
|
-
.unassignTask(this._taskId)
|
|
876
|
-
.pipe(tap(() => {
|
|
877
|
-
this.closeToggletip();
|
|
878
|
-
this.emitChange();
|
|
879
|
-
this.enable();
|
|
880
|
-
this.resetState();
|
|
881
|
-
}))
|
|
882
|
-
.subscribe();
|
|
883
|
-
}
|
|
884
|
-
getAssignedUserName(users, userId) {
|
|
885
|
-
if (users && userId) {
|
|
886
|
-
const findUser = this.findUserByIdOrUsername(users, userId);
|
|
887
|
-
return findUser ? findUser.label : userId;
|
|
888
|
-
}
|
|
889
|
-
return userId || '-';
|
|
890
|
-
}
|
|
891
|
-
onMouseEnterAssignee() {
|
|
892
|
-
this.mouseIsOverAssignee$.next(true);
|
|
893
|
-
}
|
|
894
|
-
onMouseLeaveAssignee() {
|
|
895
|
-
this.mouseIsOverAssignee$.next(false);
|
|
896
|
-
}
|
|
897
|
-
onSubmitButtonClick() {
|
|
898
|
-
this.assignTask(this._selectedUserId$.getValue());
|
|
899
|
-
}
|
|
900
|
-
onUserSelect(event) {
|
|
901
|
-
if (!event?.id)
|
|
902
|
-
return;
|
|
903
|
-
this._selectedUserId$.next(event.id);
|
|
904
|
-
}
|
|
905
|
-
onComboBoxClear() {
|
|
906
|
-
this._selectedUserId$.next(null);
|
|
907
|
-
}
|
|
908
|
-
onAssignToMe() {
|
|
909
|
-
this.userProviderService
|
|
910
|
-
.getUserSubject()
|
|
911
|
-
.pipe(take$1(1))
|
|
912
|
-
.subscribe((currentUser) => {
|
|
913
|
-
if (currentUser?.id) {
|
|
914
|
-
this.assignTask(currentUser.id);
|
|
915
|
-
}
|
|
916
|
-
});
|
|
917
|
-
}
|
|
918
|
-
onAssignToOtherUser() {
|
|
919
|
-
this.toggletipView$.next('dropdown');
|
|
920
|
-
this._selectedUserId$.next(null);
|
|
921
|
-
}
|
|
922
|
-
onOpenAssignToggletip() {
|
|
923
|
-
this.toggletipView$.next('choice');
|
|
924
|
-
this._selectedUserId$.next(null);
|
|
925
|
-
}
|
|
926
|
-
onOpenEditToggletip() {
|
|
927
|
-
this.editToggletipOpen$.next(true);
|
|
928
|
-
this._selectedUserId$.next(null);
|
|
929
|
-
this.resetComboBox();
|
|
930
|
-
}
|
|
931
|
-
onCloseEditToggletip() {
|
|
932
|
-
this.editToggletipOpen$.next(false);
|
|
933
|
-
}
|
|
934
|
-
resetState() {
|
|
935
|
-
this.assignedIdOnServer$.next(null);
|
|
936
|
-
this._selectedUserId$.next(null);
|
|
937
|
-
this._assignedUserFullName$.next(null);
|
|
938
|
-
this.toggletipView$.next('choice');
|
|
939
|
-
}
|
|
940
|
-
findUserByIdOrUsername(users, identifier) {
|
|
941
|
-
return (users.find(user => user.id === identifier) || users.find(user => user.userName === identifier));
|
|
942
|
-
}
|
|
943
|
-
resolveUserId(users, identifier) {
|
|
944
|
-
const user = this.findUserByIdOrUsername(users, identifier);
|
|
945
|
-
return user ? user.id : identifier;
|
|
946
|
-
}
|
|
947
|
-
mapUsersForDropdown(users, selectedUserId) {
|
|
948
|
-
if (!users)
|
|
949
|
-
return [];
|
|
950
|
-
return this.sortUsersWithCurrentUserFirst(users).map(user => ({
|
|
951
|
-
content: user.label,
|
|
952
|
-
id: user.id,
|
|
953
|
-
selected: selectedUserId ? user.id === selectedUserId : false,
|
|
954
|
-
}));
|
|
955
|
-
}
|
|
956
|
-
sortUsersWithCurrentUserFirst(users) {
|
|
957
|
-
let currentUserId = null;
|
|
958
|
-
this.userProviderService
|
|
959
|
-
.getUserSubject()
|
|
960
|
-
.pipe(take$1(1))
|
|
961
|
-
.subscribe((user) => {
|
|
962
|
-
currentUserId = user?.id || null;
|
|
963
|
-
});
|
|
964
|
-
return users
|
|
965
|
-
.map(user => ({ ...user, lastName: user.lastName?.split(' ').splice(-1)[0] || '' }))
|
|
966
|
-
.sort((a, b) => {
|
|
967
|
-
if (currentUserId) {
|
|
968
|
-
if (a.id === currentUserId)
|
|
969
|
-
return -1;
|
|
970
|
-
if (b.id === currentUserId)
|
|
971
|
-
return 1;
|
|
972
|
-
}
|
|
973
|
-
return a.lastName.localeCompare(b.lastName);
|
|
974
|
-
});
|
|
975
|
-
}
|
|
976
|
-
resetComboBox() {
|
|
977
|
-
this.showComboBox$.next(false);
|
|
978
|
-
setTimeout(() => this.showComboBox$.next(true));
|
|
979
|
-
}
|
|
980
|
-
emitChange() {
|
|
981
|
-
this.assignmentOfTaskChanged.emit();
|
|
982
|
-
}
|
|
983
|
-
enable() {
|
|
984
|
-
this.disabled$.next(false);
|
|
985
|
-
}
|
|
986
|
-
disable() {
|
|
987
|
-
this.disabled$.next(true);
|
|
988
|
-
}
|
|
989
|
-
closeToggletip() {
|
|
990
|
-
this.editToggletipOpen$.next(false);
|
|
991
|
-
this.open$.next(true);
|
|
992
|
-
setTimeout(() => this.open$.next(false));
|
|
993
|
-
}
|
|
994
|
-
fetchCandidateUsers(taskId) {
|
|
995
|
-
this.disable();
|
|
996
|
-
this.canAssignUserToTask$
|
|
997
|
-
.pipe(filter$1(allowed => !!allowed), take$1(1))
|
|
998
|
-
.subscribe(() => {
|
|
999
|
-
this.taskService.getCandidateUsers(taskId).subscribe(candidateUsers => {
|
|
1000
|
-
this._candidateUsersForTask$.next(candidateUsers);
|
|
1001
|
-
if (this.assigneeId) {
|
|
1002
|
-
const resolvedId = this.resolveUserId(candidateUsers, this.assigneeId);
|
|
1003
|
-
this.assignedIdOnServer$.next(resolvedId);
|
|
1004
|
-
this._selectedUserId$.next(resolvedId);
|
|
1005
|
-
this._assignedUserFullName$.next(this.getAssignedUserName(candidateUsers, this.assigneeId));
|
|
1006
|
-
}
|
|
1007
|
-
this.enable();
|
|
1008
|
-
});
|
|
1009
|
-
});
|
|
1010
|
-
}
|
|
1011
|
-
openHideElementSubscription() {
|
|
1012
|
-
this._subscriptions.add(combineLatest([this.assignedIdOnServer$, this.canAssignUserToTask$]).subscribe(([idOnServer, canAssignUserToTask]) => {
|
|
1013
|
-
if (!canAssignUserToTask && idOnServer === null) {
|
|
1014
|
-
this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'none');
|
|
1015
|
-
}
|
|
1016
|
-
else {
|
|
1017
|
-
this.renderer2.removeStyle(this.elementRef.nativeElement, 'display');
|
|
1018
|
-
}
|
|
1019
|
-
}));
|
|
1020
|
-
}
|
|
1021
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: AssignUserToTaskComponent, deps: [{ token: TaskService }, { token: i9.CdsThemeService }, { token: i3.IconService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i4.UserProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1022
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: AssignUserToTaskComponent, isStandalone: true, selector: "valtimo-assign-user-to-task", inputs: { taskId: "taskId", assigneeId: "assigneeId", canAssignUserToTask: "canAssignUserToTask" }, outputs: { assignmentOfTaskChanged: "assignmentOfTaskChanged" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 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 (canAssignUserToTaskSet$ | async) && {\n candidateUsers: candidateUsersForTask$ | async,\n editCandidateUsers: editCandidateUsersForTask$ | async,\n disabled: disabled$ | async,\n idOnServer: assignedIdOnServer$ | async,\n mouseIsOverAssignee: mouseIsOverAssignee$ | async,\n assignedUserFullName: assignedUserFullName$ | async,\n selectedUserId: selectedUserId$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n toggletipView: toggletipView$ | async,\n showComboBox: showComboBox$ | async,\n editToggletipOpen: editToggletipOpen$ | async,\n } as obs\n \"\n>\n <ng-container *ngIf=\"{isAssigned: obs.idOnServer !== null} as vars\">\n <div\n class=\"assign-user-container\"\n *ngIf=\"obs.canAssignUserToTask || (!obs.canAssignUserToTask && vars.isAssigned)\"\n (mouseenter)=\"onMouseEnterAssignee()\"\n (mouseleave)=\"onMouseLeaveAssignee()\"\n >\n <div\n class=\"assignee-text element\"\n [ngClass]=\"{\n active: obs.canAssignUserToTask\n ? vars.isAssigned && !obs.mouseIsOverAssignee && !obs.editToggletipOpen\n : vars.isAssigned,\n }\"\n >\n <span class=\"bold\">{{ 'assignTask.assignedTo' | translate }}</span>\n \n <span class=\"name\">{{ obs.assignedUserFullName }}</span>\n </div>\n\n <cds-toggletip\n *ngIf=\"obs.canAssignUserToTask\"\n align=\"bottom\"\n class=\"element\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: vars.isAssigned && (obs.mouseIsOverAssignee || obs.editToggletipOpen)}\"\n (onOpen)=\"onOpenEditToggletip()\"\n (onClose)=\"onCloseEditToggletip()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n size=\"sm\"\n class=\"click-to-edit-button\"\n >\n {{ 'assignTask.clickToEdit' | translate }}\n </button>\n\n <div cdsToggletipContent class=\"assign-task-popover-content\">\n <cds-combo-box\n *ngIf=\"obs.showComboBox\"\n [attr.data-carbon-theme]=\"toggletipDropdownTheme$ | async\"\n [label]=\"'assignTask.comboboxLabel' | translate\"\n [placeholder]=\"'assignTask.placeholder' | translate\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs?.editCandidateUsers || []\"\n [disabled]=\"obs.disabled\"\n itemValueKey=\"id\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onComboBoxClear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [cdsLayer]=\"1\"\n class=\"submit-task-button\"\n [disabled]=\"!obs.selectedUserId || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'assignTask.submitButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"danger--tertiary\"\n [cdsLayer]=\"1\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [disabled]=\"obs.disabled\"\n (click)=\"unassignTask()\"\n >\n {{ 'assignTask.remove' | translate }}\n </button>\n </div>\n </cds-toggletip>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !vars.isAssigned}\"\n (onOpen)=\"onOpenAssignToggletip()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n class=\"assign-button\"\n >\n {{ 'assignTask.buttonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n\n <div cdsToggletipContent class=\"assign-task-popover-content\">\n <ng-container *ngIf=\"obs.toggletipView === 'choice'\">\n <button\n cdsButton=\"secondary\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"choice-button\"\n [disabled]=\"obs.disabled\"\n [cdsLayer]=\"1\"\n (click)=\"onAssignToMe()\"\n >\n {{ 'assignTask.assignToMe' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--role\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"secondary\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"choice-button\"\n [disabled]=\"obs.disabled\"\n [cdsLayer]=\"1\"\n (click)=\"onAssignToOtherUser(); $event.stopPropagation()\"\n >\n {{ 'assignTask.assignToOtherUser' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"obs.toggletipView === 'dropdown'\">\n <cds-combo-box\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'assignTask.comboboxLabel' | translate\"\n [placeholder]=\"'assignTask.placeholder' | translate\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs?.candidateUsers || []\"\n [disabled]=\"obs.disabled\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onAssignToOtherUser()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"submit-task-button\"\n [disabled]=\"!obs.selectedUserId || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'assignTask.submitButtonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n </ng-container>\n </div>\n </cds-toggletip>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.assign-user-container{display:flex;align-items:center;justify-content:center;position:relative;font-weight:400;font-size:14px;line-height:18px;letter-spacing:.16px;color:var(--cds-link-01)}.assign-user-container .bold{font-weight:700;flex-shrink:0}.assign-user-container .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.assignee-text{display:flex;justify-content:flex-start;align-items:center;width:100%}.element{opacity:0;visibility:hidden;position:absolute;width:100%;transition:opacity .3s ease-in-out}.element.active{opacity:1;visibility:visible}.element.main{position:relative;width:auto}.assign-task-popover-content{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.assign-task-popover-content .cds--btn,.choice-button{width:100%;max-width:unset}.assign-button{width:250px}.click-to-edit-button{width:100%}\n/*!\n * Copyright 2015-2026 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: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ToggletipModule }, { kind: "component", type: i3.Toggletip, selector: "cds-toggletip, ibm-toggletip", inputs: ["id", "isOpen"] }, { kind: "directive", type: i3.ToggletipButton, selector: "[cdsToggletipButton], [ibmToggletipButton]", inputs: ["ariaLabel"] }, { kind: "directive", type: i3.ToggletipContent, selector: "[cdsToggletipContent], [ibmToggletipContent]" }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i3.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i14.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: RemoveClassnamesDirective, selector: "[removeClassnames]", inputs: ["removeClassnames"] }] }); }
|
|
1023
|
-
}
|
|
1024
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: AssignUserToTaskComponent, decorators: [{
|
|
1025
|
-
type: Component,
|
|
1026
|
-
args: [{ selector: 'valtimo-assign-user-to-task', standalone: true, imports: [
|
|
1027
|
-
CommonModule,
|
|
1028
|
-
TranslateModule,
|
|
1029
|
-
ButtonModule,
|
|
1030
|
-
ToggletipModule,
|
|
1031
|
-
IconModule,
|
|
1032
|
-
LayerModule,
|
|
1033
|
-
ComboBoxModule,
|
|
1034
|
-
RemoveClassnamesDirective,
|
|
1035
|
-
], template: "<!--\n ~ Copyright 2015-2026 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 (canAssignUserToTaskSet$ | async) && {\n candidateUsers: candidateUsersForTask$ | async,\n editCandidateUsers: editCandidateUsersForTask$ | async,\n disabled: disabled$ | async,\n idOnServer: assignedIdOnServer$ | async,\n mouseIsOverAssignee: mouseIsOverAssignee$ | async,\n assignedUserFullName: assignedUserFullName$ | async,\n selectedUserId: selectedUserId$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n toggletipView: toggletipView$ | async,\n showComboBox: showComboBox$ | async,\n editToggletipOpen: editToggletipOpen$ | async,\n } as obs\n \"\n>\n <ng-container *ngIf=\"{isAssigned: obs.idOnServer !== null} as vars\">\n <div\n class=\"assign-user-container\"\n *ngIf=\"obs.canAssignUserToTask || (!obs.canAssignUserToTask && vars.isAssigned)\"\n (mouseenter)=\"onMouseEnterAssignee()\"\n (mouseleave)=\"onMouseLeaveAssignee()\"\n >\n <div\n class=\"assignee-text element\"\n [ngClass]=\"{\n active: obs.canAssignUserToTask\n ? vars.isAssigned && !obs.mouseIsOverAssignee && !obs.editToggletipOpen\n : vars.isAssigned,\n }\"\n >\n <span class=\"bold\">{{ 'assignTask.assignedTo' | translate }}</span>\n \n <span class=\"name\">{{ obs.assignedUserFullName }}</span>\n </div>\n\n <cds-toggletip\n *ngIf=\"obs.canAssignUserToTask\"\n align=\"bottom\"\n class=\"element\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: vars.isAssigned && (obs.mouseIsOverAssignee || obs.editToggletipOpen)}\"\n (onOpen)=\"onOpenEditToggletip()\"\n (onClose)=\"onCloseEditToggletip()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n size=\"sm\"\n class=\"click-to-edit-button\"\n >\n {{ 'assignTask.clickToEdit' | translate }}\n </button>\n\n <div cdsToggletipContent class=\"assign-task-popover-content\">\n <cds-combo-box\n *ngIf=\"obs.showComboBox\"\n [attr.data-carbon-theme]=\"toggletipDropdownTheme$ | async\"\n [label]=\"'assignTask.comboboxLabel' | translate\"\n [placeholder]=\"'assignTask.placeholder' | translate\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs?.editCandidateUsers || []\"\n [disabled]=\"obs.disabled\"\n itemValueKey=\"id\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onComboBoxClear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [cdsLayer]=\"1\"\n class=\"submit-task-button\"\n [disabled]=\"!obs.selectedUserId || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'assignTask.submitButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"danger--tertiary\"\n [cdsLayer]=\"1\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [disabled]=\"obs.disabled\"\n (click)=\"unassignTask()\"\n >\n {{ 'assignTask.remove' | translate }}\n </button>\n </div>\n </cds-toggletip>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !vars.isAssigned}\"\n (onOpen)=\"onOpenAssignToggletip()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n class=\"assign-button\"\n >\n {{ 'assignTask.buttonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n\n <div cdsToggletipContent class=\"assign-task-popover-content\">\n <ng-container *ngIf=\"obs.toggletipView === 'choice'\">\n <button\n cdsButton=\"secondary\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"choice-button\"\n [disabled]=\"obs.disabled\"\n [cdsLayer]=\"1\"\n (click)=\"onAssignToMe()\"\n >\n {{ 'assignTask.assignToMe' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--role\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"secondary\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"choice-button\"\n [disabled]=\"obs.disabled\"\n [cdsLayer]=\"1\"\n (click)=\"onAssignToOtherUser(); $event.stopPropagation()\"\n >\n {{ 'assignTask.assignToOtherUser' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"obs.toggletipView === 'dropdown'\">\n <cds-combo-box\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'assignTask.comboboxLabel' | translate\"\n [placeholder]=\"'assignTask.placeholder' | translate\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs?.candidateUsers || []\"\n [disabled]=\"obs.disabled\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onAssignToOtherUser()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"submit-task-button\"\n [disabled]=\"!obs.selectedUserId || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'assignTask.submitButtonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n </ng-container>\n </div>\n </cds-toggletip>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.assign-user-container{display:flex;align-items:center;justify-content:center;position:relative;font-weight:400;font-size:14px;line-height:18px;letter-spacing:.16px;color:var(--cds-link-01)}.assign-user-container .bold{font-weight:700;flex-shrink:0}.assign-user-container .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.assignee-text{display:flex;justify-content:flex-start;align-items:center;width:100%}.element{opacity:0;visibility:hidden;position:absolute;width:100%;transition:opacity .3s ease-in-out}.element.active{opacity:1;visibility:visible}.element.main{position:relative;width:auto}.assign-task-popover-content{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.assign-task-popover-content .cds--btn,.choice-button{width:100%;max-width:unset}.assign-button{width:250px}.click-to-edit-button{width:100%}\n/*!\n * Copyright 2015-2026 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"] }]
|
|
1036
|
-
}], ctorParameters: () => [{ type: TaskService }, { type: i9.CdsThemeService }, { type: i3.IconService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i4.UserProviderService }], propDecorators: { taskId: [{
|
|
1037
|
-
type: Input
|
|
1038
|
-
}], assigneeId: [{
|
|
1039
|
-
type: Input
|
|
1040
|
-
}], assignmentOfTaskChanged: [{
|
|
1041
|
-
type: Output
|
|
1042
|
-
}], canAssignUserToTask: [{
|
|
1043
|
-
type: Input
|
|
1044
|
-
}] } });
|
|
1045
|
-
|
|
1046
|
-
/*
|
|
1047
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1048
|
-
*
|
|
1049
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1050
|
-
* you may not use this file except in compliance with the License.
|
|
1051
|
-
* You may obtain a copy of the License at
|
|
1052
|
-
*
|
|
1053
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1054
|
-
*
|
|
1055
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1056
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1057
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1058
|
-
* See the License for the specific language governing permissions and
|
|
1059
|
-
* limitations under the License.
|
|
1060
|
-
*/
|
|
1061
|
-
var PERMISSION_ACTION;
|
|
1062
|
-
(function (PERMISSION_ACTION) {
|
|
1063
|
-
PERMISSION_ACTION["assign"] = "assign";
|
|
1064
|
-
PERMISSION_ACTION["view"] = "view";
|
|
1065
|
-
PERMISSION_ACTION["modify"] = "modify";
|
|
1066
|
-
})(PERMISSION_ACTION || (PERMISSION_ACTION = {}));
|
|
1067
|
-
var TASK_DETAIL_PERMISSION_RESOURCE;
|
|
1068
|
-
(function (TASK_DETAIL_PERMISSION_RESOURCE) {
|
|
1069
|
-
TASK_DETAIL_PERMISSION_RESOURCE["jsonSchemaDocument"] = "com.ritense.document.domain.impl.JsonSchemaDocument";
|
|
1070
|
-
TASK_DETAIL_PERMISSION_RESOURCE["task"] = "com.ritense.valtimo.operaton.domain.OperatonTask";
|
|
1071
|
-
})(TASK_DETAIL_PERMISSION_RESOURCE || (TASK_DETAIL_PERMISSION_RESOURCE = {}));
|
|
1072
|
-
const CAN_ASSIGN_TASK_PERMISSION = {
|
|
1073
|
-
action: PERMISSION_ACTION.assign,
|
|
1074
|
-
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
1075
|
-
};
|
|
1076
|
-
const CAN_VIEW_TASK_PERMISSION = {
|
|
1077
|
-
action: PERMISSION_ACTION.view,
|
|
1078
|
-
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
1079
|
-
};
|
|
1080
|
-
const CAN_VIEW_CASE_PERMISSION = {
|
|
1081
|
-
action: PERMISSION_ACTION.view,
|
|
1082
|
-
resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
1083
|
-
};
|
|
1084
|
-
const CAN_MODIFY_TASK_PERMISSION = {
|
|
1085
|
-
action: PERMISSION_ACTION.modify,
|
|
1086
|
-
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
1087
|
-
};
|
|
1088
|
-
|
|
1089
|
-
/*
|
|
1090
|
-
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
1091
|
-
*
|
|
1092
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1093
|
-
* you may not use this file except in compliance with the License.
|
|
1094
|
-
* You may obtain a copy of the License at
|
|
1095
|
-
*
|
|
1096
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1097
|
-
*
|
|
1098
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1099
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1100
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1101
|
-
* See the License for the specific language governing permissions and
|
|
1102
|
-
* limitations under the License.
|
|
1103
|
-
*/
|
|
1104
|
-
/**
|
|
1105
|
-
* Enriches a task with assignee and due date from a process link result,
|
|
1106
|
-
* only filling in fields that are missing on the task itself.
|
|
1107
|
-
* Returns a new task object if any fields were enriched, or the original task if unchanged.
|
|
1108
|
-
*/
|
|
1109
|
-
function enrichTaskFromProcessLink(task, processLink) {
|
|
1110
|
-
if (!processLink)
|
|
1111
|
-
return task;
|
|
1112
|
-
const needsAssignee = processLink.assignee && !task.assignee;
|
|
1113
|
-
const needsDue = processLink.due && !task.due;
|
|
1114
|
-
if (!needsAssignee && !needsDue)
|
|
1115
|
-
return task;
|
|
1116
|
-
return {
|
|
1117
|
-
...task,
|
|
1118
|
-
...(needsAssignee && { assignee: processLink.assignee }),
|
|
1119
|
-
...(needsDue && { due: processLink.due }),
|
|
1120
|
-
};
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
857
|
/*
|
|
1124
858
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1125
859
|
*
|
|
@@ -1527,10 +1261,10 @@ class TaskDetailContentComponent {
|
|
|
1527
1261
|
this.stateService.setCaseDefinitionKey(caseDefinitionKey);
|
|
1528
1262
|
});
|
|
1529
1263
|
}
|
|
1530
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1531
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskDetailContentComponent, deps: [{ token: i1$1.ConfigService }, { token: i2.DocumentService }, { token: i1$1.GlobalNotificationService }, { token: i2$1.IconService }, { token: i4.NGXLogger }, { token: i9.ValtimoModalService }, { token: i3.PermissionService }, { token: i7.ProcessLinkService }, { token: i1$2.Router }, { token: i9.FormIoStateService }, { token: TaskIntermediateSaveService }, { token: TaskService }, { token: i4$1.TranslateService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }, { token: i7.UrlResolverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TaskDetailContentComponent, isStandalone: true, selector: "valtimo-task-detail-content", inputs: { task: "task", taskAndProcessLink: "taskAndProcessLink", modalClosed: "modalClosed" }, outputs: { closeModalEvent: "closeModalEvent", formSubmit: "formSubmit", activeChange: "activeChange", taskUpdated: "taskUpdated" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "formFlow", first: true, predicate: ["formFlow"], descendants: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 loading: loading$ | async,\n task: task$ | async,\n taskId: taskInstanceId$ | async,\n formDefinition: formDefinition$ | async,\n formDefinitionId: formDefinitionId$ | async,\n formName: formName$ | async,\n formIoFormData: formIoFormData$ | async,\n submission: submission$ | async,\n processLinkIsForm: processLinkIsForm$ | async,\n processLinkIsFormViewModel: processLinkIsFormViewModel$ | async,\n processLinkIsUiComponent: processLinkIsUiComponent$ | async,\n formioOptions: formioOptions$ | async,\n processLinkIsFormFlow: processLinkIsFormFlow$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n errorMessage: errorMessage$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n noFormNotification: noFormNotification$ | async,\n } as obs\"\n>\n @if (obs.loading) {\n <div style=\"width: 100%; display: flex; justify-content: center; padding: 1rem\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n } @else {\n <valtimo-form-io\n #form\n *ngIf=\"\n obs.formDefinition &&\n obs.submission &&\n obs.processLinkIsForm &&\n !obs.processLinkIsUiComponent &&\n !obs.processLinkIsFormViewModel\n \"\n [form]=\"obs.formDefinition\"\n [submission]=\"obs.submission\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"obs.formioOptions\"\n ></valtimo-form-io>\n\n <valtimo-form-flow\n #formFlow\n *ngIf=\"obs.processLinkIsFormFlow\"\n [formIoFormData]=\"formIoFormData$\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n (formFlowComplete)=\"completeTask(obs.task)\"\n (formFlowChange)=\"onFormFlowChangeEvent()\"\n ></valtimo-form-flow>\n\n @if (obs.noFormNotification) {\n <cds-inline-notification [notificationObj]=\"obs.noFormNotification\"></cds-inline-notification>\n }\n\n @if (obs.errorMessage) {\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'error',\n title: ('interface.error' | translate),\n message: obs.errorMessage,\n showClose: false,\n lowContrast: true\n }\"\n ></cds-inline-notification>\n }\n }\n\n <div class=\"m-2\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormIoModule }, { kind: "component", type: i9.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ProcessLinkModule }, { kind: "component", type: i7.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i2$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: NotificationModule }, { kind: "component", type: i2$1.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1532
1266
|
}
|
|
1533
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskDetailContentComponent, decorators: [{
|
|
1534
1268
|
type: Component,
|
|
1535
1269
|
args: [{ selector: 'valtimo-task-detail-content', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1536
1270
|
CommonModule,
|
|
@@ -1540,7 +1274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1540
1274
|
LoadingModule,
|
|
1541
1275
|
NotificationModule,
|
|
1542
1276
|
], template: "<!--\n ~ Copyright 2015-2025 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 loading: loading$ | async,\n task: task$ | async,\n taskId: taskInstanceId$ | async,\n formDefinition: formDefinition$ | async,\n formDefinitionId: formDefinitionId$ | async,\n formName: formName$ | async,\n formIoFormData: formIoFormData$ | async,\n submission: submission$ | async,\n processLinkIsForm: processLinkIsForm$ | async,\n processLinkIsFormViewModel: processLinkIsFormViewModel$ | async,\n processLinkIsUiComponent: processLinkIsUiComponent$ | async,\n formioOptions: formioOptions$ | async,\n processLinkIsFormFlow: processLinkIsFormFlow$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n errorMessage: errorMessage$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n noFormNotification: noFormNotification$ | async,\n } as obs\"\n>\n @if (obs.loading) {\n <div style=\"width: 100%; display: flex; justify-content: center; padding: 1rem\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n } @else {\n <valtimo-form-io\n #form\n *ngIf=\"\n obs.formDefinition &&\n obs.submission &&\n obs.processLinkIsForm &&\n !obs.processLinkIsUiComponent &&\n !obs.processLinkIsFormViewModel\n \"\n [form]=\"obs.formDefinition\"\n [submission]=\"obs.submission\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"obs.formioOptions\"\n ></valtimo-form-io>\n\n <valtimo-form-flow\n #formFlow\n *ngIf=\"obs.processLinkIsFormFlow\"\n [formIoFormData]=\"formIoFormData$\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n (formFlowComplete)=\"completeTask(obs.task)\"\n (formFlowChange)=\"onFormFlowChangeEvent()\"\n ></valtimo-form-flow>\n\n @if (obs.noFormNotification) {\n <cds-inline-notification [notificationObj]=\"obs.noFormNotification\"></cds-inline-notification>\n }\n\n @if (obs.errorMessage) {\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'error',\n title: ('interface.error' | translate),\n message: obs.errorMessage,\n showClose: false,\n lowContrast: true\n }\"\n ></cds-inline-notification>\n }\n }\n\n <div class=\"m-2\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n</ng-container>\n" }]
|
|
1543
|
-
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i2.DocumentService }, { type: i1$1.GlobalNotificationService }, { type:
|
|
1277
|
+
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i2.DocumentService }, { type: i1$1.GlobalNotificationService }, { type: i2$1.IconService }, { type: i4.NGXLogger }, { type: i9.ValtimoModalService }, { type: i3.PermissionService }, { type: i7.ProcessLinkService }, { type: i1$2.Router }, { type: i9.FormIoStateService }, { type: TaskIntermediateSaveService }, { type: TaskService }, { type: i4$1.TranslateService }, { type: undefined, decorators: [{
|
|
1544
1278
|
type: Optional
|
|
1545
1279
|
}, {
|
|
1546
1280
|
type: Inject,
|
|
@@ -1720,10 +1454,10 @@ class TaskDetailIntermediateSaveComponent {
|
|
|
1720
1454
|
this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);
|
|
1721
1455
|
});
|
|
1722
1456
|
}
|
|
1723
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1724
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1457
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskDetailIntermediateSaveComponent, deps: [{ token: i1$1.ConfigService }, { token: i1$1.GlobalNotificationService }, { token: i2$1.IconService }, { token: TaskIntermediateSaveService }, { token: TaskService }, { token: i4$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1458
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TaskDetailIntermediateSaveComponent, isStandalone: true, selector: "valtimo-task-detail-intermediate-save", inputs: { task: "task", taskAndProcessLink: "taskAndProcessLink" }, outputs: { currentIntermediateSaveEvent: "currentIntermediateSaveEvent", showModalEvent: "showModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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@if (intermediateSaveEnabled && (formFlowInstanceId$ | async) === undefined) {\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"save\"\n [vTooltip]=\"'formManagement.intermediateSave.save' | translate\"\n (click)=\"saveCurrentProgress()\"\n ></button>\n\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"recently-viewed\"\n [disabled]=\"!currentIntermediateSave\"\n [vTooltip]=\"'formManagement.intermediateSave.clear' | translate\"\n (click)=\"revertSaveClick()\"\n ></button>\n}\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n", styles: [":host{flex-shrink:0}\n/*!\n * Copyright 2015-2025 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: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i9.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"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ModalModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1725
1459
|
}
|
|
1726
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1460
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskDetailIntermediateSaveComponent, decorators: [{
|
|
1727
1461
|
type: Component,
|
|
1728
1462
|
args: [{ selector: 'valtimo-task-detail-intermediate-save', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1729
1463
|
CommonModule,
|
|
@@ -1734,7 +1468,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1734
1468
|
ModalModule,
|
|
1735
1469
|
TooltipModule,
|
|
1736
1470
|
], template: "<!--\n ~ Copyright 2015-2025 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@if (intermediateSaveEnabled && (formFlowInstanceId$ | async) === undefined) {\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"save\"\n [vTooltip]=\"'formManagement.intermediateSave.save' | translate\"\n (click)=\"saveCurrentProgress()\"\n ></button>\n\n <button\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"recently-viewed\"\n [disabled]=\"!currentIntermediateSave\"\n [vTooltip]=\"'formManagement.intermediateSave.clear' | translate\"\n (click)=\"revertSaveClick()\"\n ></button>\n}\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n", styles: [":host{flex-shrink:0}\n/*!\n * Copyright 2015-2025 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"] }]
|
|
1737
|
-
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i1$1.GlobalNotificationService }, { type:
|
|
1471
|
+
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i1$1.GlobalNotificationService }, { type: i2$1.IconService }, { type: TaskIntermediateSaveService }, { type: TaskService }, { type: i4$1.TranslateService }], propDecorators: { task: [{
|
|
1738
1472
|
type: Input
|
|
1739
1473
|
}], taskAndProcessLink: [{
|
|
1740
1474
|
type: Input
|
|
@@ -1898,10 +1632,10 @@ class SetTaskDueDateComponent {
|
|
|
1898
1632
|
type: 'info',
|
|
1899
1633
|
});
|
|
1900
1634
|
}
|
|
1901
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1902
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1635
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SetTaskDueDateComponent, deps: [{ token: i9.CdsThemeService }, { token: i2$1.IconService }, { token: TaskService }, { token: i4$1.TranslateService }, { token: i1$1.GlobalNotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1636
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: SetTaskDueDateComponent, isStandalone: true, selector: "valtimo-set-task-due-date", inputs: { canModifyTask: "canModifyTask", task: "task" }, outputs: { dueDateChanged: "dueDateChanged" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 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<ng-container\n *ngIf=\"\n (canModifyTaskSet$ | async) && {\n hasDueDate: hasDueDate$ | async,\n taskDueDate: taskDueDate$ | async,\n selectedDateString: selectedDateString$ | async,\n disabled: disabled$ | async,\n mouseIsOverDueDate: mouseIsOverDueDate$ | async,\n canModifyTask: canModifyTask$ | async,\n language: language$ | async,\n showDatePicker: showDatePicker$ | async,\n editToggletipOpen: editToggletipOpen$ | async,\n } as obs\n \"\n>\n <div\n *ngIf=\"obs.canModifyTask || (!obs.canModifyTask && obs.hasDueDate)\"\n class=\"due-date-container\"\n (mouseenter)=\"onMouseEnterDueDate()\"\n (mouseleave)=\"onMouseLeaveDueDate()\"\n >\n <div\n class=\"due-date-text element\"\n [ngClass]=\"{\n active: obs.canModifyTask\n ? obs.hasDueDate && !obs.mouseIsOverDueDate && !obs.editToggletipOpen\n : obs.hasDueDate,\n }\"\n >\n <span class=\"bold\">{{ 'setTaskDueDate.dueDateText' | translate }}</span>\n \n {{ obs.taskDueDate | date: 'dd-MM-yyyy' }}\n </div>\n\n <cds-toggletip\n *ngIf=\"obs.canModifyTask\"\n align=\"bottom\"\n class=\"element\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: obs.hasDueDate && (obs.mouseIsOverDueDate || obs.editToggletipOpen)}\"\n (onOpen)=\"initEditWithCurrentDate()\"\n (onClose)=\"onCloseEditToggletip()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n size=\"sm\"\n class=\"click-to-edit-button\"\n >\n {{ 'setTaskDueDate.clickToEdit' | translate }}\n </button>\n\n <div cdsToggletipContent class=\"assign-due-date-popover-content\">\n <cds-date-picker\n *ngIf=\"obs.showDatePicker\"\n [attr.data-carbon-theme]=\"toggletipDropdownTheme$ | async\"\n [cdsLayer]=\"1\"\n [label]=\"'setTaskDueDate.label' | translate\"\n [language]=\"obs.language\"\n [placeholder]=\"'dd-mm-jjjj'\"\n dateFormat=\"d/m/Y\"\n [value]=\"obs.taskDueDate ? [obs.taskDueDate] : []\"\n [disabled]=\"obs.disabled\"\n (valueChange)=\"onDateValueChange($event)\"\n ></cds-date-picker>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"submit-due-date-button\"\n [disabled]=\"!obs.selectedDateString || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'setTaskDueDate.submitButtonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"calendar--add\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"danger--tertiary\"\n [cdsLayer]=\"1\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [disabled]=\"obs.disabled\"\n (click)=\"onRemoveButtonClick()\"\n >\n {{ 'setTaskDueDate.removeButtonText' | translate }}\n </button>\n </div>\n </cds-toggletip>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !obs.hasDueDate}\"\n (onOpen)=\"clear()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n class=\"set-task-due-date-button\"\n >\n {{ 'setTaskDueDate.buttonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"calendar--add\" size=\"16\"></svg>\n </button>\n\n <div cdsToggletipContent class=\"assign-due-date-popover-content\">\n <cds-date-picker\n *ngIf=\"!obs.hasDueDate && obs.showDatePicker\"\n [attr.data-carbon-theme]=\"toggletipDropdownTheme$ | async\"\n [cdsLayer]=\"1\"\n [label]=\"'setTaskDueDate.label' | translate\"\n [language]=\"obs.language\"\n [placeholder]=\"'dd-mm-jjjj'\"\n dateFormat=\"d/m/Y\"\n [disabled]=\"obs.disabled\"\n (valueChange)=\"onDateValueChange($event)\"\n ></cds-date-picker>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"submit-due-date-button\"\n [disabled]=\"!obs.selectedDateString || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'setTaskDueDate.submitButtonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"calendar--add\" size=\"16\"></svg>\n </button>\n </div>\n </cds-toggletip>\n </div>\n</ng-container>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.due-date-container{display:flex;align-items:center;justify-content:center;position:relative;font-weight:400;font-size:14px;line-height:18px;letter-spacing:.16px;color:var(--cds-link-01)}.due-date-container .bold{font-weight:700}.due-date-text{display:flex;justify-content:flex-start;align-items:center;width:100%}.element{opacity:0;visibility:hidden;position:absolute;width:100%;transition:opacity .3s ease-in-out}.element.active{opacity:1;visibility:visible}.element.main{position:relative;width:auto}.assign-due-date-popover-content{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.assign-due-date-popover-content .cds--btn{width:100%;max-width:unset}.assign-due-date-popover-content ::ng-deep .cds--date-picker-input__wrapper,.assign-due-date-popover-content ::ng-deep .cds--date-picker-input__wrapper>span,.assign-due-date-popover-content ::ng-deep .cds--date-picker-container,.assign-due-date-popover-content ::ng-deep .cds--date-picker,.assign-due-date-popover-content ::ng-deep .cds--date-picker__input{width:100%}.set-task-due-date-button{width:250px}.click-to-edit-button{width:100%}\n/*!\n * Copyright 2015-2026 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: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ToggletipModule }, { kind: "component", type: i2$1.Toggletip, selector: "cds-toggletip, ibm-toggletip", inputs: ["id", "isOpen"] }, { kind: "directive", type: i2$1.ToggletipButton, selector: "[cdsToggletipButton], [ibmToggletipButton]", inputs: ["ariaLabel"] }, { kind: "directive", type: i2$1.ToggletipContent, selector: "[cdsToggletipContent], [ibmToggletipContent]" }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i2$1.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "readonly", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: RemoveClassnamesDirective, selector: "[removeClassnames]", inputs: ["removeClassnames"] }] }); }
|
|
1903
1637
|
}
|
|
1904
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SetTaskDueDateComponent, decorators: [{
|
|
1905
1639
|
type: Component,
|
|
1906
1640
|
args: [{ selector: 'valtimo-set-task-due-date', standalone: true, imports: [
|
|
1907
1641
|
CommonModule,
|
|
@@ -1913,7 +1647,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1913
1647
|
LayerModule,
|
|
1914
1648
|
RemoveClassnamesDirective,
|
|
1915
1649
|
], template: "<!--\n ~ Copyright 2015-2026 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<ng-container\n *ngIf=\"\n (canModifyTaskSet$ | async) && {\n hasDueDate: hasDueDate$ | async,\n taskDueDate: taskDueDate$ | async,\n selectedDateString: selectedDateString$ | async,\n disabled: disabled$ | async,\n mouseIsOverDueDate: mouseIsOverDueDate$ | async,\n canModifyTask: canModifyTask$ | async,\n language: language$ | async,\n showDatePicker: showDatePicker$ | async,\n editToggletipOpen: editToggletipOpen$ | async,\n } as obs\n \"\n>\n <div\n *ngIf=\"obs.canModifyTask || (!obs.canModifyTask && obs.hasDueDate)\"\n class=\"due-date-container\"\n (mouseenter)=\"onMouseEnterDueDate()\"\n (mouseleave)=\"onMouseLeaveDueDate()\"\n >\n <div\n class=\"due-date-text element\"\n [ngClass]=\"{\n active: obs.canModifyTask\n ? obs.hasDueDate && !obs.mouseIsOverDueDate && !obs.editToggletipOpen\n : obs.hasDueDate,\n }\"\n >\n <span class=\"bold\">{{ 'setTaskDueDate.dueDateText' | translate }}</span>\n \n {{ obs.taskDueDate | date: 'dd-MM-yyyy' }}\n </div>\n\n <cds-toggletip\n *ngIf=\"obs.canModifyTask\"\n align=\"bottom\"\n class=\"element\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: obs.hasDueDate && (obs.mouseIsOverDueDate || obs.editToggletipOpen)}\"\n (onOpen)=\"initEditWithCurrentDate()\"\n (onClose)=\"onCloseEditToggletip()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n size=\"sm\"\n class=\"click-to-edit-button\"\n >\n {{ 'setTaskDueDate.clickToEdit' | translate }}\n </button>\n\n <div cdsToggletipContent class=\"assign-due-date-popover-content\">\n <cds-date-picker\n *ngIf=\"obs.showDatePicker\"\n [attr.data-carbon-theme]=\"toggletipDropdownTheme$ | async\"\n [cdsLayer]=\"1\"\n [label]=\"'setTaskDueDate.label' | translate\"\n [language]=\"obs.language\"\n [placeholder]=\"'dd-mm-jjjj'\"\n dateFormat=\"d/m/Y\"\n [value]=\"obs.taskDueDate ? [obs.taskDueDate] : []\"\n [disabled]=\"obs.disabled\"\n (valueChange)=\"onDateValueChange($event)\"\n ></cds-date-picker>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"submit-due-date-button\"\n [disabled]=\"!obs.selectedDateString || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'setTaskDueDate.submitButtonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"calendar--add\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"danger--tertiary\"\n [cdsLayer]=\"1\"\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [disabled]=\"obs.disabled\"\n (click)=\"onRemoveButtonClick()\"\n >\n {{ 'setTaskDueDate.removeButtonText' | translate }}\n </button>\n </div>\n </cds-toggletip>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !obs.hasDueDate}\"\n (onOpen)=\"clear()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n class=\"set-task-due-date-button\"\n >\n {{ 'setTaskDueDate.buttonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"calendar--add\" size=\"16\"></svg>\n </button>\n\n <div cdsToggletipContent class=\"assign-due-date-popover-content\">\n <cds-date-picker\n *ngIf=\"!obs.hasDueDate && obs.showDatePicker\"\n [attr.data-carbon-theme]=\"toggletipDropdownTheme$ | async\"\n [cdsLayer]=\"1\"\n [label]=\"'setTaskDueDate.label' | translate\"\n [language]=\"obs.language\"\n [placeholder]=\"'dd-mm-jjjj'\"\n dateFormat=\"d/m/Y\"\n [disabled]=\"obs.disabled\"\n (valueChange)=\"onDateValueChange($event)\"\n ></cds-date-picker>\n\n <button\n cdsButton\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"submit-due-date-button\"\n [disabled]=\"!obs.selectedDateString || obs.disabled\"\n (click)=\"onSubmitButtonClick()\"\n >\n {{ 'setTaskDueDate.submitButtonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"calendar--add\" size=\"16\"></svg>\n </button>\n </div>\n </cds-toggletip>\n </div>\n</ng-container>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.due-date-container{display:flex;align-items:center;justify-content:center;position:relative;font-weight:400;font-size:14px;line-height:18px;letter-spacing:.16px;color:var(--cds-link-01)}.due-date-container .bold{font-weight:700}.due-date-text{display:flex;justify-content:flex-start;align-items:center;width:100%}.element{opacity:0;visibility:hidden;position:absolute;width:100%;transition:opacity .3s ease-in-out}.element.active{opacity:1;visibility:visible}.element.main{position:relative;width:auto}.assign-due-date-popover-content{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.assign-due-date-popover-content .cds--btn{width:100%;max-width:unset}.assign-due-date-popover-content ::ng-deep .cds--date-picker-input__wrapper,.assign-due-date-popover-content ::ng-deep .cds--date-picker-input__wrapper>span,.assign-due-date-popover-content ::ng-deep .cds--date-picker-container,.assign-due-date-popover-content ::ng-deep .cds--date-picker,.assign-due-date-popover-content ::ng-deep .cds--date-picker__input{width:100%}.set-task-due-date-button{width:250px}.click-to-edit-button{width:100%}\n/*!\n * Copyright 2015-2026 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"] }]
|
|
1916
|
-
}], ctorParameters: () => [{ type: i9.CdsThemeService }, { type:
|
|
1650
|
+
}], ctorParameters: () => [{ type: i9.CdsThemeService }, { type: i2$1.IconService }, { type: TaskService }, { type: i4$1.TranslateService }, { type: i1$1.GlobalNotificationService }], propDecorators: { dueDateChanged: [{
|
|
1917
1651
|
type: Output
|
|
1918
1652
|
}], canModifyTask: [{
|
|
1919
1653
|
type: Input
|
|
@@ -1977,6 +1711,14 @@ class TaskDetailModalComponent {
|
|
|
1977
1711
|
this.canModifyTask$ = new BehaviorSubject(false);
|
|
1978
1712
|
this.modalCloseEvent$ = new BehaviorSubject(false);
|
|
1979
1713
|
this.modalOpen$ = new BehaviorSubject(false);
|
|
1714
|
+
this.candidateUsers$ = combineLatest([
|
|
1715
|
+
this.task$.pipe(filter$1(task => !!task)),
|
|
1716
|
+
this.canAssignUserToTask$,
|
|
1717
|
+
]).pipe(switchMap$1(([task, canAssign]) => canAssign ? this.taskService.getCandidateUsers(task.id) : of([])), shareReplay(1));
|
|
1718
|
+
this.candidateTeams$ = combineLatest([
|
|
1719
|
+
this.task$.pipe(filter$1(task => !!task)),
|
|
1720
|
+
this.canAssignUserToTask$,
|
|
1721
|
+
]).pipe(switchMap$1(([task, canAssign]) => canAssign ? this.taskService.getCandidateTeams(task.id).pipe(map(page => page.content)) : of([])), shareReplay(1));
|
|
1980
1722
|
this._subscriptions = new Subscription();
|
|
1981
1723
|
this.iconService.registerAll([FolderDetailsReference16]);
|
|
1982
1724
|
}
|
|
@@ -2060,6 +1802,19 @@ class TaskDetailModalComponent {
|
|
|
2060
1802
|
}
|
|
2061
1803
|
}));
|
|
2062
1804
|
}
|
|
1805
|
+
refreshTask(response) {
|
|
1806
|
+
const currentTask = this.task$.getValue();
|
|
1807
|
+
const fetchedTask = response.task;
|
|
1808
|
+
if (!currentTask || !fetchedTask)
|
|
1809
|
+
return;
|
|
1810
|
+
const mergedTask = { ...currentTask };
|
|
1811
|
+
for (const [key, value] of Object.entries(fetchedTask)) {
|
|
1812
|
+
if (value !== undefined) {
|
|
1813
|
+
mergedTask[key] = value;
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
this.task$.next(mergedTask);
|
|
1817
|
+
}
|
|
2063
1818
|
showAssigneeNotification(task) {
|
|
2064
1819
|
if (task.assignee) {
|
|
2065
1820
|
this.globalNotificationService.showToast({
|
|
@@ -2110,6 +1865,35 @@ class TaskDetailModalComponent {
|
|
|
2110
1865
|
onTaskUpdated(task) {
|
|
2111
1866
|
this.task$.next(task);
|
|
2112
1867
|
}
|
|
1868
|
+
onAssignmentChanged(event) {
|
|
1869
|
+
const task = this.task$.getValue();
|
|
1870
|
+
if (!task)
|
|
1871
|
+
return;
|
|
1872
|
+
const assignRequest = {};
|
|
1873
|
+
if (event.userId !== undefined)
|
|
1874
|
+
assignRequest.assignee = event.userId ?? '';
|
|
1875
|
+
if (event.teamKey !== undefined)
|
|
1876
|
+
assignRequest.assignedTeamKey = event.teamKey ?? '';
|
|
1877
|
+
this.taskService
|
|
1878
|
+
.assignTask(task.id, assignRequest)
|
|
1879
|
+
.pipe(switchMap$1(() => this.taskService.getTask(task.id)), take(1))
|
|
1880
|
+
.subscribe(response => {
|
|
1881
|
+
this.refreshTask(response);
|
|
1882
|
+
this.assignmentOfTaskChanged.emit();
|
|
1883
|
+
});
|
|
1884
|
+
}
|
|
1885
|
+
onUnassigned() {
|
|
1886
|
+
const task = this.task$.getValue();
|
|
1887
|
+
if (!task)
|
|
1888
|
+
return;
|
|
1889
|
+
this.taskService
|
|
1890
|
+
.unassignTask(task.id)
|
|
1891
|
+
.pipe(switchMap$1(() => this.taskService.getTask(task.id)), take(1))
|
|
1892
|
+
.subscribe(response => {
|
|
1893
|
+
this.refreshTask(response);
|
|
1894
|
+
this.assignmentOfTaskChanged.emit();
|
|
1895
|
+
});
|
|
1896
|
+
}
|
|
2113
1897
|
onFormSubmit() {
|
|
2114
1898
|
this.formSubmit.emit();
|
|
2115
1899
|
}
|
|
@@ -2135,13 +1919,13 @@ class TaskDetailModalComponent {
|
|
|
2135
1919
|
this.cdr.detectChanges();
|
|
2136
1920
|
});
|
|
2137
1921
|
}
|
|
2138
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
1922
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskDetailModalComponent, deps: [{ token: i1$2.Router }, { token: i4$1.TranslateService }, { token: i3.PermissionService }, { token: i4.NGXLogger }, { token: TaskIntermediateSaveService }, { token: i6$1.SseService }, { token: i0.ChangeDetectorRef }, { token: i2$1.IconService }, { token: i2.DocumentService }, { token: TaskService }, { token: i1$1.GlobalNotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1923
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TaskDetailModalComponent, isStandalone: false, selector: "valtimo-task-detail-modal", inputs: { modalSize: "modalSize", openFromCaseManagement: "openFromCaseManagement" }, outputs: { formSubmit: "formSubmit", assignmentOfTaskChanged: "assignmentOfTaskChanged", dueDateChanged: "dueDateChanged", modalClosed: "modalClosed" }, viewQueries: [{ propertyName: "_intermediateSaveComponent", first: true, predicate: TaskDetailIntermediateSaveComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 id=\"taskDetailModal\"\n [size]=\"size$ | async\"\n [open]=\"modalOpen$ | async\"\n (close)=\"closeModal()\"\n valtimoCdsModal\n [minContentHeight]=\"480\"\n>\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <div class=\"title-container\">\n <p class=\"cds--modal-header__heading cds--type-beta\">{{ (page$ | async)?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ (page$ | async)?.subtitle }}</p>\n\n <p\n class=\"cds--modal-header__label cds--type-delta\"\n *ngIf=\"currentIntermediateSave$ | async as currentIntermediateSave\"\n >\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n currentIntermediateSave?.editedBy\n ? currentIntermediateSave?.editedBy\n : currentIntermediateSave.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n currentIntermediateSave?.editedOn\n ? currentIntermediateSave?.editedOn\n : currentIntermediateSave.createdOn\n }}\n </p>\n\n <ng-container *ngTemplateOutlet=\"assignUserToTask\"></ng-container>\n </div>\n\n <div class=\"save-buttons-margin\">\n <button\n *ngIf=\"!(openFromCaseManagement$ | async)\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"folder--details--reference\"\n [vTooltip]=\"'formManagement.navigateToRelatedCase' | translate\"\n (click)=\"openRelatedCase()\"\n ></button>\n\n @if (processLinkPreloaded$ | async) {\n <valtimo-task-detail-intermediate-save\n [taskAndProcessLink]=\"taskAndProcessLink$ | async\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n (showModalEvent)=\"onShowModalEvent()\"\n ></valtimo-task-detail-intermediate-save>\n } @else {\n <valtimo-task-detail-intermediate-save\n [task]=\"task$ | async\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n (showModalEvent)=\"onShowModalEvent()\"\n ></valtimo-task-detail-intermediate-save>\n }\n </div>\n </cds-modal-header>\n\n <div body class=\"cds--modal-content pb-1\">\n @if (processLinkPreloaded$ | async) {\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"taskAndProcessLink$ | async\"\n [modalClosed]=\"modalCloseEvent$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (closeModalEvent)=\"closeModal()\"\n (taskUpdated)=\"onTaskUpdated($event)\"\n ></valtimo-task-detail-content>\n } @else {\n <valtimo-task-detail-content\n [task]=\"task$ | async\"\n [modalClosed]=\"modalCloseEvent$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (closeModalEvent)=\"closeModal()\"\n (taskUpdated)=\"onTaskUpdated($event)\"\n ></valtimo-task-detail-content>\n }\n </div>\n</cds-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n\n<ng-template #assignUserToTask>\n <div\n *ngIf=\"{\n task: task$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"task-actions\"\n >\n <valtimo-assignment\n *ngIf=\"obs.task && assignmentOfTaskChanged\"\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"dueDateChanged.emit()\"\n ></valtimo-set-task-due-date>\n </div>\n</ng-template>\n", styles: ["#taskDetailModal .formio-component-submit{text-align:right}#taskDetailModal .cds--modal:not(.is-visible){pointer-events:none}cds-modal-header .cds--modal-header{display:flex;justify-content:space-between}.save-buttons-margin{margin-top:-15px}.task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2025 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: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "component", type: i9.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"] }, { kind: "component", type: i9.AssignmentComponent, selector: "valtimo-assignment", inputs: ["mode", "hasPermission", "assigneeId", "assigneeFullName", "assignedTeamKey", "assignedTeamTitle", "candidateUsers$", "candidateTeams$"], outputs: ["assignmentChangedEvent", "unassignedEvent"] }, { kind: "component", type: TaskDetailContentComponent, selector: "valtimo-task-detail-content", inputs: ["task", "taskAndProcessLink", "modalClosed"], outputs: ["closeModalEvent", "formSubmit", "activeChange", "taskUpdated"] }, { kind: "component", type: TaskDetailIntermediateSaveComponent, selector: "valtimo-task-detail-intermediate-save", inputs: ["task", "taskAndProcessLink"], outputs: ["currentIntermediateSaveEvent", "showModalEvent"] }, { kind: "component", type: SetTaskDueDateComponent, selector: "valtimo-set-task-due-date", inputs: ["canModifyTask", "task"], outputs: ["dueDateChanged"] }, { kind: "directive", type: i9.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2140
1924
|
}
|
|
2141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1925
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskDetailModalComponent, decorators: [{
|
|
2142
1926
|
type: Component,
|
|
2143
|
-
args: [{ standalone: false, selector: 'valtimo-task-detail-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2025 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 id=\"taskDetailModal\"\n [size]=\"size$ | async\"\n [open]=\"modalOpen$ | async\"\n (close)=\"closeModal()\"\n valtimoCdsModal\n [minContentHeight]=\"480\"\n>\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <div class=\"title-container\">\n <p class=\"cds--modal-header__heading cds--type-beta\">{{ (page$ | async)?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ (page$ | async)?.subtitle }}</p>\n\n <p\n class=\"cds--modal-header__label cds--type-delta\"\n *ngIf=\"currentIntermediateSave$ | async as currentIntermediateSave\"\n >\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n currentIntermediateSave?.editedBy\n ? currentIntermediateSave?.editedBy\n : currentIntermediateSave.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n currentIntermediateSave?.editedOn\n ? currentIntermediateSave?.editedOn\n : currentIntermediateSave.createdOn\n }}\n </p>\n\n <ng-container *ngTemplateOutlet=\"assignUserToTask\"></ng-container>\n </div>\n\n <div class=\"save-buttons-margin\">\n <button\n *ngIf=\"!(openFromCaseManagement$ | async)\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"folder--details--reference\"\n [vTooltip]=\"'formManagement.navigateToRelatedCase' | translate\"\n (click)=\"openRelatedCase()\"\n ></button>\n\n @if (processLinkPreloaded$ | async) {\n <valtimo-task-detail-intermediate-save\n [taskAndProcessLink]=\"taskAndProcessLink$ | async\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n (showModalEvent)=\"onShowModalEvent()\"\n ></valtimo-task-detail-intermediate-save>\n } @else {\n <valtimo-task-detail-intermediate-save\n [task]=\"task$ | async\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n (showModalEvent)=\"onShowModalEvent()\"\n ></valtimo-task-detail-intermediate-save>\n }\n </div>\n </cds-modal-header>\n\n <div body class=\"cds--modal-content pb-1\">\n @if (processLinkPreloaded$ | async) {\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"taskAndProcessLink$ | async\"\n [modalClosed]=\"modalCloseEvent$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (closeModalEvent)=\"closeModal()\"\n (taskUpdated)=\"onTaskUpdated($event)\"\n ></valtimo-task-detail-content>\n } @else {\n <valtimo-task-detail-content\n [task]=\"task$ | async\"\n [modalClosed]=\"modalCloseEvent$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (closeModalEvent)=\"closeModal()\"\n (taskUpdated)=\"onTaskUpdated($event)\"\n ></valtimo-task-detail-content>\n }\n </div>\n</cds-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n\n<ng-template #assignUserToTask>\n <div\n *ngIf=\"{\n task: task$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"task-actions\"\n >\n <valtimo-
|
|
2144
|
-
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i4$1.TranslateService }, { type: i3
|
|
1927
|
+
args: [{ standalone: false, selector: 'valtimo-task-detail-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2025 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 id=\"taskDetailModal\"\n [size]=\"size$ | async\"\n [open]=\"modalOpen$ | async\"\n (close)=\"closeModal()\"\n valtimoCdsModal\n [minContentHeight]=\"480\"\n>\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <div class=\"title-container\">\n <p class=\"cds--modal-header__heading cds--type-beta\">{{ (page$ | async)?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ (page$ | async)?.subtitle }}</p>\n\n <p\n class=\"cds--modal-header__label cds--type-delta\"\n *ngIf=\"currentIntermediateSave$ | async as currentIntermediateSave\"\n >\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n currentIntermediateSave?.editedBy\n ? currentIntermediateSave?.editedBy\n : currentIntermediateSave.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n currentIntermediateSave?.editedOn\n ? currentIntermediateSave?.editedOn\n : currentIntermediateSave.createdOn\n }}\n </p>\n\n <ng-container *ngTemplateOutlet=\"assignUserToTask\"></ng-container>\n </div>\n\n <div class=\"save-buttons-margin\">\n <button\n *ngIf=\"!(openFromCaseManagement$ | async)\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n cdsIcon=\"folder--details--reference\"\n [vTooltip]=\"'formManagement.navigateToRelatedCase' | translate\"\n (click)=\"openRelatedCase()\"\n ></button>\n\n @if (processLinkPreloaded$ | async) {\n <valtimo-task-detail-intermediate-save\n [taskAndProcessLink]=\"taskAndProcessLink$ | async\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n (showModalEvent)=\"onShowModalEvent()\"\n ></valtimo-task-detail-intermediate-save>\n } @else {\n <valtimo-task-detail-intermediate-save\n [task]=\"task$ | async\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n (showModalEvent)=\"onShowModalEvent()\"\n ></valtimo-task-detail-intermediate-save>\n }\n </div>\n </cds-modal-header>\n\n <div body class=\"cds--modal-content pb-1\">\n @if (processLinkPreloaded$ | async) {\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"taskAndProcessLink$ | async\"\n [modalClosed]=\"modalCloseEvent$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (closeModalEvent)=\"closeModal()\"\n (taskUpdated)=\"onTaskUpdated($event)\"\n ></valtimo-task-detail-content>\n } @else {\n <valtimo-task-detail-content\n [task]=\"task$ | async\"\n [modalClosed]=\"modalCloseEvent$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (closeModalEvent)=\"closeModal()\"\n (taskUpdated)=\"onTaskUpdated($event)\"\n ></valtimo-task-detail-content>\n }\n </div>\n</cds-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showConfirmationModal$\"\n (confirmEvent)=\"clearCurrentProgress()\"\n (cancelEvent)=\"showConfirmationModal$.next(false)\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.confirm\"\n titleTranslationKey=\"formManagement.intermediateSave.clear\"\n contentTranslationKey=\"formManagement.intermediateSave.clearConfirm\"\n></valtimo-confirmation-modal>\n\n<ng-template #assignUserToTask>\n <div\n *ngIf=\"{\n task: task$ | async,\n canAssignUserToTask: canAssignUserToTask$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"task-actions\"\n >\n <valtimo-assignment\n *ngIf=\"obs.task && assignmentOfTaskChanged\"\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"dueDateChanged.emit()\"\n ></valtimo-set-task-due-date>\n </div>\n</ng-template>\n", styles: ["#taskDetailModal .formio-component-submit{text-align:right}#taskDetailModal .cds--modal:not(.is-visible){pointer-events:none}cds-modal-header .cds--modal-header{display:flex;justify-content:space-between}.save-buttons-margin{margin-top:-15px}.task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2025 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"] }]
|
|
1928
|
+
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i4$1.TranslateService }, { type: i3.PermissionService }, { type: i4.NGXLogger }, { type: TaskIntermediateSaveService }, { type: i6$1.SseService }, { type: i0.ChangeDetectorRef }, { type: i2$1.IconService }, { type: i2.DocumentService }, { type: TaskService }, { type: i1$1.GlobalNotificationService }], propDecorators: { _intermediateSaveComponent: [{
|
|
2145
1929
|
type: ViewChild,
|
|
2146
1930
|
args: [TaskDetailIntermediateSaveComponent]
|
|
2147
1931
|
}], formSubmit: [{
|
|
@@ -2217,7 +2001,7 @@ class TaskListComponent {
|
|
|
2217
2001
|
this.setParamsFromQueryParams();
|
|
2218
2002
|
});
|
|
2219
2003
|
}
|
|
2220
|
-
constructor(configService, documentService, permissionService, router, taskService, taskListService, translateService, taskListColumnService, taskListPaginationService, taskListSortService, taskListSearchService, taskListQueryParamService, pageTitleService, sseService) {
|
|
2004
|
+
constructor(configService, documentService, permissionService, router, taskService, taskListService, translateService, taskListColumnService, taskListPaginationService, taskListSortService, taskListSearchService, taskListQueryParamService, pageTitleService, sseService, teamsApiService) {
|
|
2221
2005
|
this.configService = configService;
|
|
2222
2006
|
this.documentService = documentService;
|
|
2223
2007
|
this.permissionService = permissionService;
|
|
@@ -2232,6 +2016,7 @@ class TaskListComponent {
|
|
|
2232
2016
|
this.taskListQueryParamService = taskListQueryParamService;
|
|
2233
2017
|
this.pageTitleService = pageTitleService;
|
|
2234
2018
|
this.sseService = sseService;
|
|
2019
|
+
this.teamsApiService = teamsApiService;
|
|
2235
2020
|
this.ALL_CASES_ID = this.taskListService.ALL_CASES_ID;
|
|
2236
2021
|
this.selectedTaskType$ = this.taskListService.selectedTaskType$;
|
|
2237
2022
|
this._overrideNoResultsMessage$ = new BehaviorSubject(null);
|
|
@@ -2313,6 +2098,7 @@ class TaskListComponent {
|
|
|
2313
2098
|
this.searchFields$ = this.taskListSearchService.searchFields$;
|
|
2314
2099
|
this._DEFAULT_TASK_LIST_TABS = [
|
|
2315
2100
|
TaskListTab.MINE,
|
|
2101
|
+
TaskListTab.TEAM,
|
|
2316
2102
|
TaskListTab.OPEN,
|
|
2317
2103
|
TaskListTab.ALL,
|
|
2318
2104
|
];
|
|
@@ -2413,15 +2199,14 @@ class TaskListComponent {
|
|
|
2413
2199
|
});
|
|
2414
2200
|
}
|
|
2415
2201
|
setVisibleTabs() {
|
|
2416
|
-
const
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
this.
|
|
2423
|
-
|
|
2424
|
-
}
|
|
2202
|
+
const configuredTabs = this.configService.config?.visibleTaskListTabs || this._DEFAULT_TASK_LIST_TABS;
|
|
2203
|
+
this.teamsApiService.getCurrentUserTeams().subscribe(teams => {
|
|
2204
|
+
const tabs = teams.length > 0
|
|
2205
|
+
? configuredTabs
|
|
2206
|
+
: configuredTabs.filter(tab => tab !== TaskListTab.TEAM);
|
|
2207
|
+
this.visibleTabs$.next(tabs);
|
|
2208
|
+
this.taskListService.setSelectedTaskType(tabs[0]);
|
|
2209
|
+
});
|
|
2425
2210
|
}
|
|
2426
2211
|
disableLoadingAnimation() {
|
|
2427
2212
|
this._enableLoadingAnimation$.next(false);
|
|
@@ -2526,17 +2311,17 @@ class TaskListComponent {
|
|
|
2526
2311
|
if (decodedParams.params)
|
|
2527
2312
|
this.taskListPaginationService.updateTaskPagination(this.taskListService.selectedTaskType, decodedParams.params);
|
|
2528
2313
|
}
|
|
2529
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2530
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2314
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListComponent, deps: [{ token: i1$1.ConfigService }, { token: i2.DocumentService }, { token: i3.PermissionService }, { token: i1$2.Router }, { token: TaskService }, { token: TaskListService }, { token: i4$1.TranslateService }, { token: TaskListColumnService }, { token: TaskListPaginationService }, { token: TaskListSortService }, { token: TaskListSearchService }, { token: TaskListQueryParamService }, { token: i9.PageTitleService }, { token: i6$1.SseService }, { token: i11.TeamsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2315
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TaskListComponent, isStandalone: false, selector: "valtimo-task-list", host: { listeners: { "window:popstate": "onPopState($event)" } }, providers: [
|
|
2531
2316
|
TaskListService,
|
|
2532
2317
|
TaskListColumnService,
|
|
2533
2318
|
TaskListPaginationService,
|
|
2534
2319
|
TaskListSortService,
|
|
2535
2320
|
TaskListSearchService,
|
|
2536
2321
|
TaskListQueryParamService,
|
|
2537
|
-
], viewQueries: [{ propertyName: "_taskDetail", first: true, predicate: ["taskDetail"], descendants: true }, { propertyName: "_unreadIndicator", first: true, predicate: ["unreadIndicator"], descendants: true, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n noResultsMessage: noResultsMessage$ | async,\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionKey && obs.caseDefinitionKey !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n (dueDateChanged)=\"reload()\"\n (modalClosed)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #unreadIndicator let-data=\"data\">\n <span *ngIf=\"!data.item?.isOpened\" class=\"valtimo-task-list__unread-dot\"></span>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}.valtimo-task-list__unread-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background-color:var(--cds-link-primary)}::ng-deep .valtimo-task-list__unread-column{width:2rem;padding-right:0!important}\n/*!\n * Copyright 2015-2025 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: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i9.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i12.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "component", type: i3.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i3.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "directive", type: i9.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i14.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i14.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i9.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "component", type: TaskDetailModalComponent, selector: "valtimo-task-detail-modal", inputs: ["modalSize", "openFromCaseManagement"], outputs: ["formSubmit", "assignmentOfTaskChanged", "dueDateChanged", "modalClosed"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2322
|
+
], viewQueries: [{ propertyName: "_taskDetail", first: true, predicate: ["taskDetail"], descendants: true }, { propertyName: "_unreadIndicator", first: true, predicate: ["unreadIndicator"], descendants: true, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n noResultsMessage: noResultsMessage$ | async,\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionKey && obs.caseDefinitionKey !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n (dueDateChanged)=\"reload()\"\n (modalClosed)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #unreadIndicator let-data=\"data\">\n <span *ngIf=\"!data.item?.isOpened\" class=\"valtimo-task-list__unread-dot\"></span>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}.valtimo-task-list__unread-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background-color:var(--cds-link-primary)}::ng-deep .valtimo-task-list__unread-column{width:2rem;padding-right:0!important}\n/*!\n * Copyright 2015-2025 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: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i9.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i13.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2$1.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "component", type: i2$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i2$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "directive", type: i9.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2$1.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i9.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "component", type: TaskDetailModalComponent, selector: "valtimo-task-detail-modal", inputs: ["modalSize", "openFromCaseManagement"], outputs: ["formSubmit", "assignmentOfTaskChanged", "dueDateChanged", "modalClosed"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2538
2323
|
}
|
|
2539
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskListComponent, decorators: [{
|
|
2540
2325
|
type: Component,
|
|
2541
2326
|
args: [{ standalone: false, selector: 'valtimo-task-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
2542
2327
|
TaskListService,
|
|
@@ -2546,7 +2331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2546
2331
|
TaskListSearchService,
|
|
2547
2332
|
TaskListQueryParamService,
|
|
2548
2333
|
], template: "<!--\n ~ Copyright 2015-2025 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 loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n noResultsMessage: noResultsMessage$ | async,\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionKey && obs.caseDefinitionKey !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n (dueDateChanged)=\"reload()\"\n (modalClosed)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #unreadIndicator let-data=\"data\">\n <span *ngIf=\"!data.item?.isOpened\" class=\"valtimo-task-list__unread-dot\"></span>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}.valtimo-task-list__unread-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background-color:var(--cds-link-primary)}::ng-deep .valtimo-task-list__unread-column{width:2rem;padding-right:0!important}\n/*!\n * Copyright 2015-2025 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"] }]
|
|
2549
|
-
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i2.DocumentService }, { type: i3
|
|
2334
|
+
}], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i2.DocumentService }, { type: i3.PermissionService }, { type: i1$2.Router }, { type: TaskService }, { type: TaskListService }, { type: i4$1.TranslateService }, { type: TaskListColumnService }, { type: TaskListPaginationService }, { type: TaskListSortService }, { type: TaskListSearchService }, { type: TaskListQueryParamService }, { type: i9.PageTitleService }, { type: i6$1.SseService }, { type: i11.TeamsApiService }], propDecorators: { _taskDetail: [{
|
|
2550
2335
|
type: ViewChild,
|
|
2551
2336
|
args: ['taskDetail']
|
|
2552
2337
|
}], _unreadIndicator: [{
|
|
@@ -2724,11 +2509,11 @@ const routes = [
|
|
|
2724
2509
|
},
|
|
2725
2510
|
];
|
|
2726
2511
|
class TaskRoutingModule {
|
|
2727
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2728
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
2729
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
2512
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2513
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TaskRoutingModule, imports: [CommonModule, i1$2.RouterModule], exports: [RouterModule] }); }
|
|
2514
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
|
|
2730
2515
|
}
|
|
2731
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2516
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskRoutingModule, decorators: [{
|
|
2732
2517
|
type: NgModule,
|
|
2733
2518
|
args: [{
|
|
2734
2519
|
declarations: [],
|
|
@@ -2753,8 +2538,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2753
2538
|
* limitations under the License.
|
|
2754
2539
|
*/
|
|
2755
2540
|
class TaskModule {
|
|
2756
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2757
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
2541
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2542
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TaskModule, declarations: [TaskListComponent, TaskDetailModalComponent], imports: [CommonModule,
|
|
2758
2543
|
TaskRoutingModule,
|
|
2759
2544
|
CarbonListModule,
|
|
2760
2545
|
PageHeaderModule,
|
|
@@ -2777,12 +2562,12 @@ class TaskModule {
|
|
|
2777
2562
|
TooltipModule,
|
|
2778
2563
|
ConfirmationModalModule,
|
|
2779
2564
|
SearchFieldsModule,
|
|
2780
|
-
|
|
2565
|
+
AssignmentComponent,
|
|
2781
2566
|
TaskDetailContentComponent,
|
|
2782
2567
|
TaskDetailIntermediateSaveComponent,
|
|
2783
2568
|
SetTaskDueDateComponent,
|
|
2784
2569
|
ValtimoCdsModalDirective], exports: [TaskListComponent, TaskDetailModalComponent] }); }
|
|
2785
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
2570
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskModule, imports: [CommonModule,
|
|
2786
2571
|
TaskRoutingModule,
|
|
2787
2572
|
CarbonListModule,
|
|
2788
2573
|
PageHeaderModule,
|
|
@@ -2812,12 +2597,12 @@ class TaskModule {
|
|
|
2812
2597
|
TooltipModule,
|
|
2813
2598
|
ConfirmationModalModule,
|
|
2814
2599
|
SearchFieldsModule,
|
|
2815
|
-
|
|
2600
|
+
AssignmentComponent,
|
|
2816
2601
|
TaskDetailContentComponent,
|
|
2817
2602
|
TaskDetailIntermediateSaveComponent,
|
|
2818
2603
|
SetTaskDueDateComponent] }); }
|
|
2819
2604
|
}
|
|
2820
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2605
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TaskModule, decorators: [{
|
|
2821
2606
|
type: NgModule,
|
|
2822
2607
|
args: [{
|
|
2823
2608
|
declarations: [TaskListComponent, TaskDetailModalComponent],
|
|
@@ -2853,7 +2638,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2853
2638
|
TooltipModule,
|
|
2854
2639
|
ConfirmationModalModule,
|
|
2855
2640
|
SearchFieldsModule,
|
|
2856
|
-
|
|
2641
|
+
AssignmentComponent,
|
|
2857
2642
|
TaskDetailContentComponent,
|
|
2858
2643
|
TaskDetailIntermediateSaveComponent,
|
|
2859
2644
|
SetTaskDueDateComponent,
|
|
@@ -2886,5 +2671,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2886
2671
|
* Generated bundle index. Do not edit.
|
|
2887
2672
|
*/
|
|
2888
2673
|
|
|
2889
|
-
export {
|
|
2674
|
+
export { CAN_ASSIGN_TASK_PERMISSION, CAN_MODIFY_TASK_PERMISSION, CAN_VIEW_CASE_PERMISSION, CAN_VIEW_TASK_PERMISSION, SetTaskDueDateComponent, TASK_DETAIL_PERMISSION_RESOURCE, TASK_LIST_NO_SEARCH_RESULTS_MESSAGE, TaskDetailContentComponent, TaskDetailIntermediateSaveComponent, TaskDetailModalComponent, TaskIntermediateSaveService, TaskListColumnDefaultSort, TaskListColumnService, TaskListComponent, TaskListPaginationService, TaskListQueryParamService, TaskListSearchDropdownDataProvider, TaskListSearchFieldDataType, TaskListSearchFieldFieldType, TaskListSearchFieldMatchType, TaskListSearchService, TaskListService, TaskModule, TaskService };
|
|
2890
2675
|
//# sourceMappingURL=valtimo-task.mjs.map
|