@valtimo/task 13.5.0 → 13.6.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-task.mjs","sources":["../../../../projects/valtimo/task/src/lib/services/task.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-sort.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-column.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-pagination.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-search.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-query-param.service.ts","../../../../projects/valtimo/task/src/lib/services/task-intermediate-save.service.ts","../../../../projects/valtimo/task/src/lib/services/index.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.html","../../../../projects/valtimo/task/src/lib/task-permissions.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-content/task-detail-content.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-content/task-detail-content.component.html","../../../../projects/valtimo/task/src/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.html","../../../../projects/valtimo/task/src/lib/components/set-task-due-date/set-task-due-date.component.ts","../../../../projects/valtimo/task/src/lib/components/set-task-due-date/set-task-due-date.component.html","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.html","../../../../projects/valtimo/task/src/lib/constants/task-list.constants.ts","../../../../projects/valtimo/task/src/lib/constants/index.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.html","../../../../projects/valtimo/task/src/lib/models/task.model.ts","../../../../projects/valtimo/task/src/lib/models/task-definition.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list.model.ts","../../../../projects/valtimo/task/src/lib/models/task-intermediate-save.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list-search-field.model.ts","../../../../projects/valtimo/task/src/lib/models/task-sse-event.model.ts","../../../../projects/valtimo/task/src/lib/models/index.ts","../../../../projects/valtimo/task/src/lib/task-routing.module.ts","../../../../projects/valtimo/task/src/lib/task.module.ts","../../../../projects/valtimo/task/src/public_api.ts","../../../../projects/valtimo/task/src/valtimo-task.ts"],"sourcesContent":["/*\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\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n AssigneeRequest,\n SetTaskDueDateRequest,\n SpecifiedTask,\n Task,\n TaskListColumn,\n TaskListOtherFilters,\n TaskListSearchField,\n TaskPageParams,\n} from '../models';\nimport {\n BaseApiService,\n ConfigService,\n CustomTaskList,\n InterceptorSkip,\n NamedUser,\n Page,\n TaskListTab,\n} from '@valtimo/shared';\nimport {TaskProcessLinkResult} from '@valtimo/process-link';\n\n@Injectable({providedIn: 'root'})\nexport class TaskService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public queryTasks(params?: any): Observable<HttpResponse<Array<Task>>> {\n return this.httpClient.get<Array<Task>>(this.getApiUrl('/v1/task'), {\n observe: 'response',\n params,\n });\n }\n\n public queryTasksPage(params?: any): Observable<Page<Task>> {\n return this.httpClient.get<Page<Task>>(this.getApiUrl('/v2/task'), {\n params,\n });\n }\n\n public queryTasksPageV3(\n assigneeFilter: TaskListTab = TaskListTab.ALL,\n pageParams: TaskPageParams,\n caseDefinitionKey?: string,\n otherFilters?: TaskListOtherFilters\n ): Observable<Page<Task> | Page<SpecifiedTask>> {\n let httpParams = new HttpParams().set('page', pageParams.page).set('size', pageParams.size);\n\n if (pageParams.sort) {\n httpParams = httpParams.append('sort', pageParams.sort);\n }\n\n if (caseDefinitionKey && (otherFilters || []).length > 0) {\n return this.searchTasks(httpParams, caseDefinitionKey, otherFilters, assigneeFilter);\n }\n\n httpParams = httpParams.append('filter', assigneeFilter.toUpperCase());\n\n return this.httpClient.post<Page<Task>>(\n this.getApiUrl('/v3/task'),\n {...(caseDefinitionKey && {caseDefinitionKey})},\n {params: httpParams}\n );\n }\n\n private searchTasks(\n params: HttpParams,\n caseDefinitionKey: string,\n otherFilters: TaskListOtherFilters,\n assigneeFilter: TaskListTab = TaskListTab.ALL\n ): Observable<Page<SpecifiedTask>> {\n return this.httpClient.post<Page<SpecifiedTask>>(\n this.getApiUrl(`/v1/document-definition/${caseDefinitionKey}/task/search`),\n {\n caseDefinitionKey,\n assigneeFilter: assigneeFilter.toUpperCase(),\n ...(otherFilters && {otherFilters}),\n },\n {params}\n );\n }\n\n public getTasks(): Observable<Task[]> {\n return this.httpClient.get<Task[]>(this.getApiUrl('/v1/task?filter=all'));\n }\n\n public getTask(id: string): Observable<any> {\n return this.httpClient.get(this.getApiUrl(`/v1/task/${id}`));\n }\n\n public getCandidateUsers(id: string): Observable<NamedUser[]> {\n return this.httpClient.get<NamedUser[]>(this.getApiUrl(`/v2/task/${id}/candidate-user`));\n }\n\n public assignTask(id: string, assigneeRequest: AssigneeRequest): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/assign`), assigneeRequest);\n }\n\n public unassignTask(id: string): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/unassign`), null);\n }\n\n public completeTask(id: string, variables: Map<string, any>): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/complete`), {\n variables,\n filesToDelete: [],\n });\n }\n\n public getTaskProcessLink(taskId: string): Observable<TaskProcessLinkResult> {\n return this.httpClient.get<TaskProcessLinkResult>(\n this.getApiUrl(`/v2/process-link/task/${taskId}`),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\n );\n }\n\n public getTaskListColumns(caseDefinitionKey: string): Observable<TaskListColumn[]> {\n return this.httpClient.get<TaskListColumn[]>(\n this.getApiUrl(`/v1/case/${caseDefinitionKey}/task-list-column`)\n );\n }\n\n public getConfigCustomTaskList(): CustomTaskList {\n return this.configService.config.customTaskList;\n }\n\n public getTaskListSearchFields(caseDefinitionKey: string): Observable<TaskListSearchField[]> {\n return this.httpClient.get<TaskListSearchField[]>(\n this.getApiUrl(`v1/search/field/TaskListSearchColumns/${caseDefinitionKey}`)\n );\n }\n\n public setTaskDueDate(\n taskId: string,\n setTaskDueDateRequest: SetTaskDueDateRequest\n ): Observable<void> {\n return this.httpClient.post<void>(\n this.getApiUrl(`/v1/task/${taskId}/set-due-date`),\n setTaskDueDateRequest\n );\n }\n\n public removeTaskDueDate(taskId: string): Observable<void> {\n return this.httpClient.post<void>(this.getApiUrl(`/v1/task/${taskId}/set-due-date`), null);\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TaskListTab} from '@valtimo/shared';\n\n@Injectable()\nexport class TaskListService {\n private readonly _ALL_CASES_ID = 'ALL_CASES';\n private readonly _caseDefinitionKey$ = new BehaviorSubject<string | null>(null);\n private readonly _selectedTaskType$ = new BehaviorSubject<TaskListTab>(TaskListTab.MINE);\n private readonly _loadingStateForCaseDefinition$ = new BehaviorSubject<boolean>(false);\n\n public get caseDefinitionKey$(): Observable<string | null> {\n return this._caseDefinitionKey$.asObservable();\n }\n\n public get selectedTaskType$(): Observable<TaskListTab> {\n return this._selectedTaskType$.asObservable();\n }\n\n public get selectedTaskType(): TaskListTab {\n return this._selectedTaskType$.getValue();\n }\n\n public get loadingStateForCaseDefinition$(): Observable<boolean> {\n return this._loadingStateForCaseDefinition$.asObservable();\n }\n\n public get ALL_CASES_ID(): string {\n return this._ALL_CASES_ID;\n }\n\n public setSelectedTaskType(type: TaskListTab): void {\n this._selectedTaskType$.next(type);\n }\n\n public setCaseDefinitionKey(caseDefinitionKey: string): void {\n this._loadingStateForCaseDefinition$.next(true);\n this._caseDefinitionKey$.next(caseDefinitionKey);\n }\n\n public setLoadingStateForCaseDefinition(loading: boolean): void {\n this._loadingStateForCaseDefinition$.next(loading);\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {Direction, SortState, TaskListTab} from '@valtimo/shared';\nimport {TaskService} from './task.service';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListSortService {\n private readonly _overrideSortState$ = new BehaviorSubject<SortState | null>(null);\n\n private readonly _sortState$ = new BehaviorSubject<{[key in TaskListTab]: SortState | null}>({\n [TaskListTab.ALL]: this._defaultSortState,\n [TaskListTab.MINE]: this._defaultSortState,\n [TaskListTab.OPEN]: this._defaultSortState,\n });\n\n private readonly _sortStateForCurrentTaskType$: Observable<SortState> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._sortState$,\n ]).pipe(map(([selectedTaskType, sortStates]) => sortStates[selectedTaskType]));\n\n public get sortStateForCurrentTaskType$(): Observable<SortState> {\n return this._sortStateForCurrentTaskType$;\n }\n\n public get sortStringForCurrentTaskType$(): Observable<string | null> {\n return this.sortStateForCurrentTaskType$.pipe(\n map(sortState => (sortState ? this.getSortString(sortState) : null))\n );\n }\n\n public get overrideSortState$(): Observable<SortState | null> {\n return this._overrideSortState$.asObservable();\n }\n\n public get overrideSortStateString$(): Observable<string | null> {\n return this._overrideSortState$.pipe(map(state => (state ? this.getSortString(state) : null)));\n }\n\n private get _defaultSortState(): SortState | null {\n return this.taskService.getConfigCustomTaskList()?.defaultSortedColumn || null;\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService\n ) {}\n\n public updateSortState(taskType: TaskListTab, updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortState => {\n this._sortState$.next({\n ...sortState,\n [taskType]: {...sortState[taskType], ...updatedSortState},\n });\n });\n }\n\n public updateSortStates(updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = {...sortStatesCopy[taskType], ...updatedSortState};\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public clearSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = null;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public resetDefaultSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = this._defaultSortState;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public getSortStateFromSortString(sortString?: string): SortState | null {\n const splitString = sortString && sortString.split(',');\n if (splitString?.length > 1) {\n return {\n isSorting: true,\n state: {\n name: splitString[0],\n direction: splitString[1] as Direction,\n },\n };\n }\n\n return null;\n }\n\n public setOverrideSortState(state: SortState): void {\n this._overrideSortState$.next(state);\n }\n\n public resetOverrideSortState(): void {\n this._overrideSortState$.next(null);\n }\n\n private getSortString(sort: SortState | null): string {\n return `${sort.state.name},${sort.state.direction}`;\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, filter, Observable, switchMap, tap} from 'rxjs';\nimport {TaskService} from './task.service';\nimport {TaskListColumn} from '../models';\nimport {TaskListService} from './task-list.service';\nimport {TaskListSortService} from './task-list-sort.service';\n\n@Injectable()\nexport class TaskListColumnService {\n private readonly _DEFAULT_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'created',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'valtimoAssignee.fullName',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'due',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'context',\n label: `task-list.fieldLabels.context`,\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _DEFAULT_SPECIFIED_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'createTime',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.DATE,\n sortable: true,\n format: 'DD MMM YYYY HH:mm',\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'assignee',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'dueDate',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n ];\n\n private readonly _fields$ = new BehaviorSubject<ColumnConfig[]>(this._DEFAULT_TASK_LIST_FIELDS);\n\n private get hasCustomConfigTaskList(): boolean {\n return !!this.taskService.getConfigCustomTaskList();\n }\n\n public get fields$(): Observable<ColumnConfig[]> {\n return this._fields$.asObservable();\n }\n\n public get taskListColumnsForCase$(): Observable<TaskListColumn[]> {\n return this.taskListService.caseDefinitionKey$.pipe(\n tap(caseDefinitionName => {\n if (caseDefinitionName === this.taskListService.ALL_CASES_ID) {\n this.resetTaskListFields();\n }\n }),\n filter(\n caseDefinitionName =>\n !!caseDefinitionName && caseDefinitionName !== this.taskListService.ALL_CASES_ID\n ),\n switchMap(caseDefinitionName => this.taskService.getTaskListColumns(caseDefinitionName)),\n tap(taskListColumns => {\n if (taskListColumns.length === 0) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS[0].key,\n direction: 'DESC',\n },\n });\n this._fields$.next(this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS);\n } else {\n this._fields$.next(this.mapTaskListColumnToColumnConfig(taskListColumns));\n }\n }),\n tap(() => this.taskListService.setLoadingStateForCaseDefinition(false))\n );\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly taskListSortService: TaskListSortService\n ) {}\n\n public resetTaskListFields(): void {\n if (this.hasCustomConfigTaskList) {\n this.setFieldsToCustomTaskListFields();\n } else {\n this.setFieldsToDefaultTaskListFields();\n }\n\n this.taskListSortService.resetDefaultSortStates();\n this.taskListService.setLoadingStateForCaseDefinition(false);\n }\n\n private setFieldsToCustomTaskListFields(): void {\n const customTaskListFields = this.taskService.getConfigCustomTaskList().fields;\n\n if (customTaskListFields) {\n this._fields$.next(\n customTaskListFields.map((column, index) => ({\n key: column.propertyName,\n label: `task-list.fieldLabels.${column.translationKey}`,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n );\n }\n }\n\n private setFieldsToDefaultTaskListFields(): void {\n this._fields$.next(this._DEFAULT_TASK_LIST_FIELDS);\n }\n\n private mapTaskListColumnToColumnConfig(\n taskListColumns: Array<TaskListColumn>\n ): Array<ColumnConfig> {\n const hasDefaultSort = !!taskListColumns.find(column => column.defaultSort);\n const firstSortableColumn = taskListColumns.find(column => column.sortable);\n\n if (!hasDefaultSort && firstSortableColumn) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: firstSortableColumn.key,\n direction: 'DESC',\n },\n });\n }\n\n if (!hasDefaultSort && !firstSortableColumn) {\n this.taskListSortService.clearSortStates();\n }\n\n return taskListColumns.map(column => {\n if (column.defaultSort) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: column.key,\n direction: column.defaultSort,\n },\n });\n }\n\n return {\n viewType: this.getViewType(column.displayType.type),\n key: column.key,\n label: column.title || column.key,\n sortable: column.sortable,\n ...(column?.displayType?.displayTypeParameters?.enum && {\n enum: column?.displayType?.displayTypeParameters?.enum,\n }),\n ...(column?.displayType?.displayTypeParameters?.dateFormat && {\n format: column?.displayType?.displayTypeParameters?.dateFormat,\n }),\n };\n });\n }\n\n private getViewType(taskListColumnColumnDisplayType: string): string {\n switch (taskListColumnColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return taskListColumnColumnDisplayType;\n }\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {TaskPageParams} from '../models';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TaskListTab} from '@valtimo/shared';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListPaginationService {\n private readonly _pagination$ = new BehaviorSubject<{[key in TaskListTab]: TaskPageParams}>({\n [TaskListTab.ALL]: this.getDefaultPagination(),\n [TaskListTab.MINE]: this.getDefaultPagination(),\n [TaskListTab.OPEN]: this.getDefaultPagination(),\n });\n\n private readonly _paginationForCurrentTaskType$: Observable<TaskPageParams> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._pagination$,\n ]).pipe(map(([selectedTaskType, pagination]) => pagination[selectedTaskType]));\n\n public get paginationForCurrentTaskType$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$;\n }\n\n public get paginationForCurrentTaskTypeForList$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$.pipe(\n map(pagination => ({...pagination, page: pagination?.page + 1 || 1}))\n );\n }\n\n constructor(private readonly taskListService: TaskListService) {}\n\n public updateTaskPagination(\n taskType: TaskListTab,\n updatedPagination: Partial<TaskPageParams>\n ): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n const currentPagination = pagination[taskType];\n this._pagination$.next({\n ...pagination,\n [taskType]: {...currentPagination, ...updatedPagination},\n });\n });\n }\n\n public getLastAvailablePage(page: number, size: number, collectionSize: number): number {\n if (this.isNumber(page) && this.isNumber(size) && this.isNumber(collectionSize) && page !== 0) {\n const amountOfPages = Math.ceil(collectionSize / size);\n\n if (page + 1 > amountOfPages) {\n return amountOfPages - 1;\n }\n }\n\n return page;\n }\n\n private isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n private getDefaultPagination(): TaskPageParams {\n return {\n page: 0,\n size: 10,\n };\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {\n ConfigService,\n SearchField,\n SearchFieldValues,\n SearchFilter,\n SearchFilterRange,\n} from '@valtimo/shared';\nimport {BehaviorSubject, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {TaskListService} from './task-list.service';\nimport {TaskListOtherFilters, TaskListSearchField} from '../models';\nimport {TaskService} from './task.service';\n\n@Injectable()\nexport class TaskListSearchService {\n private readonly _loadingSearchFields$ = new BehaviorSubject<boolean>(true);\n private readonly _otherFilters$ = new BehaviorSubject<TaskListOtherFilters>([]);\n\n public get loadingSearchFields$(): Observable<boolean> {\n return this._loadingSearchFields$.asObservable();\n }\n\n public get otherFilters$(): Observable<TaskListOtherFilters> {\n return this._otherFilters$.asObservable();\n }\n\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListService.caseDefinitionKey$.pipe(\n tap(() => this._loadingSearchFields$.next(true)),\n switchMap(caseDefinitionName =>\n caseDefinitionName\n ? this.taskService.getTaskListSearchFields(caseDefinitionName)\n : of([] as TaskListSearchField[])\n ),\n map(searchFields =>\n searchFields.map(searchField => {\n const fieldTypeLowerCase = searchField.fieldType?.toLowerCase();\n\n return {\n ...searchField,\n dataType: searchField.dataType?.toLowerCase(),\n fieldType: fieldTypeLowerCase === 'text_contains' ? 'single' : fieldTypeLowerCase,\n matchType: searchField?.matchType?.toLowerCase(),\n } as unknown as SearchField;\n })\n ),\n tap(() => this._loadingSearchFields$.next(false))\n );\n\n constructor(\n private readonly configService: ConfigService,\n private readonly taskListService: TaskListService,\n private readonly taskService: TaskService\n ) {}\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._otherFilters$.next(this.mapSearchValuesToFilters(searchFieldValues));\n }\n\n public setOtherFilters(otherFilters: TaskListOtherFilters): void {\n this._otherFilters$.next(otherFilters);\n }\n\n public resetOtherFilters(): void {\n this._otherFilters$.next([]);\n }\n\n public mapOtherFilterToSearchValues(otherFilters: TaskListOtherFilters): SearchFieldValues {\n return otherFilters.reduce((acc, curr) => {\n const filter = curr as any;\n\n if (filter.rangeFrom) {\n return {\n ...acc,\n [filter.key]: {\n start: filter.rangeFrom,\n end: filter.rangeTo,\n },\n };\n } else if (filter.multiValue) {\n return {...acc, [filter.key]: filter.values};\n } else if (Array.isArray(filter.values) && filter.values.length > 0 && !filter.multiValue) {\n return {...acc, [filter.key]: filter.values[0]};\n }\n\n return acc;\n }, {});\n }\n\n private mapSearchValuesToFilters(values: SearchFieldValues): TaskListOtherFilters {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue, multiValue: true});\n } else {\n filters.push({key: valueKey, values: [searchValue], multiValue: false});\n }\n });\n\n return filters;\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {\n TaskListEncodedQueryParams,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n} from '../models';\nimport {omit} from 'lodash';\nimport {ActivatedRoute, Router} from '@angular/router';\n\n@Injectable()\nexport class TaskListQueryParamService {\n public setTaskListParams(params: TaskListQueryParamsWithReload): void {\n const queryParams: TaskListQueryParams = omit(params, 'reload');\n const encodedQueryParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.objectToBase64(queryParams[curr])}),\n {}\n ) as TaskListEncodedQueryParams;\n\n this.router.navigate([this.getUrlWithoutParams()], {queryParams: encodedQueryParams});\n }\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {}\n\n public getTaskListQueryParams(): Partial<TaskListQueryParams> {\n const queryParams = this.route.snapshot.queryParams;\n const decodedParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.parseBase64(queryParams[curr])}),\n {}\n ) as Partial<TaskListQueryParams>;\n\n return decodedParams;\n }\n\n private getUrlWithoutParams(): string {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n urlTree.fragment = null;\n return urlTree.toString();\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private parseBase64(base64string: string): object {\n return JSON.parse(atob(base64string));\n }\n}\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 */\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {BehaviorSubject, catchError, filter, Observable, of} from 'rxjs';\nimport {IntermediateSaveRequest, IntermediateSubmission} from '../models';\n\n@Injectable({providedIn: 'root'})\nexport class TaskIntermediateSaveService extends BaseApiService {\n private readonly _submission$ = new BehaviorSubject<any>({});\n private readonly _formIoFormData$ = new BehaviorSubject<any>({});\n\n public get submission$(): Observable<any> {\n return this._submission$.pipe(filter((value: any) => !!value));\n }\n public get formIoFormData$(): Observable<any> {\n return this._formIoFormData$.pipe(filter((value: any) => !!value));\n }\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getIntermediateSubmission(\n taskInstanceId: string\n ): Observable<IntermediateSubmission | null> {\n return this.httpClient\n .get<IntermediateSubmission>(this.getApiUrl('/v1/form/intermediate/submission'), {\n params: {\n taskInstanceId,\n },\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n })\n .pipe(catchError(() => of(null)));\n }\n\n public storeIntermediateSubmission(\n request: IntermediateSaveRequest\n ): Observable<IntermediateSubmission> {\n return this.httpClient.post<IntermediateSubmission>(\n this.getApiUrl('/v1/form/intermediate/submission'),\n request,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '400'),\n }\n );\n }\n\n public clearIntermediateSubmission(taskInstanceId: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl('/v1/form/intermediate/submission'), {\n params: {\n taskInstanceId,\n },\n });\n }\n\n public setSubmission(value: any): void {\n this._submission$.next(value);\n }\n\n public setFormIoFormData(value: any): void {\n this._formIoFormData$.next(value);\n }\n}\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\nexport * from './task.service';\nexport * from './task-list.service';\nexport * from './task-list-column.service';\nexport * from './task-list-pagination.service';\nexport * from './task-list-search.service';\nexport * from './task-list-query-param.service';\nexport * from './task-intermediate-save.service';\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 */\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CdsThemeService,\n RemoveClassnamesDirective,\n SearchableDropdownSelectModule,\n} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription, take, tap} from 'rxjs';\nimport {TaskService} from '../../services';\nimport {NamedUser} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n ButtonModule,\n ComboBoxModule,\n DatePickerModule,\n IconModule,\n IconService,\n LayerModule,\n ListItem,\n ToggletipModule,\n} from 'carbon-components-angular';\nimport {UserFollow16} from '@carbon/icons';\nimport {filter, map} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-assign-user-to-task',\n templateUrl: './assign-user-to-task.component.html',\n styleUrls: ['./assign-user-to-task.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n SearchableDropdownSelectModule,\n ButtonModule,\n ToggletipModule,\n IconModule,\n LayerModule,\n DatePickerModule,\n ComboBoxModule,\n RemoveClassnamesDirective,\n ],\n})\nexport class AssignUserToTaskComponent implements OnInit, OnChanges, OnDestroy {\n private _taskId;\n @Input() public set taskId(value: string) {\n if (this._taskId === value) return;\n this._taskId = value;\n this.fetchCandidateUsers(value);\n }\n\n @Input() public readonly assigneeId: string;\n @Output() public readonly assignmentOfTaskChanged = new EventEmitter();\n\n public readonly canAssignUserToTaskSet$ = new BehaviorSubject<boolean>(false);\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set canAssignUserToTask(value: boolean) {\n this.canAssignUserToTaskSet$.next(true);\n this.canAssignUserToTask$.next(value);\n }\n\n public readonly assignedIdOnServer$ = new BehaviorSubject<string | null>(null);\n private readonly _assignedUserFullName$ = new BehaviorSubject<string | null>(null);\n public readonly assignedUserFullName$: Observable<string> = this._assignedUserFullName$.pipe(\n map(fullName => `${fullName?.trim()}`)\n );\n\n private readonly _candidateUsersForTask$ = new BehaviorSubject<NamedUser[] | undefined>(\n undefined\n );\n\n private readonly _selectedUserId$ = new BehaviorSubject<string | null>(null);\n public readonly selectedUserId$ = this._selectedUserId$.asObservable();\n\n public readonly candidateUsersForTask$ = combineLatest([\n this._candidateUsersForTask$,\n this._selectedUserId$,\n ]).pipe(map(([users, selectedUserId]) => this.mapUsersForDropdown(users, selectedUserId)));\n\n public readonly mouseIsOverAssignee$ = new BehaviorSubject<boolean>(false);\n public readonly open$ = new Subject<boolean>();\n public readonly disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly toggletipTheme$ = this.cdsThemeService.currentTheme$;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly taskService: TaskService,\n private readonly iconService: IconService,\n private readonly elementRef: ElementRef,\n private readonly renderer2: Renderer2,\n private readonly cdsThemeService: CdsThemeService\n ) {\n this.iconService.registerAll([UserFollow16]);\n }\n\n public ngOnInit(): void {\n this.openHideElementSubscription();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this._candidateUsersForTask$.pipe(take(1)).subscribe(candidateUsers => {\n const currentUserId = changes.assigneeId?.currentValue || this.assigneeId;\n this.assignedIdOnServer$.next(currentUserId || null);\n this._selectedUserId$.next(currentUserId || null);\n this._assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers ?? [], currentUserId)\n );\n });\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public assignTask(userId: string): void {\n this.disable();\n\n combineLatest([\n this._candidateUsersForTask$,\n this.taskService.assignTask(this._taskId, {assignee: userId}),\n ])\n .pipe(take(1))\n .subscribe({\n next: ([candidateUsers]) => {\n this._selectedUserId$.next(userId);\n this.assignedIdOnServer$.next(userId);\n this._assignedUserFullName$.next(this.getAssignedUserName(candidateUsers ?? [], userId));\n this.closeToggletip();\n this.emitChange();\n this.enable();\n },\n error: () => {\n this.enable();\n },\n });\n }\n\n public unassignTask(): void {\n this.disable();\n this.taskService\n .unassignTask(this._taskId)\n .pipe(\n tap(() => {\n this.emitChange();\n this.enable();\n this.clear();\n })\n )\n .subscribe();\n }\n\n public getAssignedUserName(users: NamedUser[], userId: string): string {\n if (users && userId) {\n const findUser =\n users.find(user => user.id === userId) || users.find(user => user.userName === userId);\n return findUser ? findUser.label : userId;\n }\n return userId || '-';\n }\n\n public onMouseEnterAssignee(): void {\n this.mouseIsOverAssignee$.next(true);\n }\n\n public onMouseLeaveAssignee(): void {\n this.mouseIsOverAssignee$.next(false);\n }\n\n public onSubmitButtonClick(): void {\n this.assignTask(this._selectedUserId$.getValue());\n }\n public onUserSelect(event: ListItem): void {\n if (!event?.id) return;\n this._selectedUserId$.next(event.id);\n }\n\n public clear(): void {\n this.assignedIdOnServer$.next(null);\n this._selectedUserId$.next(null);\n }\n\n private mapUsersForDropdown(users: NamedUser[], selectedUserId: string): ListItem[] {\n return (\n users\n ?.map(user => ({...user, lastName: user.lastName?.split(' ').splice(-1)[0] || ''}))\n .sort((a, b) => a.lastName.localeCompare(b.lastName))\n .map(user => ({content: user.label, id: user.id, selected: user.id === selectedUserId})) ||\n []\n );\n }\n\n private emitChange(): void {\n this.assignmentOfTaskChanged.emit();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private closeToggletip(): void {\n // needed to reliably trigger toggle tip closure\n this.open$.next(true);\n setTimeout(() => this.open$.next(false));\n }\n\n private fetchCandidateUsers(taskId: string): void {\n this.disable();\n\n this.canAssignUserToTask$\n .pipe(\n filter(allowed => !!allowed),\n take(1)\n )\n .subscribe(() => {\n this.taskService.getCandidateUsers(taskId).subscribe(candidateUsers => {\n this._candidateUsersForTask$.next(candidateUsers);\n if (this.assigneeId) {\n this.assignedIdOnServer$.next(this.assigneeId);\n this._selectedUserId$.next(this.assigneeId);\n this._assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers, this.assigneeId)\n );\n }\n this.enable();\n });\n });\n }\n\n private openHideElementSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.selectedUserId$,\n this.assignedIdOnServer$,\n this.canAssignUserToTask$,\n ]).subscribe(([selectedUserId, idOnServer, canAssignUserToTask]) => {\n if (!canAssignUserToTask && !(selectedUserId === idOnServer && idOnServer !== null)) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'none');\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'display');\n }\n })\n );\n }\n}\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\n<ng-container\n *ngIf=\"\n (canAssignUserToTaskSet$ | async) && {\n candidateUsers: candidateUsersForTask$ | 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 } as obs\n \"\n>\n <ng-container\n *ngIf=\"{hasSelection: obs.selectedUserId === obs.idOnServer && obs.idOnServer !== null} as vars\"\n >\n <div\n class=\"assign-user-container\"\n *ngIf=\"obs.canAssignUserToTask || (!obs.canAssignUserToTask && vars.hasSelection)\"\n (mouseenter)=\"onMouseEnterAssignee()\"\n (mouseleave)=\"onMouseLeaveAssignee()\"\n >\n <div\n class=\"assignee-text element\"\n [ngClass]=\"{\n active: obs.canAssignUserToTask\n ? vars.hasSelection && !obs.mouseIsOverAssignee\n : vars.hasSelection,\n }\"\n >\n <span class=\"bold\">{{ 'assignTask.assignedTo' | translate }}</span>\n\n \n\n <span class=\"name\">{{ obs.assignedUserFullName }}</span>\n </div>\n\n <button\n *ngIf=\"obs.canAssignUserToTask\"\n cdsButton=\"ghost\"\n class=\"element remove-button\"\n [ngClass]=\"{active: vars.hasSelection && obs.mouseIsOverAssignee}\"\n [disabled]=\"obs.disabled\"\n size=\"sm\"\n (click)=\"unassignTask()\"\n >\n {{ 'assignTask.remove' | translate }}\n </button>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !vars.hasSelection}\"\n (onOpen)=\"clear()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n class=\"set-assignee-button\"\n >\n {{ 'assignTask.buttonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n\n <div\n cdsToggletipContent\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"assign-task-popover-content\"\n >\n <cds-combo-box\n *ngIf=\"!vars.hasSelection\"\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)=\"clear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton\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 </div>\n </cds-toggletip>\n </div>\n </ng-container>\n</ng-container>\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\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n assign = 'assign',\n view = 'view',\n modify = 'modify',\n}\n\nenum TASK_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n task = 'com.ritense.valtimo.operaton.domain.OperatonTask',\n}\n\nconst CAN_ASSIGN_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_MODIFY_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.modify,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nexport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n};\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {RecentlyViewed16} from '@carbon/icons';\nimport {FormioForm} from '@formio/angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n FormioComponent,\n FormIoModule,\n FormioOptionsImpl,\n FormIoStateService,\n FormioSubmission,\n ValtimoFormioOptions,\n ValtimoModalService,\n} from '@valtimo/components';\nimport {\n ConfigService,\n FORM_VIEW_MODEL_TOKEN,\n FormViewModel,\n GlobalNotificationService,\n} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormFlowComponent,\n FormSubmissionResult,\n ProcessLinkModule,\n ProcessLinkService,\n TaskProcessLinkResult,\n TaskProcessLinkType,\n TaskWithProcessLink,\n UrlResolverService,\n} from '@valtimo/process-link';\nimport {IconService} from 'carbon-components-angular';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n} from 'rxjs';\nimport {IntermediateSubmission, Task} from '../../models';\nimport {TaskIntermediateSaveService, TaskService} from '../../services';\nimport {CAN_ASSIGN_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE} from '../../task-permissions';\n\n@Component({\n selector: 'valtimo-task-detail-content',\n templateUrl: './task-detail-content.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormIoModule, TranslateModule, ProcessLinkModule],\n})\nexport class TaskDetailContentComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('form') form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: false, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formFlow') public formFlow: FormFlowComponent;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n @Input() public set task(value: Task | null) {\n if (!value) return;\n\n this.loadTaskDetails(value);\n }\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.loadTaskDetails(value.task as any, value.processLinkActivityResult);\n }\n @Input() public set modalClosed(closed: boolean) {\n // save form flow data on modal closed\n if (this.formFlow) this.formFlow.saveData();\n\n if (closed) {\n this.closeModalEvent.emit();\n }\n }\n @Output() public readonly closeModalEvent = new EventEmitter();\n @Output() public readonly formSubmit = new EventEmitter();\n @Output() public readonly activeChange = new EventEmitter<boolean>();\n\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false);\n public readonly errorMessage$ = new BehaviorSubject<string | null>(null);\n public readonly formDefinition$ = new BehaviorSubject<FormioForm | null>(null);\n public readonly formDefinitionId$ = new BehaviorSubject<string | null>(null);\n public readonly formFlowInstanceId$ = new BehaviorSubject<string | null>(null);\n public readonly formioOptions$ = new BehaviorSubject<ValtimoFormioOptions | null>(null);\n public readonly formIoFormData$ = new BehaviorSubject<any>(null);\n public readonly formName$ = new BehaviorSubject<string | null>(null);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly page$ = new BehaviorSubject<any>(null);\n public readonly submission$ = this.taskIntermediateSaveService.submission$;\n public readonly task$ = new BehaviorSubject<Task | null>(null);\n public readonly taskInstanceId$ = new BehaviorSubject<string | null>(null);\n public intermediateSaveEnabled = false;\n\n private readonly _taskProcessLinkType$ = new BehaviorSubject<TaskProcessLinkType | null>(null);\n public readonly processLinkIsForm$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'form')\n );\n public readonly processLinkIsFormViewModel$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'form-view-model')\n );\n public readonly processLinkIsFormFlow$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'form-flow')\n );\n public readonly processLinkIsUiComponent$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'ui-component')\n );\n\n private readonly _processLinkId$ = new BehaviorSubject<string | null>(null);\n private readonly _subscriptions = new Subscription();\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n private readonly _viewInitialized$ = new BehaviorSubject<boolean>(false);\n\n public get viewInitialized$(): Observable<boolean> {\n return this._viewInitialized$.pipe(filter(initialized => initialized));\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly iconService: IconService,\n private readonly logger: NGXLogger,\n private readonly modalService: ValtimoModalService,\n private readonly permissionService: PermissionService,\n private readonly processLinkService: ProcessLinkService,\n private readonly router: Router,\n private readonly stateService: FormIoStateService,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly taskService: TaskService,\n private readonly translateService: TranslateService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig,\n private readonly urlResolverService: UrlResolverService\n ) {\n this.intermediateSaveEnabled = !!this.configService.featureToggles?.enableIntermediateSave;\n\n this.iconService.registerAll([RecentlyViewed16]);\n\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n this.formioOptions$.next(options);\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n public ngOnInit(): void {\n this.openPermissionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.taskIntermediateSaveService.setSubmission({});\n this._viewInitialized$.next(false);\n }\n\n public ngAfterViewInit(): void {\n this._viewInitialized$.next(true);\n }\n\n public onSubmit(submission: FormioSubmission): void {\n if (submission.data) {\n this.taskIntermediateSaveService.setFormIoFormData(submission.data);\n this.formIoFormData$.next(submission.data);\n }\n\n combineLatest([this._processLinkId$, this._taskProcessLinkType$, this.task$])\n .pipe(take(1))\n .subscribe(([processLinkId, taskProcessLinkType, task]) => {\n if (taskProcessLinkType === 'form') {\n if (processLinkId) {\n this.processLinkService\n .submitForm(processLinkId, submission.data, task?.businessKey, task?.id)\n .subscribe({\n next: (_: FormSubmissionResult) => {\n this.completeTask(task);\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n } else if (taskProcessLinkType === 'form-view-model') {\n this.completeTask(task);\n }\n });\n }\n\n public completeTask(task: Task | null): void {\n if (!task) return;\n\n this.globalNotificationService.showToast({\n title: `${task.name} ${this.translateService.instant('taskDetail.taskCompleted')}`,\n type: 'success',\n });\n this.task$.next(null);\n this.formSubmit.emit();\n this.closeModalEvent.emit();\n this.activeChange.emit(false);\n\n if (this.formFlow) this.formFlow.saveData();\n }\n\n public onChange(event: any): void {\n if (event.data) {\n this.taskIntermediateSaveService.setFormIoFormData(event.data);\n this.formIoFormData$.next(event.data);\n this.activeChange.emit(true);\n }\n }\n\n public onFormFlowChangeEvent(): void {\n this.activeChange.emit(true);\n }\n\n private loadTaskDetails(task: Task, processLink?: TaskProcessLinkResult): void {\n this.resetTaskProcessLinkType();\n this.resetFormDefinition();\n\n this.taskInstanceId$.next(task.id);\n\n if (!processLink) {\n this.getTaskProcessLink(task.id);\n } else {\n this.setTaskProcessLink(processLink);\n }\n\n this.setDocumentDefinitionNameInService(task);\n const documentId = task.businessKey;\n this.stateService.setDocumentId(documentId);\n\n this.task$.next(task);\n this.page$.next({\n title: task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${task.created}`,\n });\n this.stateService.setProcessInstanceId(task.processInstanceId);\n }\n\n private getCurrentProgress(formViewModelComponentRef?: ComponentRef<any>): void {\n this.taskInstanceId$\n .pipe(\n filter(value => !!value),\n take(1),\n switchMap((taskInstanceId: string | null) =>\n this.taskIntermediateSaveService.getIntermediateSubmission(taskInstanceId ?? '')\n )\n )\n .subscribe({\n next: (intermediateSubmission: IntermediateSubmission) => {\n this.taskIntermediateSaveService.setSubmission({\n data: intermediateSubmission?.submission || {},\n });\n\n if (formViewModelComponentRef) {\n formViewModelComponentRef.instance.submission = {\n data: intermediateSubmission.submission,\n };\n }\n },\n });\n }\n\n private getTaskProcessLink(taskId: string): void {\n this.taskService.getTaskProcessLink(taskId).subscribe({\n next: res => {\n this.setTaskProcessLink(res);\n },\n error: _ => {\n this.loading$.next(false);\n },\n });\n }\n\n private setTaskProcessLink(processLinkResult: TaskProcessLinkResult | null): void {\n if (processLinkResult !== null) {\n switch (processLinkResult?.type) {\n case 'form':\n this._taskProcessLinkType$.next('form');\n this._processLinkId$.next(processLinkResult.processLinkId);\n if (this.intermediateSaveEnabled) this.getCurrentProgress();\n this.setFormDefinition(processLinkResult.properties.prefilledForm);\n break;\n case 'form-flow':\n this._taskProcessLinkType$.next('form-flow');\n this.formFlowInstanceId$.next(processLinkResult.properties.formFlowInstanceId ?? '');\n break;\n case 'form-view-model':\n this._taskProcessLinkType$.next('form-view-model');\n this._processLinkId$.next(processLinkResult.processLinkId);\n this.formDefinition$.next(processLinkResult.properties.formDefinition);\n this.formName$.next(processLinkResult.properties.formName ?? '');\n this.setFormViewModelComponent();\n break;\n case 'url':\n this._taskProcessLinkType$.next('url');\n this._processLinkId$.next(processLinkResult.processLinkId);\n combineLatest([this.processLinkService.getVariables(), this.task$])\n .pipe(take(1))\n .subscribe(([variables, task]) => {\n let url = this.urlResolverService.resolveUrlVariables(\n processLinkResult.properties.url,\n variables.variables\n );\n window.open(url, '_blank').focus();\n this.processLinkService\n .submitURLProcessLink(processLinkResult.processLinkId, task.businessKey, task.id)\n .subscribe(() => {\n this.completeTask(task);\n });\n });\n break;\n case 'ui-component':\n this._taskProcessLinkType$.next('ui-component');\n this._processLinkId$.next(processLinkResult.processLinkId);\n this.formDefinition$.next(null);\n this.formName$.next('');\n this.setFormCustomComponent(processLinkResult.properties.componentKey);\n break;\n }\n\n this.loading$.next(false);\n }\n }\n\n private openPermissionSubscription(): void {\n this._subscriptions.add(\n this.task$.subscribe(task => {\n if (task) {\n this.logger.debug('Checking if user allowed to assign a user to Task with id:', task.id);\n this.permissionService\n .requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n })\n .subscribe((allowed: boolean) => {\n this.canAssignUserToTask$.next(allowed);\n });\n } else {\n this.logger.debug('Reset is user allowed to assign a user to Task as task is null');\n this.canAssignUserToTask$.next(false);\n }\n })\n );\n }\n\n private setFormDefinition(formDefinition: any): void {\n this._taskProcessLinkType$.next('form');\n this.formDefinition$.next(formDefinition);\n }\n\n private setFormViewModelComponent() {\n combineLatest([this._viewInitialized$, this.processLinkIsFormViewModel$]).subscribe(\n ([viewInitialized, isFvm]) => {\n if (viewInitialized && isFvm) {\n this.formViewModelDynamicContainer.clear();\n if (!this.formViewModel) {\n return;\n }\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition$.getValue();\n formViewModelComponent.instance.formName = this.formName$.getValue();\n formViewModelComponent.instance.taskInstanceId = this.taskInstanceId$.getValue();\n formViewModelComponent.instance.isStartForm = false;\n\n formViewModelComponent.instance.formSubmit\n .pipe(\n switchMap(() => this.task$),\n take(1)\n )\n .subscribe((task: Task | null) => {\n this.completeTask(task);\n });\n\n if (this.intermediateSaveEnabled) {\n this._subscriptions.add(\n formViewModelComponent.instance.submission$.subscribe(submission => {\n this.taskIntermediateSaveService.setSubmission(submission);\n })\n );\n this._subscriptions.add(\n this.submission$.pipe(distinctUntilChanged()).subscribe((submission?) => {\n if (submission?.data && Object.keys(submission.data).length === 0) {\n formViewModelComponent.instance.submission = {data: {}};\n }\n })\n );\n this.getCurrentProgress(formViewModelComponent);\n }\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n })\n );\n }\n }\n );\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n combineLatest([this._viewInitialized$, this.processLinkIsUiComponent$]).subscribe(\n ([viewInitialized, isUiComponent]) => {\n if (viewInitialized && isUiComponent) {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) {\n return;\n }\n let renderedComponent: ComponentRef<FormCustomComponent>;\n this._subscriptions.add(\n this._formCustomComponentConfig$.subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n renderedComponent.instance.taskInstanceId = this.taskInstanceId$.value;\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.closeModalEvent.emit();\n });\n })\n );\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n renderedComponent.destroy();\n })\n );\n }\n }\n );\n }\n\n private resetFormDefinition(): void {\n this.formDefinition$.next(null);\n this.loading$.next(true);\n }\n\n private resetTaskProcessLinkType(): void {\n this._taskProcessLinkType$.next(null);\n this._processLinkId$.next(null);\n }\n\n private setDocumentDefinitionNameInService(task: Task): void {\n this.documentService\n .getProcessDefinitionCaseDefinitionFromProcessInstanceId(task.processInstanceId)\n .subscribe(ProcessDefinitionCaseDefinition => {\n const caseDefinitionKey = ProcessDefinitionCaseDefinition.id.caseDefinitionId.key;\n this.modalService.setCaseDefinitionKey(caseDefinitionKey);\n this.stateService.setDocumentDefinitionName(caseDefinitionKey);\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n page: page$ | 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 } as obs\"\n>\n <valtimo-form-io\n #form\n *ngIf=\"\n obs.formDefinition &&\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 <div *ngIf=\"obs.loading\" class=\"text-black mb-0 p-3 text-center\">\n {{ 'formManagement.loading' | translate }}\n </div>\n\n <div\n *ngIf=\"\n obs.loading === false &&\n !obs.formDefinition &&\n !obs.formFlowInstanceId &&\n !obs.errorMessage &&\n !obs.processLinkIsUiComponent\n \"\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n >\n {{\n (isAdmin$ | async)\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div *ngIf=\"obs.errorMessage\" class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ obs.errorMessage }}\n </div>\n\n <div class=\"m-2\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {RecentlyViewed16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ConfirmationModalModule, TooltipModule} from '@valtimo/components';\nimport {ConfigService, GlobalNotificationService} from '@valtimo/shared';\nimport {TaskProcessLinkResult, TaskWithProcessLink} from '@valtimo/process-link';\nimport {ButtonModule, IconModule, IconService, ModalModule} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, combineLatest, switchMap, take} from 'rxjs';\nimport {IntermediateSaveRequest, IntermediateSubmission, Task} from '../../models';\nimport {TaskIntermediateSaveService, TaskService} from '../../services';\n\n@Component({\n selector: 'valtimo-task-detail-intermediate-save',\n templateUrl: './task-detail-intermediate-save.component.html',\n styleUrls: ['./task-detail-intermediate-save.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n ConfirmationModalModule,\n IconModule,\n ModalModule,\n TooltipModule,\n ],\n})\nexport class TaskDetailIntermediateSaveComponent {\n @Input() public set task(value: Task | null) {\n if (!value) return;\n this.taskService\n .getTaskProcessLink(value.id)\n .pipe(take(1))\n .subscribe(res => {\n this.setFormFlow(res);\n });\n\n this.taskValue.set(value);\n this.page.set({\n title: value.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value.created}`,\n });\n this.getCurrentProgress(value);\n }\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.setFormFlow(value.processLinkActivityResult);\n this.taskValue.set(value.task as any);\n this.page.set({\n title: value?.task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.task.created}`,\n });\n this.getCurrentProgress(value.task as any);\n }\n @Output() public readonly currentIntermediateSaveEvent =\n new EventEmitter<IntermediateSubmission | null>();\n @Output() public readonly showModalEvent = new EventEmitter();\n\n public readonly formFlowInstanceId$ = new BehaviorSubject<string | undefined>(undefined);\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly taskValue = signal<Task | null>(null);\n public readonly page = signal<{title: string; subtitle: string} | null>(null);\n public readonly canAssignUserToTask = signal<boolean>(false);\n public readonly submission$ = this.taskIntermediateSaveService.submission$;\n public readonly formIoFormData$ = this.taskIntermediateSaveService.formIoFormData$;\n\n public intermediateSaveEnabled = false;\n public currentIntermediateSave: IntermediateSubmission | null = null;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly iconService: IconService,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly taskService: TaskService,\n private readonly translateService: TranslateService\n ) {\n this.intermediateSaveEnabled = !!this.configService.featureToggles?.enableIntermediateSave;\n this.iconService.registerAll([RecentlyViewed16]);\n }\n\n public saveCurrentProgress(): void {\n combineLatest([this.submission$, this.formIoFormData$])\n .pipe(\n switchMap(([submission, formIoFormData]) => {\n const intermediateSaveRequest: IntermediateSaveRequest = {\n submission: submission?.data ? submission.data : formIoFormData,\n taskInstanceId: this.taskValue()?.id ?? '',\n };\n\n return this.taskIntermediateSaveService.storeIntermediateSubmission(\n intermediateSaveRequest\n );\n }),\n take(1)\n )\n .subscribe({\n next: intermediateSubmission => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('formManagement.intermediateSave.success'),\n type: 'success',\n });\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSubmission);\n this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);\n },\n error: () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('formManagement.intermediateSave.error'),\n type: 'error',\n });\n },\n });\n }\n\n public revertSaveClick(): void {\n if (this.showModalEvent.observed) {\n this.showModalEvent.emit();\n return;\n }\n\n this.showConfirmationModal$.next(true);\n }\n\n public clearCurrentProgress(): void {\n this.taskIntermediateSaveService\n .clearIntermediateSubmission(this.taskValue()?.id ?? '')\n .pipe(take(1))\n .subscribe(() => {\n this.taskIntermediateSaveService.setSubmission({});\n this.currentIntermediateSave = null;\n this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);\n });\n }\n\n private setFormFlow(processLink: TaskProcessLinkResult): void {\n if (processLink !== null && processLink.type === 'form-flow') {\n this.formFlowInstanceId$.next(processLink.properties.formFlowInstanceId);\n }\n }\n\n private formatIntermediateSubmission(\n intermediateSubmission: IntermediateSubmission\n ): IntermediateSubmission {\n intermediateSubmission.createdOn = moment(intermediateSubmission.createdOn).format(\n 'DD MMM YYYY HH:mm'\n );\n if (intermediateSubmission.editedOn) {\n intermediateSubmission.editedOn = moment(new Date(intermediateSubmission.editedOn)).format(\n 'DD MMM YYYY HH:mm'\n );\n }\n\n return intermediateSubmission;\n }\n\n private getCurrentProgress(task: Task): void {\n this.taskIntermediateSaveService\n .getIntermediateSubmission(task.id ?? '')\n .pipe(take(1))\n .subscribe(intermediateSave => {\n if (intermediateSave !== null) {\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSave);\n } else {\n this.currentIntermediateSave = null;\n this.taskIntermediateSaveService.setSubmission({});\n }\n\n this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);\n });\n }\n}\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\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","/*\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\nimport {Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ProcessInstanceTask} from '@valtimo/process';\nimport {BehaviorSubject, Subject} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\nimport {\n ButtonModule,\n DatePickerModule,\n IconModule,\n IconService,\n LayerModule,\n ToggletipModule,\n} from 'carbon-components-angular';\nimport {CalendarAdd16} from '@carbon/icons';\nimport {TaskService} from '../../services';\nimport {Task} from '../../models';\nimport {CdsThemeService, RemoveClassnamesDirective} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-set-task-due-date',\n templateUrl: './set-task-due-date.component.html',\n styleUrls: ['./set-task-due-date.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n IconModule,\n ToggletipModule,\n DatePickerModule,\n LayerModule,\n RemoveClassnamesDirective,\n ],\n})\nexport class SetTaskDueDateComponent {\n public readonly canModifyTaskSet$ = new BehaviorSubject<boolean>(false);\n public readonly canModifyTask$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set canModifyTask(value: boolean) {\n this.canModifyTaskSet$.next(true);\n this.canModifyTask$.next(value);\n }\n\n private readonly _task$ = new BehaviorSubject<Partial<ProcessInstanceTask> | null>(null);\n\n private get _task(): Partial<ProcessInstanceTask> | null {\n return this._task$.getValue();\n }\n\n public readonly hasDueDate$ = new BehaviorSubject<boolean>(false);\n\n public readonly selectedDateString$ = new BehaviorSubject<string>('');\n\n private get _selectedDateString(): string {\n return this.selectedDateString$.getValue();\n }\n\n @Input() public set task(value: ProcessInstanceTask | Task) {\n if (!value) return;\n this.hasDueDate$.next(!!value.due);\n this._task$.next(value);\n }\n\n public readonly taskDueDate$ = this._task$.pipe(\n filter(task => !!task),\n map(task => new Date(task.due))\n );\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n public readonly open$ = new Subject<boolean>();\n\n public readonly mouseIsOverDueDate$ = new BehaviorSubject<boolean>(false);\n\n public readonly toggletipTheme$ = this.cdsThemeService.toggletipTheme$;\n\n constructor(\n private readonly iconService: IconService,\n private readonly taskService: TaskService,\n private readonly cdsThemeService: CdsThemeService\n ) {\n this.iconService.registerAll([CalendarAdd16]);\n }\n\n public onDateValueChange(value: Date[]): void {\n const date = Array.isArray(value) && value[0];\n if (!date) return;\n this.selectedDateString$.next(date.toISOString());\n }\n\n public onSubmitButtonClick(): void {\n this.disabled$.next(true);\n\n this.taskService.setTaskDueDate(this._task.id, {dueDate: this._selectedDateString}).subscribe({\n next: () => {\n this.disabled$.next(false);\n this.hasDueDate$.next(true);\n this._task$.next({...this._task, due: this._selectedDateString});\n this.selectedDateString$.next('');\n this.closeToggletip();\n },\n error: () => {\n this.disabled$.next(false);\n },\n });\n }\n\n public onRemoveButtonClick(): void {\n this.disabled$.next(true);\n\n this.taskService.removeTaskDueDate(this._task.id).subscribe({\n next: () => {\n this.disabled$.next(false);\n this.hasDueDate$.next(false);\n this._task$.next({...this._task, due: null});\n },\n error: () => {\n this.disabled$.next(false);\n },\n });\n }\n\n private closeToggletip(): void {\n // needed to reliably trigger toggle tip closure\n this.open$.next(true);\n setTimeout(() => this.open$.next(false));\n }\n\n public onMouseEnterDueDate(): void {\n this.mouseIsOverDueDate$.next(true);\n }\n\n public onMouseLeaveDueDate(): void {\n this.mouseIsOverDueDate$.next(false);\n }\n}\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<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 } 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 ? obs.hasDueDate && !obs.mouseIsOverDueDate : obs.hasDueDate,\n }\"\n >\n <span class=\"bold\">{{ 'setTaskDueDate.dueDateText' | translate }}</span>\n\n \n\n {{ obs.taskDueDate | date: 'dd-MM-yyyy' }}\n </div>\n\n <button\n *ngIf=\"obs.canModifyTask\"\n cdsButton=\"ghost\"\n class=\"element remove-button\"\n [ngClass]=\"{active: obs.hasDueDate && obs.mouseIsOverDueDate}\"\n [disabled]=\"obs.disabled\"\n size=\"sm\"\n (click)=\"onRemoveButtonClick()\"\n >\n {{ 'setTaskDueDate.removeButtonText' | translate }}\n </button>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !obs.hasDueDate}\"\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\n cdsToggletipContent\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"assign-due-date-popover-content\"\n >\n <cds-date-picker\n *ngIf=\"!obs.hasDueDate\"\n [cdsLayer]=\"1\"\n [label]=\"'Select date'\"\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 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","/*\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 */\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonModalSize} from '@valtimo/components';\nimport {SseService} from '@valtimo/sse';\nimport {FormSize, formSizeToCarbonModalSizeMap, TaskWithProcessLink} from '@valtimo/process-link';\nimport moment from 'moment';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {IntermediateSubmission, Task, TaskUpdateSseEvent} from '../../models';\nimport {TaskIntermediateSaveService} from '../../services';\nimport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n} from '../../task-permissions';\nimport {TaskDetailIntermediateSaveComponent} from '../task-detail-intermediate-save/task-detail-intermediate-save.component';\nimport {filter, take} from 'rxjs/operators';\nimport {IconService} from 'carbon-components-angular';\nimport {DocumentService} from '@valtimo/document';\nimport {TaskService} from '../../services/task.service';\nimport {FolderDetailsReference16} from '@carbon/icons';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n selector: 'valtimo-task-detail-modal',\n templateUrl: './task-detail-modal.component.html',\n styleUrls: ['./task-detail-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TaskDetailModalComponent implements OnInit, OnDestroy {\n @ViewChild(TaskDetailIntermediateSaveComponent)\n private readonly _intermediateSaveComponent: TaskDetailIntermediateSaveComponent;\n\n @Output() formSubmit = new EventEmitter();\n @Output() assignmentOfTaskChanged = new EventEmitter();\n\n @Input() set modalSize(value: FormSize) {\n if (value) this.size$.next(formSizeToCarbonModalSizeMap[value]);\n }\n\n @Input() set openFromCaseManagement(value: boolean) {\n if (value) this.openFromCaseManagement$.next(value);\n }\n\n public currentIntermediateSave$ = new BehaviorSubject<IntermediateSubmission | null>(null);\n\n public readonly processLinkPreloaded$ = new BehaviorSubject<boolean>(false);\n public readonly task$ = new BehaviorSubject<Task | null>(null);\n public readonly taskAndProcessLink$ = new BehaviorSubject<TaskWithProcessLink | null>(null);\n public readonly task = new BehaviorSubject<Task | null>(null);\n public readonly submission$ = new BehaviorSubject<any>({});\n public readonly page$ = new BehaviorSubject<any>(null);\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly businessKey$ = new BehaviorSubject<string>('');\n\n public readonly size$ = new BehaviorSubject<CarbonModalSize>('md');\n public readonly openFromCaseManagement$ = new BehaviorSubject<boolean>(false);\n\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false);\n public readonly canModifyTask$ = new BehaviorSubject<boolean>(false);\n\n public readonly modalCloseEvent$ = new BehaviorSubject<boolean>(false);\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly permissionService: PermissionService,\n private readonly logger: NGXLogger,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly sseService: SseService,\n private readonly cdr: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly documentService: DocumentService,\n private readonly taskService: TaskService,\n ) {\n this.iconService.registerAll([FolderDetailsReference16]);\n }\n\n public ngOnInit(): void {\n this.openTaskSubscription();\n this.openTaskUpdateSseEventSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openRelatedCase(): void {\n const businessKey = this.businessKey$.getValue();\n\n this.documentService\n .getDocument(businessKey)\n .pipe(take(1))\n .subscribe(document => {\n window.open(`/cases/${document.definitionId?.name}/document/${businessKey}`, '_blank');\n });\n }\n\n private openTaskSubscription(): void {\n this._subscriptions.add(\n this.task$.subscribe(task => {\n if (task) {\n this.logger.debug('Checking if user allowed to assign a user to Task with id:', task.id);\n this.businessKey$.next(task.businessKey);\n\n this.permissionService\n .requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n })\n .subscribe((allowed: boolean) => {\n this.canAssignUserToTask$.next(allowed);\n });\n\n this.permissionService\n .requestPermission(CAN_MODIFY_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n })\n .subscribe((allowed: boolean) => {\n this.canModifyTask$.next(allowed);\n });\n } else {\n this.logger.debug('Reset is user allowed to assign a user to Task as task is null');\n this.canAssignUserToTask$.next(false);\n }\n })\n );\n }\n\n private openTaskUpdateSseEventSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.task$,\n this.sseService.getSseEventObservable<TaskUpdateSseEvent>('TASK_UPDATE'),\n ])\n .pipe(filter(([task, event]) => task?.id === event.taskId))\n .subscribe(() => this.closeModal())\n );\n }\n\n public clearCurrentProgress(): void {\n this._intermediateSaveComponent.clearCurrentProgress();\n }\n\n public openTaskDetails(task: Task | null): void {\n this.task$.next({...task});\n this.page$.next({\n title: task?.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${task?.created}`,\n });\n\n this.openModal();\n }\n\n public openTaskAndProcessLinkDetails(taskWithProcessLink: TaskWithProcessLink | null): void {\n this.processLinkPreloaded$.next(true);\n this.taskAndProcessLink$.next(taskWithProcessLink);\n this.task$.next({...(taskWithProcessLink.task as any)});\n this.page$.next({\n title: taskWithProcessLink.task?.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${taskWithProcessLink.task?.created}`,\n });\n\n this.openModal();\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeModal();\n this.router.navigate(['process-links']);\n }\n\n public onCurrentIntermediateSaveEvent(value: IntermediateSubmission | null): void {\n this.currentIntermediateSave$.next(value);\n }\n\n public onFormSubmit(): void {\n this.formSubmit.emit();\n }\n\n public onShowModalEvent(): void {\n this.showConfirmationModal$.next(true);\n }\n\n public closeModal(): void {\n this.modalOpen$.next(false);\n this.taskIntermediateSaveService.setSubmission({});\n this.modalCloseEvent$.next(!this.modalCloseEvent$.getValue());\n }\n\n private openModal(): void {\n this.modalOpen$.next(false);\n\n setTimeout(() => {\n this.modalOpen$.next(true);\n this.cdr.detectChanges();\n });\n }\n}\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\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 ></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 ></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-assign-user-to-task\n *ngIf=\"obs.task && assignmentOfTaskChanged\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n [canAssignUserToTask]=\"obs.canAssignUserToTask\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n ></valtimo-set-task-due-date>\n </div>\n</ng-template>\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\nimport {CarbonListNoResultsMessage} from '@valtimo/components';\n\nconst TASK_LIST_NO_SEARCH_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'task-list.noSearchResultsDescription',\n isSearchResult: true,\n title: 'task-list.noSearchResultsTitle',\n};\n\nexport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE};\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\nexport * from './task-list.constants';\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\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TaskService} from '../../services/task.service';\nimport moment from 'moment';\nimport {\n MappedSpecifiedTask,\n SpecifiedTask,\n Task,\n TaskListOtherFilters,\n TaskListParams,\n TaskPageParams,\n} from '../../models';\nimport {TaskDetailModalComponent} from '../task-detail-modal/task-detail-modal.component';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n of,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n ConfigService,\n Page,\n SearchField,\n SearchFieldValues,\n SortState,\n TaskListTab,\n} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {SseService} from '@valtimo/sse';\nimport {distinctUntilChanged, filter, map, take} from 'rxjs/operators';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n CAN_VIEW_CASE_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n} from '../../task-permissions';\nimport {\n TaskListColumnService,\n TaskListPaginationService,\n TaskListQueryParamService,\n TaskListSearchService,\n TaskListService,\n} from '../../services';\nimport {isEqual} from 'lodash';\nimport {ListItem} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TaskListSortService} from '../../services/task-list-sort.service';\nimport {CarbonListNoResultsMessage, PageTitleService} from '@valtimo/components';\nimport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE} from '../../constants';\nimport {TaskUpdateSseEvent} from '../../models';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n selector: 'valtimo-task-list',\n templateUrl: './task-list.component.html',\n styleUrls: ['./task-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TaskListService,\n TaskListColumnService,\n TaskListPaginationService,\n TaskListSortService,\n TaskListSearchService,\n TaskListQueryParamService,\n ],\n})\nexport class TaskListComponent implements OnInit, OnDestroy {\n @ViewChild('taskDetail') private readonly _taskDetail: TaskDetailModalComponent;\n\n @HostListener('window:popstate', ['$event'])\n private onPopState() {\n setTimeout(() => {\n this.setParamsFromQueryParams();\n });\n }\n\n public readonly ALL_CASES_ID = this.taskListService.ALL_CASES_ID;\n\n public readonly selectedTaskType$ = this.taskListService.selectedTaskType$;\n\n private readonly _overrideNoResultsMessage$ =\n new BehaviorSubject<CarbonListNoResultsMessage | null>(null);\n\n public readonly noResultsMessage$: Observable<CarbonListNoResultsMessage> = combineLatest([\n this.selectedTaskType$,\n this._overrideNoResultsMessage$,\n ]).pipe(\n map(\n ([selectedTaskType, overrideNoResultsMessage]) =>\n overrideNoResultsMessage || {\n title: 'task-list.' + selectedTaskType + '.noResultsTitle',\n description: 'task-list.' + selectedTaskType + '.noResultsDescription',\n isSearchResult: false,\n }\n )\n );\n\n public readonly fields$ = this.taskListColumnService.fields$;\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n public readonly visibleTabs$ = new BehaviorSubject<Array<TaskListTab> | null>(null);\n\n private _enableLoadingAnimation$ = new BehaviorSubject<boolean>(true);\n\n public readonly cachedTasks$ = new BehaviorSubject<Task[] | MappedSpecifiedTask[] | null>(null);\n\n public readonly paginationForCurrentTaskTypeForList$ =\n this.taskListPaginationService.paginationForCurrentTaskTypeForList$;\n\n public readonly sortStateForCurrentTaskType$ =\n this.taskListSortService.sortStateForCurrentTaskType$;\n\n public readonly overrideSortState$ = this.taskListSortService.overrideSortState$;\n\n private readonly _reload$ = new BehaviorSubject<boolean>(true);\n\n public readonly caseDefinitionKey$ = this.taskListService.caseDefinitionKey$;\n\n public readonly tasks$: Observable<Task[] | MappedSpecifiedTask[]> = combineLatest([\n this.taskListService.loadingStateForCaseDefinition$,\n this.selectedTaskType$,\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListSortService.sortStringForCurrentTaskType$,\n this.caseDefinitionKey$,\n this._enableLoadingAnimation$,\n this._reload$,\n this.taskListSearchService.otherFilters$,\n this.taskListSortService.overrideSortStateString$,\n ]).pipe(\n filter(([loadingStateForCaseDefinition]) => loadingStateForCaseDefinition === false),\n map(\n ([\n _,\n selectedTaskType,\n paginationForSelectedTaskType,\n sortStringForSelectedTaskType,\n caseDefinitionKey,\n enableLoadingAnimation,\n reload,\n otherFilters,\n overrideSortStateString,\n ]) =>\n this.getTaskListParams(\n paginationForSelectedTaskType,\n overrideSortStateString || sortStringForSelectedTaskType,\n selectedTaskType,\n caseDefinitionKey,\n enableLoadingAnimation,\n reload,\n otherFilters\n )\n ),\n distinctUntilChanged((previous, current) => isEqual(previous.params, current.params)),\n tap(params => {\n if (params.enableLoadingAnimation) this.loadingTasks$.next(true);\n this.taskListQueryParamService.setTaskListParams(params.params);\n }),\n switchMap(({params}) =>\n combineLatest([\n this.taskService.queryTasksPageV3(\n params.selectedTaskType,\n params.params,\n params.caseDefinitionKey,\n params.otherFilters\n ),\n of(!!params.caseDefinitionKey),\n ])\n ),\n switchMap(([tasksResult, isSpecified]) =>\n this.getTaskListPermissionsRequest(tasksResult, isSpecified)\n ),\n map(([isSpecified, taskResult, canViewTaskPermissions, canViewCasePermissions]) => {\n this.updateTaskListPaginationAfterResponse(Number(taskResult.totalElements));\n\n return this.mapTasksForList(\n isSpecified,\n taskResult,\n canViewTaskPermissions,\n canViewCasePermissions\n );\n }),\n tap(tasks => {\n this.cachedTasks$.next(tasks);\n this.loadingTasks$.next(false);\n this.disableLoadingAnimation();\n\n this.taskListSearchService.otherFilters$.pipe(take(1)).subscribe(otherFilters => {\n this._overrideNoResultsMessage$.next(\n otherFilters?.length > 0 ? TASK_LIST_NO_SEARCH_RESULTS_MESSAGE : null\n );\n });\n })\n );\n\n public readonly loadingCaseListItems$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedCaseDefinitionId$ = new BehaviorSubject<string>(this.ALL_CASES_ID);\n\n public readonly caseListItems$: Observable<ListItem[]> = combineLatest([\n this.documentService.getAllDefinitions(),\n this._selectedCaseDefinitionId$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([documentDefinitionRes, selectedCaseDefinitionId]) => [\n {\n content: this.translateService.instant('task-list.allCases'),\n id: this.ALL_CASES_ID,\n selected: selectedCaseDefinitionId === this.ALL_CASES_ID,\n },\n ...documentDefinitionRes.content.map(documentDefinition => ({\n id: documentDefinition.id.name,\n content: documentDefinition?.schema?.title,\n selected: documentDefinition.id.name === selectedCaseDefinitionId,\n })),\n ]),\n tap(() => this.loadingCaseListItems$.next(false))\n );\n\n public readonly taskListColumnsForCase$ = this.taskListColumnService.taskListColumnsForCase$;\n\n public readonly loadingSearchFields$ = this.taskListSearchService.loadingSearchFields$;\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListSearchService.searchFields$;\n\n private readonly _DEFAULT_TASK_LIST_TABS: TaskListTab[] = [\n TaskListTab.MINE,\n TaskListTab.OPEN,\n TaskListTab.ALL,\n ];\n\n public readonly setSearchFieldValuesSubject$ = new BehaviorSubject<SearchFieldValues>({});\n public readonly clearSearchFieldValuesSubject$ = new Subject<null>();\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly permissionService: PermissionService,\n private readonly router: Router,\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly translateService: TranslateService,\n private readonly taskListColumnService: TaskListColumnService,\n private readonly taskListPaginationService: TaskListPaginationService,\n private readonly taskListSortService: TaskListSortService,\n private readonly taskListSearchService: TaskListSearchService,\n private readonly taskListQueryParamService: TaskListQueryParamService,\n private readonly pageTitleService: PageTitleService,\n private readonly sseService: SseService\n ) {}\n\n public ngOnInit(): void {\n this.taskListColumnService.resetTaskListFields();\n this.setVisibleTabs();\n this.pageTitleService.disableReset();\n this.setParamsFromQueryParams();\n this.openTaskUpdateSseEventSubscription();\n }\n\n private openTaskUpdateSseEventSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.sseService.getSseEventObservable<TaskUpdateSseEvent>('TASK_UPDATE'),\n this.caseDefinitionKey$,\n ])\n .pipe(\n filter(\n ([event, caseDefinitionKey]) =>\n caseDefinitionKey === null || event.caseDefinitionKey === caseDefinitionKey\n )\n )\n .subscribe(() => this.reload())\n );\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this._subscriptions.unsubscribe();\n }\n\n public paginationClicked(page: number, type: TaskListTab | string): void {\n this.taskListPaginationService.updateTaskPagination(type as TaskListTab, {page: page - 1});\n }\n\n public paginationSet(newSize: number): void {\n combineLatest([\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListService.selectedTaskType$,\n ])\n .pipe(take(1))\n .subscribe(([pagination, selectedTaskType]) => {\n this.taskListPaginationService.updateTaskPagination(selectedTaskType, {\n size: Number(newSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n pagination.page,\n Number(newSize),\n pagination.collectionSize\n ),\n });\n });\n }\n\n public tabChange(tab: TaskListTab | string): void {\n this.taskListService.selectedTaskType$.pipe(take(1)).subscribe(selectedTaskType => {\n if (selectedTaskType !== tab) {\n this.enableLoadingAnimation();\n this.taskListService.setSelectedTaskType(tab as TaskListTab);\n this.taskListPaginationService.updateTaskPagination(tab as TaskListTab, {page: 0});\n }\n });\n }\n\n public openRelatedCase(event: MouseEvent, index: number): void {\n event.stopPropagation();\n\n this.cachedTasks$.pipe(take(1)).subscribe(cachedTasks => {\n const currentTask = cachedTasks && cachedTasks[index];\n\n if (currentTask && !currentTask.caseLocked) {\n this.documentService\n .getDocument(currentTask.businessKey)\n .pipe(take(1))\n .subscribe(document => {\n this.router.navigate([\n `/cases/${document.definitionId?.name}/document/${currentTask.businessKey}`,\n ]);\n });\n }\n });\n }\n\n public rowOpenTaskClick(task): void | boolean {\n return !task.endTime && !task.locked ? this._taskDetail.openTaskDetails(task) : false;\n }\n\n public sortChanged(sortState: SortState): void {\n this.taskListSortService.setOverrideSortState(sortState);\n this.taskListSortService.updateSortState(this.taskListService.selectedTaskType, sortState);\n }\n\n public setCaseDefinition(definition: {item: {id: string}}): void {\n if (definition.item.id) {\n this.taskListSortService.resetOverrideSortState();\n this.loadingTasks$.next(true);\n this.taskListService.setCaseDefinitionKey(definition.item.id);\n }\n }\n\n public reload(): void {\n this.enableLoadingAnimation();\n this._reload$.next(!this._reload$.getValue());\n }\n\n public search(searchFieldValues: SearchFieldValues): void {\n if (!searchFieldValues) return;\n\n this.taskListSearchService.setSearchFieldValues(searchFieldValues);\n }\n\n private updateTaskListPaginationAfterResponse(newCollectionSize: number): void {\n this.taskListPaginationService.paginationForCurrentTaskType$\n .pipe(take(1))\n .subscribe(currentPagination => {\n this.taskListPaginationService.updateTaskPagination(this.taskListService.selectedTaskType, {\n collectionSize: Number(newCollectionSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n currentPagination.page,\n currentPagination.size,\n newCollectionSize\n ),\n });\n });\n }\n\n private setVisibleTabs(): void {\n const visibleTabs = this.configService.config?.visibleTaskListTabs;\n\n if (visibleTabs) {\n this.visibleTabs$.next(visibleTabs);\n this.taskListService.setSelectedTaskType(visibleTabs[0]);\n } else {\n this.visibleTabs$.next(this._DEFAULT_TASK_LIST_TABS);\n this.taskListService.setSelectedTaskType(this._DEFAULT_TASK_LIST_TABS[0]);\n }\n }\n\n private disableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(false);\n }\n\n private enableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(true);\n }\n\n private getTaskListParams(\n paginationForSelectedTaskType: TaskPageParams,\n sortStringForSelectedTaskType: string,\n selectedTaskType: TaskListTab,\n caseDefinitionKey: string,\n enableLoadingAnimation: boolean,\n reload: boolean,\n otherFilters?: TaskListOtherFilters\n ): TaskListParams {\n const params = {\n ...paginationForSelectedTaskType,\n ...(sortStringForSelectedTaskType && {sort: sortStringForSelectedTaskType}),\n };\n\n delete params.collectionSize;\n\n return {\n params: {\n reload,\n selectedTaskType,\n params,\n ...(caseDefinitionKey &&\n caseDefinitionKey !== this.ALL_CASES_ID && {caseDefinitionKey: caseDefinitionKey}),\n ...(otherFilters && {otherFilters}),\n },\n enableLoadingAnimation,\n };\n }\n\n private getTaskListPermissionsRequest(\n tasksResult: Page<Task> | Page<SpecifiedTask>,\n isSpecified: boolean\n ) {\n const taskResults = tasksResult.content;\n const hasTaskResults = Array.isArray(taskResults) && taskResults.length > 0;\n\n return combineLatest([\n of(isSpecified),\n of(tasksResult),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: !isSpecified ? (task as Task).id : (task as SpecifiedTask).id,\n })\n )\n )\n : of(null),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: task.businessKey,\n })\n )\n )\n : of(null),\n ]);\n }\n\n private mapTasksForList(\n isSpecified: boolean,\n tasks: Page<Task> | Page<SpecifiedTask>,\n canViewTaskPermissions: boolean[] | null,\n canViewCasePermissions: boolean[] | null\n ): Task[] | MappedSpecifiedTask[] {\n const MOMENT_FORMAT = 'DD MMM YYYY HH:mm';\n\n if (isSpecified) {\n return (tasks as Page<SpecifiedTask>).content.map((specifiedTask, specifiedTaskIndex) =>\n specifiedTask.items.reduce(\n (acc, curr) =>\n ({\n id: specifiedTask.id,\n businessKey: specifiedTask.businessKey,\n processInstanceId: specifiedTask.processInstanceId,\n name: specifiedTask.name,\n ...(moment(specifiedTask.created).isValid() && {\n created: moment(specifiedTask.created).format(MOMENT_FORMAT),\n }),\n ...(canViewTaskPermissions && {locked: !canViewTaskPermissions[specifiedTaskIndex]}),\n ...(canViewCasePermissions && {\n caseLocked: !canViewCasePermissions[specifiedTaskIndex],\n }),\n ...acc,\n [curr.key]: curr.value,\n }) as MappedSpecifiedTask,\n {}\n )\n ) as MappedSpecifiedTask[];\n }\n\n return (tasks as Page<Task>)?.content?.map((task, taskIndex) => {\n const createdDate = moment(task.created);\n const dueDate = moment(task.due);\n const taskCopy = {...task};\n\n if (task.due && dueDate.isValid()) taskCopy.due = dueDate.format(MOMENT_FORMAT);\n if (createdDate.isValid()) taskCopy.created = createdDate.format(MOMENT_FORMAT);\n if (canViewTaskPermissions) taskCopy.locked = !canViewTaskPermissions[taskIndex];\n if (canViewCasePermissions) taskCopy.caseLocked = !canViewCasePermissions[taskIndex];\n\n return taskCopy;\n }) as Task[];\n }\n\n private setParamsFromQueryParams(): void {\n const decodedParams = this.taskListQueryParamService.getTaskListQueryParams();\n\n if (decodedParams.caseDefinitionKey) {\n this.taskListService.setCaseDefinitionKey(decodedParams.caseDefinitionKey);\n this._selectedCaseDefinitionId$.next(decodedParams.caseDefinitionKey);\n }\n\n if (decodedParams.otherFilters?.length > 0) {\n const searchFieldValues = this.taskListSearchService.mapOtherFilterToSearchValues(\n decodedParams.otherFilters\n );\n this.setSearchFieldValuesSubject$.next(searchFieldValues);\n } else {\n this.clearSearchFieldValuesSubject$.next(null);\n }\n\n if (decodedParams.selectedTaskType)\n this.taskListService.setSelectedTaskType(decodedParams.selectedTaskType);\n\n if (decodedParams.params?.sort) {\n const stateFromSortString = this.taskListSortService.getSortStateFromSortString(\n decodedParams.params.sort\n );\n if (stateFromSortString) this.taskListSortService.setOverrideSortState(stateFromSortString);\n }\n\n if (decodedParams.params)\n this.taskListPaginationService.updateTaskPagination(\n this.taskListService.selectedTaskType,\n decodedParams.params\n );\n }\n}\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\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 ></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 #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","/*\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\nimport {User} from '@valtimo/shared';\n\ninterface Task {\n assignee: string;\n caseDefinitionId: string;\n caseExecutionId: string;\n caseInstanceId: string;\n created: string;\n delegationState: any;\n description: string;\n due: string;\n executionId: string;\n followUp: any;\n formKey: string;\n formless: boolean;\n id: string;\n listItemFields: ListItemField[];\n name: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n suspended: boolean;\n taskDefinitionKey: string;\n tenantId: string;\n formLocation: string;\n businessKey: string;\n processDefinitionKey: string;\n valtimoAssignee: User;\n locked?: boolean;\n caseLocked?: boolean;\n}\n\ninterface ListItemField {\n key: string;\n value: string;\n label: string;\n}\n\ninterface AssigneeRequest {\n assignee: string;\n}\n\ninterface SpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created: Date;\n items: {key: string; value: any}[];\n}\n\ninterface MappedSpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created?: string;\n locked?: boolean;\n caseLocked?: boolean;\n [key: string]: any;\n}\n\ninterface SetTaskDueDateRequest {\n dueDate: string | null;\n}\n\nexport {\n AssigneeRequest,\n ListItemField,\n Task,\n SpecifiedTask,\n MappedSpecifiedTask,\n SetTaskDueDateRequest,\n};\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\nimport {FormDefinition} from '@valtimo/form-management';\n\nexport interface TaskDefinition {\n id: string;\n name: string;\n formDefinition: FormDefinition | null;\n}\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\nimport {ListItem} from 'carbon-components-angular';\nimport {SearchFilter, SearchFilterRange, TaskListTab} from '@valtimo/shared';\n\ninterface TaskPageParams {\n page: number;\n size: number;\n collectionSize?: number;\n sort?: string;\n}\n\nenum TaskListColumnDefaultSort {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\ninterface TaskListColumnEnum {\n [key: string]: string;\n}\n\ninterface TaskListColumnDisplayTypeParameters {\n enum?: TaskListColumnEnum;\n dateFormat?: string;\n}\n\ninterface TaskListColumnDisplayType {\n type: string;\n displayTypeParameters?: TaskListColumnDisplayTypeParameters;\n}\n\ninterface TaskListColumn {\n title?: string;\n key: string;\n path: string;\n displayType: TaskListColumnDisplayType;\n sortable: boolean;\n defaultSort?: TaskListColumnDefaultSort;\n order?: number;\n}\n\ntype TaskListColumnModalType = 'edit' | 'add';\n\ntype TaskListColumnModalCloseEvent = 'close' | 'refresh';\n\ninterface TaskListColumnListItem extends ListItem {\n key: string;\n}\n\ntype TaskListOtherFilters = Array<SearchFilter | SearchFilterRange>;\n\ninterface TaskListQueryParams {\n selectedTaskType: TaskListTab;\n params: TaskPageParams;\n caseDefinitionKey?: string;\n otherFilters?: TaskListOtherFilters;\n}\n\ninterface TaskListEncodedQueryParams {\n selectedTaskType: TaskListTab;\n params: string;\n caseDefinitionName?: string;\n otherFilters?: string;\n}\n\ninterface TaskListQueryParamsWithReload extends TaskListQueryParams {\n reload: boolean;\n}\n\ninterface TaskListParams {\n params: TaskListQueryParamsWithReload;\n enableLoadingAnimation: boolean;\n}\n\nexport {\n TaskListColumn,\n TaskListColumnDisplayType,\n TaskListColumnDefaultSort,\n TaskListColumnModalType,\n TaskListColumnListItem,\n TaskListColumnModalCloseEvent,\n TaskListColumnDisplayTypeParameters,\n TaskListColumnEnum,\n TaskPageParams,\n TaskListParams,\n TaskListOtherFilters,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n TaskListEncodedQueryParams,\n};\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\nexport interface IntermediateSubmission {\n submission: object;\n taskInstanceId: string;\n createdBy: string;\n createdOn: string;\n editedBy?: string;\n editedOn?: string;\n}\n\nexport interface IntermediateSaveRequest {\n submission: object;\n taskInstanceId: string;\n}\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\nenum TaskListSearchFieldDataType {\n TEXT = 'text',\n NUMBER = 'number',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n BOOLEAN = 'boolean',\n}\n\nenum TaskListSearchFieldFieldType {\n SINGLE = 'single',\n RANGE = 'range',\n SINGLE_SELECT_DROPDOWN = 'single_select_dropdown',\n MULTI_SELECT_DROPDOWN = 'multi_select_dropdown',\n}\n\nenum TaskListSearchFieldMatchType {\n LIKE = 'like',\n EXACT = 'exact',\n}\n\nenum TaskListSearchDropdownDataProvider {\n DATABASE = 'dropdownDatabaseDataProvider',\n JSON = 'dropdownJsonFileDataProvider',\n}\n\ninterface TaskListSearchField {\n id: string;\n ownerId: string;\n dataType: TaskListSearchFieldDataType;\n fieldType: TaskListSearchFieldFieldType;\n key: string;\n title?: string;\n path: string;\n order: number;\n matchType: TaskListSearchFieldMatchType;\n dropdownDataProvider?: string;\n dropdownValues?: TaskListSearchDropdownValue;\n}\n\ninterface TaskListSearchDropdownValue {\n [key: string]: string;\n}\n\nexport {\n TaskListSearchDropdownDataProvider,\n TaskListSearchFieldDataType,\n TaskListSearchFieldFieldType,\n TaskListSearchFieldMatchType,\n TaskListSearchField,\n TaskListSearchDropdownValue,\n};\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\nimport {BaseSseEvent} from '@valtimo/sse';\n\ninterface TaskUpdateSseEvent extends BaseSseEvent {\n taskId: string;\n documentId: string;\n caseDefinitionKey: string;\n}\n\nexport {TaskUpdateSseEvent};\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\nexport * from './task.model';\nexport * from './task-definition.model';\nexport * from './task-list.model';\nexport * from './task-intermediate-save.model';\nexport * from './task-list-search-field.model';\nexport * from './task-sse-event.model';\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\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {ROLE_USER} from '@valtimo/shared';\n\nconst routes: Routes = [\n {\n path: 'tasks',\n component: TaskListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Tasks', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TaskRoutingModule {}\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 */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n CamundaFormModule,\n CarbonListModule,\n ConfirmationModalModule,\n FormIoModule,\n PageHeaderModule,\n RenderInPageHeaderDirective,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n SpinnerModule,\n ValtimoCdsModalDirective,\n WidgetModule,\n TooltipModule as ValtimoTooltipModule\n} from '@valtimo/components';\nimport {HttpLoaderFactory} from '@valtimo/shared';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {\n ButtonModule,\n ContentSwitcherModule,\n DropdownModule,\n IconModule,\n LinkModule,\n ModalModule,\n TabsModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {AssignUserToTaskComponent} from './components/assign-user-to-task/assign-user-to-task.component';\nimport {SetTaskDueDateComponent} from './components/set-task-due-date/set-task-due-date.component';\nimport {TaskDetailContentComponent} from './components/task-detail-content/task-detail-content.component';\nimport {TaskDetailIntermediateSaveComponent} from './components/task-detail-intermediate-save/task-detail-intermediate-save.component';\nimport {TaskDetailModalComponent} from './components/task-detail-modal/task-detail-modal.component';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {TaskRoutingModule} from './task-routing.module';\n\n@NgModule({\n declarations: [TaskListComponent, TaskDetailModalComponent],\n imports: [\n CommonModule,\n TaskRoutingModule,\n CarbonListModule,\n PageHeaderModule,\n WidgetModule,\n SpinnerModule,\n SearchableDropdownSelectModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n FormsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n NgbModule,\n FormIoModule,\n ModalModule,\n LinkModule,\n ProcessLinkModule,\n TabsModule,\n ContentSwitcherModule,\n RenderInPageHeaderDirective,\n DropdownModule,\n ButtonModule,\n IconModule,\n TooltipModule,\n ValtimoTooltipModule,\n ConfirmationModalModule,\n SearchFieldsModule,\n AssignUserToTaskComponent,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n SetTaskDueDateComponent,\n ValtimoCdsModalDirective,\n ],\n exports: [TaskListComponent, TaskDetailModalComponent],\n})\nexport class TaskModule {}\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\n/*\n * Public API Surface of task\n */\n\nexport * from './lib/components/assign-user-to-task/assign-user-to-task.component';\nexport * from './lib/components/task-detail-content/task-detail-content.component';\nexport * from './lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component';\nexport * from './lib/components/task-detail-modal/task-detail-modal.component';\nexport * from './lib/components/task-list/task-list.component';\nexport * from './lib/components/set-task-due-date/set-task-due-date.component';\nexport * from './lib/constants';\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/services/task.service';\nexport * from './lib/task-permissions';\nexport * from './lib/task.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1.TaskService","i2.TaskListService","i3.TaskListSortService","i1.TaskListService","map","i1","i3.TaskService","take","filter","i3","i5","i6","i4","i8","i9.TaskIntermediateSaveService","i9.TaskService","i11","i3.TaskIntermediateSaveService","i2.TaskService","i5.TaskIntermediateSaveService","i7","i10","i12.AssignUserToTaskComponent","i13.TaskDetailContentComponent","i14.TaskDetailIntermediateSaveComponent","i15.SetTaskDueDateComponent","distinctUntilChanged","i5.TaskService","i6.TaskListService","i6.TaskListColumnService","i6.TaskListPaginationService","i8.TaskListSortService","i6.TaskListSearchService","i6.TaskListQueryParamService","i13","i15.TaskDetailModalComponent","TooltipModule","ValtimoTooltipModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-task.mjs","sources":["../../../../projects/valtimo/task/src/lib/services/task.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-sort.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-column.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-pagination.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-search.service.ts","../../../../projects/valtimo/task/src/lib/services/task-list-query-param.service.ts","../../../../projects/valtimo/task/src/lib/services/task-intermediate-save.service.ts","../../../../projects/valtimo/task/src/lib/services/index.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.ts","../../../../projects/valtimo/task/src/lib/components/assign-user-to-task/assign-user-to-task.component.html","../../../../projects/valtimo/task/src/lib/task-permissions.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-content/task-detail-content.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-content/task-detail-content.component.html","../../../../projects/valtimo/task/src/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.html","../../../../projects/valtimo/task/src/lib/components/set-task-due-date/set-task-due-date.component.ts","../../../../projects/valtimo/task/src/lib/components/set-task-due-date/set-task-due-date.component.html","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.ts","../../../../projects/valtimo/task/src/lib/components/task-detail-modal/task-detail-modal.component.html","../../../../projects/valtimo/task/src/lib/constants/task-list.constants.ts","../../../../projects/valtimo/task/src/lib/constants/index.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.ts","../../../../projects/valtimo/task/src/lib/components/task-list/task-list.component.html","../../../../projects/valtimo/task/src/lib/models/task.model.ts","../../../../projects/valtimo/task/src/lib/models/task-definition.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list.model.ts","../../../../projects/valtimo/task/src/lib/models/task-intermediate-save.model.ts","../../../../projects/valtimo/task/src/lib/models/task-list-search-field.model.ts","../../../../projects/valtimo/task/src/lib/models/task-sse-event.model.ts","../../../../projects/valtimo/task/src/lib/models/index.ts","../../../../projects/valtimo/task/src/lib/task-routing.module.ts","../../../../projects/valtimo/task/src/lib/task.module.ts","../../../../projects/valtimo/task/src/public_api.ts","../../../../projects/valtimo/task/src/valtimo-task.ts"],"sourcesContent":["/*\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\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n AssigneeRequest,\n SetTaskDueDateRequest,\n SpecifiedTask,\n Task,\n TaskListColumn,\n TaskListOtherFilters,\n TaskListSearchField,\n TaskPageParams,\n} from '../models';\nimport {\n BaseApiService,\n ConfigService,\n CustomTaskList,\n InterceptorSkip,\n NamedUser,\n Page,\n TaskListTab,\n} from '@valtimo/shared';\nimport {TaskProcessLinkResult} from '@valtimo/process-link';\n\n@Injectable({providedIn: 'root'})\nexport class TaskService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public queryTasks(params?: any): Observable<HttpResponse<Array<Task>>> {\n return this.httpClient.get<Array<Task>>(this.getApiUrl('/v1/task'), {\n observe: 'response',\n params,\n });\n }\n\n public queryTasksPage(params?: any): Observable<Page<Task>> {\n return this.httpClient.get<Page<Task>>(this.getApiUrl('/v2/task'), {\n params,\n });\n }\n\n public queryTasksPageV3(\n assigneeFilter: TaskListTab = TaskListTab.ALL,\n pageParams: TaskPageParams,\n caseDefinitionKey?: string,\n otherFilters?: TaskListOtherFilters\n ): Observable<Page<Task> | Page<SpecifiedTask>> {\n let httpParams = new HttpParams().set('page', pageParams.page).set('size', pageParams.size);\n\n if (pageParams.sort) {\n httpParams = httpParams.append('sort', pageParams.sort);\n }\n\n if (caseDefinitionKey && (otherFilters || []).length > 0) {\n return this.searchTasks(httpParams, caseDefinitionKey, otherFilters, assigneeFilter);\n }\n\n httpParams = httpParams.append('filter', assigneeFilter.toUpperCase());\n\n return this.httpClient.post<Page<Task>>(\n this.getApiUrl('/v3/task'),\n {...(caseDefinitionKey && {caseDefinitionKey})},\n {params: httpParams}\n );\n }\n\n private searchTasks(\n params: HttpParams,\n caseDefinitionKey: string,\n otherFilters: TaskListOtherFilters,\n assigneeFilter: TaskListTab = TaskListTab.ALL\n ): Observable<Page<SpecifiedTask>> {\n return this.httpClient.post<Page<SpecifiedTask>>(\n this.getApiUrl(`/v1/document-definition/${caseDefinitionKey}/task/search`),\n {\n caseDefinitionKey,\n assigneeFilter: assigneeFilter.toUpperCase(),\n ...(otherFilters && {otherFilters}),\n },\n {params}\n );\n }\n\n public getTasks(): Observable<Task[]> {\n return this.httpClient.get<Task[]>(this.getApiUrl('/v1/task?filter=all'));\n }\n\n public getTask(id: string): Observable<any> {\n return this.httpClient.get(this.getApiUrl(`/v1/task/${id}`));\n }\n\n public getCandidateUsers(id: string): Observable<NamedUser[]> {\n return this.httpClient.get<NamedUser[]>(this.getApiUrl(`/v2/task/${id}/candidate-user`));\n }\n\n public assignTask(id: string, assigneeRequest: AssigneeRequest): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/assign`), assigneeRequest);\n }\n\n public unassignTask(id: string): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/unassign`), null);\n }\n\n public completeTask(id: string, variables: Map<string, any>): Observable<any> {\n return this.httpClient.post(this.getApiUrl(`/v1/task/${id}/complete`), {\n variables,\n filesToDelete: [],\n });\n }\n\n public getTaskProcessLink(taskId: string): Observable<TaskProcessLinkResult> {\n return this.httpClient.get<TaskProcessLinkResult>(\n this.getApiUrl(`/v2/process-link/task/${taskId}`),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\n );\n }\n\n public getTaskListColumns(caseDefinitionKey: string): Observable<TaskListColumn[]> {\n return this.httpClient.get<TaskListColumn[]>(\n this.getApiUrl(`/v1/case/${caseDefinitionKey}/task-list-column`)\n );\n }\n\n public getConfigCustomTaskList(): CustomTaskList {\n return this.configService.config.customTaskList;\n }\n\n public getTaskListSearchFields(caseDefinitionKey: string): Observable<TaskListSearchField[]> {\n return this.httpClient.get<TaskListSearchField[]>(\n this.getApiUrl(`v1/search/field/TaskListSearchColumns/${caseDefinitionKey}`)\n );\n }\n\n public setTaskDueDate(\n taskId: string,\n setTaskDueDateRequest: SetTaskDueDateRequest\n ): Observable<void> {\n return this.httpClient.post<void>(\n this.getApiUrl(`/v1/task/${taskId}/set-due-date`),\n setTaskDueDateRequest\n );\n }\n\n public removeTaskDueDate(taskId: string): Observable<void> {\n return this.httpClient.post<void>(this.getApiUrl(`/v1/task/${taskId}/set-due-date`), null);\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TaskListTab} from '@valtimo/shared';\n\n@Injectable()\nexport class TaskListService {\n private readonly _ALL_CASES_ID = 'ALL_CASES';\n private readonly _caseDefinitionKey$ = new BehaviorSubject<string | null>(null);\n private readonly _selectedTaskType$ = new BehaviorSubject<TaskListTab>(TaskListTab.MINE);\n private readonly _loadingStateForCaseDefinition$ = new BehaviorSubject<boolean>(false);\n\n public get caseDefinitionKey$(): Observable<string | null> {\n return this._caseDefinitionKey$.asObservable();\n }\n\n public get selectedTaskType$(): Observable<TaskListTab> {\n return this._selectedTaskType$.asObservable();\n }\n\n public get selectedTaskType(): TaskListTab {\n return this._selectedTaskType$.getValue();\n }\n\n public get loadingStateForCaseDefinition$(): Observable<boolean> {\n return this._loadingStateForCaseDefinition$.asObservable();\n }\n\n public get ALL_CASES_ID(): string {\n return this._ALL_CASES_ID;\n }\n\n public setSelectedTaskType(type: TaskListTab): void {\n this._selectedTaskType$.next(type);\n }\n\n public setCaseDefinitionKey(caseDefinitionKey: string): void {\n this._loadingStateForCaseDefinition$.next(true);\n this._caseDefinitionKey$.next(caseDefinitionKey);\n }\n\n public setLoadingStateForCaseDefinition(loading: boolean): void {\n this._loadingStateForCaseDefinition$.next(loading);\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {Direction, SortState, TaskListTab} from '@valtimo/shared';\nimport {TaskService} from './task.service';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListSortService {\n private readonly _overrideSortState$ = new BehaviorSubject<SortState | null>(null);\n\n private readonly _sortState$ = new BehaviorSubject<{[key in TaskListTab]: SortState | null}>({\n [TaskListTab.ALL]: this._defaultSortState,\n [TaskListTab.MINE]: this._defaultSortState,\n [TaskListTab.OPEN]: this._defaultSortState,\n });\n\n private readonly _sortStateForCurrentTaskType$: Observable<SortState> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._sortState$,\n ]).pipe(map(([selectedTaskType, sortStates]) => sortStates[selectedTaskType]));\n\n public get sortStateForCurrentTaskType$(): Observable<SortState> {\n return this._sortStateForCurrentTaskType$;\n }\n\n public get sortStringForCurrentTaskType$(): Observable<string | null> {\n return this.sortStateForCurrentTaskType$.pipe(\n map(sortState => (sortState ? this.getSortString(sortState) : null))\n );\n }\n\n public get overrideSortState$(): Observable<SortState | null> {\n return this._overrideSortState$.asObservable();\n }\n\n public get overrideSortStateString$(): Observable<string | null> {\n return this._overrideSortState$.pipe(map(state => (state ? this.getSortString(state) : null)));\n }\n\n private get _defaultSortState(): SortState | null {\n return this.taskService.getConfigCustomTaskList()?.defaultSortedColumn || null;\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService\n ) {}\n\n public updateSortState(taskType: TaskListTab, updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortState => {\n this._sortState$.next({\n ...sortState,\n [taskType]: {...sortState[taskType], ...updatedSortState},\n });\n });\n }\n\n public updateSortStates(updatedSortState: SortState): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = {...sortStatesCopy[taskType], ...updatedSortState};\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public clearSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = null;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public resetDefaultSortStates(): void {\n this._sortState$.pipe(take(1)).subscribe(sortStates => {\n const sortStatesCopy = {...sortStates};\n\n Object.keys(sortStates).forEach(taskType => {\n sortStatesCopy[taskType] = this._defaultSortState;\n });\n\n this._sortState$.next(sortStatesCopy);\n });\n }\n\n public getSortStateFromSortString(sortString?: string): SortState | null {\n const splitString = sortString && sortString.split(',');\n if (splitString?.length > 1) {\n return {\n isSorting: true,\n state: {\n name: splitString[0],\n direction: splitString[1] as Direction,\n },\n };\n }\n\n return null;\n }\n\n public setOverrideSortState(state: SortState): void {\n this._overrideSortState$.next(state);\n }\n\n public resetOverrideSortState(): void {\n this._overrideSortState$.next(null);\n }\n\n private getSortString(sort: SortState | null): string {\n return `${sort.state.name},${sort.state.direction}`;\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, filter, Observable, switchMap, tap} from 'rxjs';\nimport {TaskService} from './task.service';\nimport {TaskListColumn} from '../models';\nimport {TaskListService} from './task-list.service';\nimport {TaskListSortService} from './task-list-sort.service';\n\n@Injectable()\nexport class TaskListColumnService {\n private readonly _DEFAULT_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'created',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'valtimoAssignee.fullName',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'due',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'context',\n label: `task-list.fieldLabels.context`,\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _DEFAULT_SPECIFIED_TASK_LIST_FIELDS: ColumnConfig[] = [\n {\n key: 'createTime',\n label: `task-list.fieldLabels.created`,\n viewType: ViewType.DATE,\n sortable: true,\n format: 'DD MMM YYYY HH:mm',\n },\n {\n key: 'name',\n label: `task-list.fieldLabels.name`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n {\n key: 'assignee',\n label: `task-list.fieldLabels.valtimoAssignee.fullName`,\n viewType: ViewType.TEXT,\n },\n {\n key: 'dueDate',\n label: `task-list.fieldLabels.due`,\n viewType: ViewType.TEXT,\n sortable: true,\n },\n ];\n\n private readonly _fields$ = new BehaviorSubject<ColumnConfig[]>(this._DEFAULT_TASK_LIST_FIELDS);\n\n private get hasCustomConfigTaskList(): boolean {\n return !!this.taskService.getConfigCustomTaskList();\n }\n\n public get fields$(): Observable<ColumnConfig[]> {\n return this._fields$.asObservable();\n }\n\n public get taskListColumnsForCase$(): Observable<TaskListColumn[]> {\n return this.taskListService.caseDefinitionKey$.pipe(\n tap(caseDefinitionName => {\n if (caseDefinitionName === this.taskListService.ALL_CASES_ID) {\n this.resetTaskListFields();\n }\n }),\n filter(\n caseDefinitionName =>\n !!caseDefinitionName && caseDefinitionName !== this.taskListService.ALL_CASES_ID\n ),\n switchMap(caseDefinitionName => this.taskService.getTaskListColumns(caseDefinitionName)),\n tap(taskListColumns => {\n if (taskListColumns.length === 0) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS[0].key,\n direction: 'DESC',\n },\n });\n this._fields$.next(this._DEFAULT_SPECIFIED_TASK_LIST_FIELDS);\n } else {\n this._fields$.next(this.mapTaskListColumnToColumnConfig(taskListColumns));\n }\n }),\n tap(() => this.taskListService.setLoadingStateForCaseDefinition(false))\n );\n }\n\n constructor(\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly taskListSortService: TaskListSortService\n ) {}\n\n public resetTaskListFields(): void {\n if (this.hasCustomConfigTaskList) {\n this.setFieldsToCustomTaskListFields();\n } else {\n this.setFieldsToDefaultTaskListFields();\n }\n\n this.taskListSortService.resetDefaultSortStates();\n this.taskListService.setLoadingStateForCaseDefinition(false);\n }\n\n private setFieldsToCustomTaskListFields(): void {\n const customTaskListFields = this.taskService.getConfigCustomTaskList().fields;\n\n if (customTaskListFields) {\n this._fields$.next(\n customTaskListFields.map((column, index) => ({\n key: column.propertyName,\n label: `task-list.fieldLabels.${column.translationKey}`,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n }))\n );\n }\n }\n\n private setFieldsToDefaultTaskListFields(): void {\n this._fields$.next(this._DEFAULT_TASK_LIST_FIELDS);\n }\n\n private mapTaskListColumnToColumnConfig(\n taskListColumns: Array<TaskListColumn>\n ): Array<ColumnConfig> {\n const hasDefaultSort = !!taskListColumns.find(column => column.defaultSort);\n const firstSortableColumn = taskListColumns.find(column => column.sortable);\n\n if (!hasDefaultSort && firstSortableColumn) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: firstSortableColumn.key,\n direction: 'DESC',\n },\n });\n }\n\n if (!hasDefaultSort && !firstSortableColumn) {\n this.taskListSortService.clearSortStates();\n }\n\n return taskListColumns.map(column => {\n if (column.defaultSort) {\n this.taskListSortService.updateSortStates({\n isSorting: true,\n state: {\n name: column.key,\n direction: column.defaultSort,\n },\n });\n }\n\n return {\n viewType: this.getViewType(column.displayType.type),\n key: column.key,\n label: column.title || column.key,\n sortable: column.sortable,\n ...(column?.displayType?.displayTypeParameters?.enum && {\n enum: column?.displayType?.displayTypeParameters?.enum,\n }),\n ...(column?.displayType?.displayTypeParameters?.dateFormat && {\n format: column?.displayType?.displayTypeParameters?.dateFormat,\n }),\n };\n });\n }\n\n private getViewType(taskListColumnColumnDisplayType: string): string {\n switch (taskListColumnColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return taskListColumnColumnDisplayType;\n }\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {TaskPageParams} from '../models';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TaskListTab} from '@valtimo/shared';\nimport {map, take} from 'rxjs/operators';\nimport {TaskListService} from './task-list.service';\n\n@Injectable()\nexport class TaskListPaginationService {\n private readonly _pagination$ = new BehaviorSubject<{[key in TaskListTab]: TaskPageParams}>({\n [TaskListTab.ALL]: this.getDefaultPagination(),\n [TaskListTab.MINE]: this.getDefaultPagination(),\n [TaskListTab.OPEN]: this.getDefaultPagination(),\n });\n\n private readonly _paginationForCurrentTaskType$: Observable<TaskPageParams> = combineLatest([\n this.taskListService.selectedTaskType$,\n this._pagination$,\n ]).pipe(map(([selectedTaskType, pagination]) => pagination[selectedTaskType]));\n\n public get paginationForCurrentTaskType$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$;\n }\n\n public get paginationForCurrentTaskTypeForList$(): Observable<TaskPageParams> {\n return this._paginationForCurrentTaskType$.pipe(\n map(pagination => ({...pagination, page: pagination?.page + 1 || 1}))\n );\n }\n\n constructor(private readonly taskListService: TaskListService) {}\n\n public updateTaskPagination(\n taskType: TaskListTab,\n updatedPagination: Partial<TaskPageParams>\n ): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n const currentPagination = pagination[taskType];\n this._pagination$.next({\n ...pagination,\n [taskType]: {...currentPagination, ...updatedPagination},\n });\n });\n }\n\n public getLastAvailablePage(page: number, size: number, collectionSize: number): number {\n if (this.isNumber(page) && this.isNumber(size) && this.isNumber(collectionSize) && page !== 0) {\n const amountOfPages = Math.ceil(collectionSize / size);\n\n if (page + 1 > amountOfPages) {\n return amountOfPages - 1;\n }\n }\n\n return page;\n }\n\n private isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n private getDefaultPagination(): TaskPageParams {\n return {\n page: 0,\n size: 10,\n };\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {\n ConfigService,\n SearchField,\n SearchFieldValues,\n SearchFilter,\n SearchFilterRange,\n} from '@valtimo/shared';\nimport {BehaviorSubject, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {TaskListService} from './task-list.service';\nimport {TaskListOtherFilters, TaskListSearchField} from '../models';\nimport {TaskService} from './task.service';\n\n@Injectable()\nexport class TaskListSearchService {\n private readonly _loadingSearchFields$ = new BehaviorSubject<boolean>(true);\n private readonly _otherFilters$ = new BehaviorSubject<TaskListOtherFilters>([]);\n\n public get loadingSearchFields$(): Observable<boolean> {\n return this._loadingSearchFields$.asObservable();\n }\n\n public get otherFilters$(): Observable<TaskListOtherFilters> {\n return this._otherFilters$.asObservable();\n }\n\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListService.caseDefinitionKey$.pipe(\n tap(() => this._loadingSearchFields$.next(true)),\n switchMap(caseDefinitionName =>\n caseDefinitionName\n ? this.taskService.getTaskListSearchFields(caseDefinitionName)\n : of([] as TaskListSearchField[])\n ),\n map(searchFields =>\n searchFields.map(searchField => {\n const fieldTypeLowerCase = searchField.fieldType?.toLowerCase();\n\n return {\n ...searchField,\n dataType: searchField.dataType?.toLowerCase(),\n fieldType: fieldTypeLowerCase === 'text_contains' ? 'single' : fieldTypeLowerCase,\n matchType: searchField?.matchType?.toLowerCase(),\n } as unknown as SearchField;\n })\n ),\n tap(() => this._loadingSearchFields$.next(false))\n );\n\n constructor(\n private readonly configService: ConfigService,\n private readonly taskListService: TaskListService,\n private readonly taskService: TaskService\n ) {}\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._otherFilters$.next(this.mapSearchValuesToFilters(searchFieldValues));\n }\n\n public setOtherFilters(otherFilters: TaskListOtherFilters): void {\n this._otherFilters$.next(otherFilters);\n }\n\n public resetOtherFilters(): void {\n this._otherFilters$.next([]);\n }\n\n public mapOtherFilterToSearchValues(otherFilters: TaskListOtherFilters): SearchFieldValues {\n return otherFilters.reduce((acc, curr) => {\n const filter = curr as any;\n\n if (filter.rangeFrom) {\n return {\n ...acc,\n [filter.key]: {\n start: filter.rangeFrom,\n end: filter.rangeTo,\n },\n };\n } else if (filter.multiValue) {\n return {...acc, [filter.key]: filter.values};\n } else if (Array.isArray(filter.values) && filter.values.length > 0 && !filter.multiValue) {\n return {...acc, [filter.key]: filter.values[0]};\n }\n\n return acc;\n }, {});\n }\n\n private mapSearchValuesToFilters(values: SearchFieldValues): TaskListOtherFilters {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue, multiValue: true});\n } else {\n filters.push({key: valueKey, values: [searchValue], multiValue: false});\n }\n });\n\n return filters;\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {\n TaskListEncodedQueryParams,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n} from '../models';\nimport {omit} from 'lodash';\nimport {ActivatedRoute, Router} from '@angular/router';\n\n@Injectable()\nexport class TaskListQueryParamService {\n public setTaskListParams(params: TaskListQueryParamsWithReload): void {\n const queryParams: TaskListQueryParams = omit(params, 'reload');\n const encodedQueryParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.objectToBase64(queryParams[curr])}),\n {}\n ) as TaskListEncodedQueryParams;\n\n this.router.navigate([this.getUrlWithoutParams()], {queryParams: encodedQueryParams});\n }\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {}\n\n public getTaskListQueryParams(): Partial<TaskListQueryParams> {\n const queryParams = this.route.snapshot.queryParams;\n const decodedParams = Object.keys(queryParams).reduce(\n (acc, curr) => ({...acc, [curr]: this.parseBase64(queryParams[curr])}),\n {}\n ) as Partial<TaskListQueryParams>;\n\n return decodedParams;\n }\n\n private getUrlWithoutParams(): string {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n urlTree.fragment = null;\n return urlTree.toString();\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private parseBase64(base64string: string): object {\n return JSON.parse(atob(base64string));\n }\n}\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 */\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {BehaviorSubject, catchError, filter, Observable, of} from 'rxjs';\nimport {IntermediateSaveRequest, IntermediateSubmission} from '../models';\n\n@Injectable({providedIn: 'root'})\nexport class TaskIntermediateSaveService extends BaseApiService {\n private readonly _submission$ = new BehaviorSubject<any>({});\n private readonly _formIoFormData$ = new BehaviorSubject<any>({});\n\n public get submission$(): Observable<any> {\n return this._submission$.pipe(filter((value: any) => !!value));\n }\n public get formIoFormData$(): Observable<any> {\n return this._formIoFormData$.pipe(filter((value: any) => !!value));\n }\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getIntermediateSubmission(\n taskInstanceId: string\n ): Observable<IntermediateSubmission | null> {\n return this.httpClient\n .get<IntermediateSubmission>(this.getApiUrl('/v1/form/intermediate/submission'), {\n params: {\n taskInstanceId,\n },\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n })\n .pipe(catchError(() => of(null)));\n }\n\n public storeIntermediateSubmission(\n request: IntermediateSaveRequest\n ): Observable<IntermediateSubmission> {\n return this.httpClient.post<IntermediateSubmission>(\n this.getApiUrl('/v1/form/intermediate/submission'),\n request,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '400'),\n }\n );\n }\n\n public clearIntermediateSubmission(taskInstanceId: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl('/v1/form/intermediate/submission'), {\n params: {\n taskInstanceId,\n },\n });\n }\n\n public setSubmission(value: any): void {\n this._submission$.next(value);\n }\n\n public setFormIoFormData(value: any): void {\n this._formIoFormData$.next(value);\n }\n}\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\nexport * from './task.service';\nexport * from './task-list.service';\nexport * from './task-list-column.service';\nexport * from './task-list-pagination.service';\nexport * from './task-list-search.service';\nexport * from './task-list-query-param.service';\nexport * from './task-intermediate-save.service';\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 */\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CdsThemeService,\n RemoveClassnamesDirective,\n SearchableDropdownSelectModule,\n} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription, take, tap} from 'rxjs';\nimport {TaskService} from '../../services';\nimport {NamedUser} from '@valtimo/shared';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n ButtonModule,\n ComboBoxModule,\n DatePickerModule,\n IconModule,\n IconService,\n LayerModule,\n ListItem,\n ToggletipModule,\n} from 'carbon-components-angular';\nimport {UserFollow16} from '@carbon/icons';\nimport {filter, map} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-assign-user-to-task',\n templateUrl: './assign-user-to-task.component.html',\n styleUrls: ['./assign-user-to-task.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n SearchableDropdownSelectModule,\n ButtonModule,\n ToggletipModule,\n IconModule,\n LayerModule,\n DatePickerModule,\n ComboBoxModule,\n RemoveClassnamesDirective,\n ],\n})\nexport class AssignUserToTaskComponent implements OnInit, OnChanges, OnDestroy {\n private _taskId;\n @Input() public set taskId(value: string) {\n if (this._taskId === value) return;\n this._taskId = value;\n this.fetchCandidateUsers(value);\n }\n\n @Input() public readonly assigneeId: string;\n @Output() public readonly assignmentOfTaskChanged = new EventEmitter();\n\n public readonly canAssignUserToTaskSet$ = new BehaviorSubject<boolean>(false);\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set canAssignUserToTask(value: boolean) {\n this.canAssignUserToTaskSet$.next(true);\n this.canAssignUserToTask$.next(value);\n }\n\n public readonly assignedIdOnServer$ = new BehaviorSubject<string | null>(null);\n private readonly _assignedUserFullName$ = new BehaviorSubject<string | null>(null);\n public readonly assignedUserFullName$: Observable<string> = this._assignedUserFullName$.pipe(\n map(fullName => `${fullName?.trim()}`)\n );\n\n private readonly _candidateUsersForTask$ = new BehaviorSubject<NamedUser[] | undefined>(\n undefined\n );\n\n private readonly _selectedUserId$ = new BehaviorSubject<string | null>(null);\n public readonly selectedUserId$ = this._selectedUserId$.asObservable();\n\n public readonly candidateUsersForTask$ = combineLatest([\n this._candidateUsersForTask$,\n this._selectedUserId$,\n ]).pipe(map(([users, selectedUserId]) => this.mapUsersForDropdown(users, selectedUserId)));\n\n public readonly mouseIsOverAssignee$ = new BehaviorSubject<boolean>(false);\n public readonly open$ = new Subject<boolean>();\n public readonly disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly toggletipTheme$ = this.cdsThemeService.currentTheme$;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly taskService: TaskService,\n private readonly iconService: IconService,\n private readonly elementRef: ElementRef,\n private readonly renderer2: Renderer2,\n private readonly cdsThemeService: CdsThemeService\n ) {\n this.iconService.registerAll([UserFollow16]);\n }\n\n public ngOnInit(): void {\n this.openHideElementSubscription();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this._candidateUsersForTask$.pipe(take(1)).subscribe(candidateUsers => {\n const currentUserId = changes.assigneeId?.currentValue || this.assigneeId;\n this.assignedIdOnServer$.next(currentUserId || null);\n this._selectedUserId$.next(currentUserId || null);\n this._assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers ?? [], currentUserId)\n );\n });\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public assignTask(userId: string): void {\n this.disable();\n\n combineLatest([\n this._candidateUsersForTask$,\n this.taskService.assignTask(this._taskId, {assignee: userId}),\n ])\n .pipe(take(1))\n .subscribe({\n next: ([candidateUsers]) => {\n this._selectedUserId$.next(userId);\n this.assignedIdOnServer$.next(userId);\n this._assignedUserFullName$.next(this.getAssignedUserName(candidateUsers ?? [], userId));\n this.closeToggletip();\n this.emitChange();\n this.enable();\n },\n error: () => {\n this.enable();\n },\n });\n }\n\n public unassignTask(): void {\n this.disable();\n this.taskService\n .unassignTask(this._taskId)\n .pipe(\n tap(() => {\n this.emitChange();\n this.enable();\n this.clear();\n })\n )\n .subscribe();\n }\n\n public getAssignedUserName(users: NamedUser[], userId: string): string {\n if (users && userId) {\n const findUser =\n users.find(user => user.id === userId) || users.find(user => user.userName === userId);\n return findUser ? findUser.label : userId;\n }\n return userId || '-';\n }\n\n public onMouseEnterAssignee(): void {\n this.mouseIsOverAssignee$.next(true);\n }\n\n public onMouseLeaveAssignee(): void {\n this.mouseIsOverAssignee$.next(false);\n }\n\n public onSubmitButtonClick(): void {\n this.assignTask(this._selectedUserId$.getValue());\n }\n public onUserSelect(event: ListItem): void {\n if (!event?.id) return;\n this._selectedUserId$.next(event.id);\n }\n\n public clear(): void {\n this.assignedIdOnServer$.next(null);\n this._selectedUserId$.next(null);\n }\n\n private mapUsersForDropdown(users: NamedUser[], selectedUserId: string): ListItem[] {\n return (\n users\n ?.map(user => ({...user, lastName: user.lastName?.split(' ').splice(-1)[0] || ''}))\n .sort((a, b) => a.lastName.localeCompare(b.lastName))\n .map(user => ({content: user.label, id: user.id, selected: user.id === selectedUserId})) ||\n []\n );\n }\n\n private emitChange(): void {\n this.assignmentOfTaskChanged.emit();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private closeToggletip(): void {\n // needed to reliably trigger toggle tip closure\n this.open$.next(true);\n setTimeout(() => this.open$.next(false));\n }\n\n private fetchCandidateUsers(taskId: string): void {\n this.disable();\n\n this.canAssignUserToTask$\n .pipe(\n filter(allowed => !!allowed),\n take(1)\n )\n .subscribe(() => {\n this.taskService.getCandidateUsers(taskId).subscribe(candidateUsers => {\n this._candidateUsersForTask$.next(candidateUsers);\n if (this.assigneeId) {\n this.assignedIdOnServer$.next(this.assigneeId);\n this._selectedUserId$.next(this.assigneeId);\n this._assignedUserFullName$.next(\n this.getAssignedUserName(candidateUsers, this.assigneeId)\n );\n }\n this.enable();\n });\n });\n }\n\n private openHideElementSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.selectedUserId$,\n this.assignedIdOnServer$,\n this.canAssignUserToTask$,\n ]).subscribe(([selectedUserId, idOnServer, canAssignUserToTask]) => {\n if (!canAssignUserToTask && !(selectedUserId === idOnServer && idOnServer !== null)) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'none');\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'display');\n }\n })\n );\n }\n}\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\n<ng-container\n *ngIf=\"\n (canAssignUserToTaskSet$ | async) && {\n candidateUsers: candidateUsersForTask$ | 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 } as obs\n \"\n>\n <ng-container\n *ngIf=\"{hasSelection: obs.selectedUserId === obs.idOnServer && obs.idOnServer !== null} as vars\"\n >\n <div\n class=\"assign-user-container\"\n *ngIf=\"obs.canAssignUserToTask || (!obs.canAssignUserToTask && vars.hasSelection)\"\n (mouseenter)=\"onMouseEnterAssignee()\"\n (mouseleave)=\"onMouseLeaveAssignee()\"\n >\n <div\n class=\"assignee-text element\"\n [ngClass]=\"{\n active: obs.canAssignUserToTask\n ? vars.hasSelection && !obs.mouseIsOverAssignee\n : vars.hasSelection,\n }\"\n >\n <span class=\"bold\">{{ 'assignTask.assignedTo' | translate }}</span>\n\n \n\n <span class=\"name\">{{ obs.assignedUserFullName }}</span>\n </div>\n\n <button\n *ngIf=\"obs.canAssignUserToTask\"\n cdsButton=\"ghost\"\n class=\"element remove-button\"\n [ngClass]=\"{active: vars.hasSelection && obs.mouseIsOverAssignee}\"\n [disabled]=\"obs.disabled\"\n size=\"sm\"\n (click)=\"unassignTask()\"\n >\n {{ 'assignTask.remove' | translate }}\n </button>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !vars.hasSelection}\"\n (onOpen)=\"clear()\"\n >\n <button\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n class=\"set-assignee-button\"\n >\n {{ 'assignTask.buttonText' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"user--follow\" size=\"16\"></svg>\n </button>\n\n <div\n cdsToggletipContent\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"assign-task-popover-content\"\n >\n <cds-combo-box\n *ngIf=\"!vars.hasSelection\"\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)=\"clear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton\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 </div>\n </cds-toggletip>\n </div>\n </ng-container>\n</ng-container>\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\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n assign = 'assign',\n view = 'view',\n modify = 'modify',\n}\n\nenum TASK_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n task = 'com.ritense.valtimo.operaton.domain.OperatonTask',\n}\n\nconst CAN_ASSIGN_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_MODIFY_TASK_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.modify,\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n};\n\nexport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n};\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {RecentlyViewed16} from '@carbon/icons';\nimport {FormioForm} from '@formio/angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n FormioComponent,\n FormIoModule,\n FormioOptionsImpl,\n FormIoStateService,\n FormioSubmission,\n ValtimoFormioOptions,\n ValtimoModalService,\n} from '@valtimo/components';\nimport {\n ConfigService,\n FORM_VIEW_MODEL_TOKEN,\n FormViewModel,\n GlobalNotificationService,\n} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormFlowComponent,\n FormSubmissionResult,\n ProcessLinkModule,\n ProcessLinkService,\n TaskProcessLinkResult,\n TaskProcessLinkType,\n TaskWithProcessLink,\n UrlResolverService,\n} from '@valtimo/process-link';\nimport {IconService} from 'carbon-components-angular';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n} from 'rxjs';\nimport {IntermediateSubmission, Task} from '../../models';\nimport {TaskIntermediateSaveService, TaskService} from '../../services';\nimport {CAN_ASSIGN_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE} from '../../task-permissions';\n\n@Component({\n selector: 'valtimo-task-detail-content',\n templateUrl: './task-detail-content.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormIoModule, TranslateModule, ProcessLinkModule],\n})\nexport class TaskDetailContentComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild('form') form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: false, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formFlow') public formFlow: FormFlowComponent;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n @Input() public set task(value: Task | null) {\n if (!value) return;\n\n this.loadTaskDetails(value);\n }\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.loadTaskDetails(value.task as any, value.processLinkActivityResult);\n }\n @Input() public set modalClosed(closed: boolean) {\n // save form flow data on modal closed\n if (this.formFlow) this.formFlow.saveData();\n\n if (closed) {\n this.closeModalEvent.emit();\n }\n }\n @Output() public readonly closeModalEvent = new EventEmitter();\n @Output() public readonly formSubmit = new EventEmitter();\n @Output() public readonly activeChange = new EventEmitter<boolean>();\n\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false);\n public readonly errorMessage$ = new BehaviorSubject<string | null>(null);\n public readonly formDefinition$ = new BehaviorSubject<FormioForm | null>(null);\n public readonly formDefinitionId$ = new BehaviorSubject<string | null>(null);\n public readonly formFlowInstanceId$ = new BehaviorSubject<string | null>(null);\n public readonly formioOptions$ = new BehaviorSubject<ValtimoFormioOptions | null>(null);\n public readonly formIoFormData$ = new BehaviorSubject<any>(null);\n public readonly formName$ = new BehaviorSubject<string | null>(null);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly page$ = new BehaviorSubject<any>(null);\n public readonly submission$ = this.taskIntermediateSaveService.submission$;\n public readonly task$ = new BehaviorSubject<Task | null>(null);\n public readonly taskInstanceId$ = new BehaviorSubject<string | null>(null);\n public intermediateSaveEnabled = false;\n\n private readonly _taskProcessLinkType$ = new BehaviorSubject<TaskProcessLinkType | null>(null);\n public readonly processLinkIsForm$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'form')\n );\n public readonly processLinkIsFormViewModel$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'form-view-model')\n );\n public readonly processLinkIsFormFlow$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'form-flow')\n );\n public readonly processLinkIsUiComponent$ = this._taskProcessLinkType$.pipe(\n map((type: string | null) => type === 'ui-component')\n );\n\n private readonly _processLinkId$ = new BehaviorSubject<string | null>(null);\n private readonly _subscriptions = new Subscription();\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n private readonly _viewInitialized$ = new BehaviorSubject<boolean>(false);\n\n public get viewInitialized$(): Observable<boolean> {\n return this._viewInitialized$.pipe(filter(initialized => initialized));\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly iconService: IconService,\n private readonly logger: NGXLogger,\n private readonly modalService: ValtimoModalService,\n private readonly permissionService: PermissionService,\n private readonly processLinkService: ProcessLinkService,\n private readonly router: Router,\n private readonly stateService: FormIoStateService,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly taskService: TaskService,\n private readonly translateService: TranslateService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig,\n private readonly urlResolverService: UrlResolverService\n ) {\n this.intermediateSaveEnabled = !!this.configService.featureToggles?.enableIntermediateSave;\n\n this.iconService.registerAll([RecentlyViewed16]);\n\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n this.formioOptions$.next(options);\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n public ngOnInit(): void {\n this.openPermissionSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.taskIntermediateSaveService.setSubmission({});\n this._viewInitialized$.next(false);\n }\n\n public ngAfterViewInit(): void {\n this._viewInitialized$.next(true);\n }\n\n public onSubmit(submission: FormioSubmission): void {\n if (submission.data) {\n this.taskIntermediateSaveService.setFormIoFormData(submission.data);\n this.formIoFormData$.next(submission.data);\n }\n\n combineLatest([this._processLinkId$, this._taskProcessLinkType$, this.task$])\n .pipe(take(1))\n .subscribe(([processLinkId, taskProcessLinkType, task]) => {\n if (taskProcessLinkType === 'form') {\n if (processLinkId) {\n this.processLinkService\n .submitForm(processLinkId, submission.data, task?.businessKey, task?.id)\n .subscribe({\n next: (_: FormSubmissionResult) => {\n this.completeTask(task);\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n } else if (taskProcessLinkType === 'form-view-model') {\n this.completeTask(task);\n }\n });\n }\n\n public completeTask(task: Task | null): void {\n if (!task) return;\n\n this.globalNotificationService.showToast({\n title: `${task.name} ${this.translateService.instant('taskDetail.taskCompleted')}`,\n type: 'success',\n });\n this.task$.next(null);\n this.formSubmit.emit();\n this.closeModalEvent.emit();\n this.activeChange.emit(false);\n\n if (this.formFlow) this.formFlow.saveData();\n }\n\n public onChange(event: any): void {\n if (event.data) {\n this.taskIntermediateSaveService.setFormIoFormData(event.data);\n this.formIoFormData$.next(event.data);\n this.activeChange.emit(true);\n }\n }\n\n public onFormFlowChangeEvent(): void {\n this.activeChange.emit(true);\n }\n\n private loadTaskDetails(task: Task, processLink?: TaskProcessLinkResult): void {\n this.resetTaskProcessLinkType();\n this.resetFormDefinition();\n\n this.taskInstanceId$.next(task.id);\n\n if (!processLink) {\n this.getTaskProcessLink(task.id);\n } else {\n this.setTaskProcessLink(processLink);\n }\n\n this.setDocumentDefinitionNameInService(task);\n const documentId = task.businessKey;\n this.stateService.setDocumentId(documentId);\n\n this.task$.next(task);\n this.page$.next({\n title: task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${task.created}`,\n });\n this.stateService.setProcessInstanceId(task.processInstanceId);\n }\n\n private getCurrentProgress(formViewModelComponentRef?: ComponentRef<any>): void {\n this.taskInstanceId$\n .pipe(\n filter(value => !!value),\n take(1),\n switchMap((taskInstanceId: string | null) =>\n this.taskIntermediateSaveService.getIntermediateSubmission(taskInstanceId ?? '')\n )\n )\n .subscribe({\n next: (intermediateSubmission: IntermediateSubmission) => {\n this.taskIntermediateSaveService.setSubmission({\n data: intermediateSubmission?.submission || {},\n });\n\n if (formViewModelComponentRef) {\n formViewModelComponentRef.instance.submission = {\n data: intermediateSubmission.submission,\n };\n }\n },\n });\n }\n\n private getTaskProcessLink(taskId: string): void {\n this.taskService.getTaskProcessLink(taskId).subscribe({\n next: res => {\n this.setTaskProcessLink(res);\n },\n error: _ => {\n this.loading$.next(false);\n },\n });\n }\n\n private setTaskProcessLink(processLinkResult: TaskProcessLinkResult | null): void {\n if (processLinkResult !== null) {\n switch (processLinkResult?.type) {\n case 'form':\n this._taskProcessLinkType$.next('form');\n this._processLinkId$.next(processLinkResult.processLinkId);\n if (this.intermediateSaveEnabled) this.getCurrentProgress();\n this.setFormDefinition(processLinkResult.properties.prefilledForm);\n break;\n case 'form-flow':\n this._taskProcessLinkType$.next('form-flow');\n this.formFlowInstanceId$.next(processLinkResult.properties.formFlowInstanceId ?? '');\n break;\n case 'form-view-model':\n this._taskProcessLinkType$.next('form-view-model');\n this._processLinkId$.next(processLinkResult.processLinkId);\n this.formDefinition$.next(processLinkResult.properties.formDefinition);\n this.formName$.next(processLinkResult.properties.formName ?? '');\n this.setFormViewModelComponent();\n break;\n case 'url':\n this._taskProcessLinkType$.next('url');\n this._processLinkId$.next(processLinkResult.processLinkId);\n combineLatest([this.processLinkService.getVariables(), this.task$])\n .pipe(take(1))\n .subscribe(([variables, task]) => {\n let url = this.urlResolverService.resolveUrlVariables(\n processLinkResult.properties.url,\n variables.variables\n );\n window.open(url, '_blank').focus();\n this.processLinkService\n .submitURLProcessLink(processLinkResult.processLinkId, task.businessKey, task.id)\n .subscribe(() => {\n this.completeTask(task);\n });\n });\n break;\n case 'ui-component':\n this._taskProcessLinkType$.next('ui-component');\n this._processLinkId$.next(processLinkResult.processLinkId);\n this.formDefinition$.next(null);\n this.formName$.next('');\n this.setFormCustomComponent(processLinkResult.properties.componentKey);\n break;\n }\n\n this.loading$.next(false);\n }\n }\n\n private openPermissionSubscription(): void {\n this._subscriptions.add(\n this.task$.subscribe(task => {\n if (task) {\n this.logger.debug('Checking if user allowed to assign a user to Task with id:', task.id);\n this.permissionService\n .requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n })\n .subscribe((allowed: boolean) => {\n this.canAssignUserToTask$.next(allowed);\n });\n } else {\n this.logger.debug('Reset is user allowed to assign a user to Task as task is null');\n this.canAssignUserToTask$.next(false);\n }\n })\n );\n }\n\n private setFormDefinition(formDefinition: any): void {\n this._taskProcessLinkType$.next('form');\n this.formDefinition$.next(formDefinition);\n }\n\n private setFormViewModelComponent() {\n combineLatest([this._viewInitialized$, this.processLinkIsFormViewModel$]).subscribe(\n ([viewInitialized, isFvm]) => {\n if (viewInitialized && isFvm) {\n this.formViewModelDynamicContainer.clear();\n if (!this.formViewModel) {\n return;\n }\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition$.getValue();\n formViewModelComponent.instance.formName = this.formName$.getValue();\n formViewModelComponent.instance.taskInstanceId = this.taskInstanceId$.getValue();\n formViewModelComponent.instance.isStartForm = false;\n\n formViewModelComponent.instance.formSubmit\n .pipe(\n switchMap(() => this.task$),\n take(1)\n )\n .subscribe((task: Task | null) => {\n this.completeTask(task);\n });\n\n if (this.intermediateSaveEnabled) {\n this._subscriptions.add(\n formViewModelComponent.instance.submission$.subscribe(submission => {\n this.taskIntermediateSaveService.setSubmission(submission);\n })\n );\n this._subscriptions.add(\n this.submission$.pipe(distinctUntilChanged()).subscribe((submission?) => {\n if (submission?.data && Object.keys(submission.data).length === 0) {\n formViewModelComponent.instance.submission = {data: {}};\n }\n })\n );\n this.getCurrentProgress(formViewModelComponent);\n }\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n })\n );\n }\n }\n );\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n combineLatest([this._viewInitialized$, this.processLinkIsUiComponent$]).subscribe(\n ([viewInitialized, isUiComponent]) => {\n if (viewInitialized && isUiComponent) {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) {\n return;\n }\n let renderedComponent: ComponentRef<FormCustomComponent>;\n this._subscriptions.add(\n this._formCustomComponentConfig$.subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n renderedComponent.instance.taskInstanceId = this.taskInstanceId$.value;\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.closeModalEvent.emit();\n });\n })\n );\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n renderedComponent.destroy();\n })\n );\n }\n }\n );\n }\n\n private resetFormDefinition(): void {\n this.formDefinition$.next(null);\n this.loading$.next(true);\n }\n\n private resetTaskProcessLinkType(): void {\n this._taskProcessLinkType$.next(null);\n this._processLinkId$.next(null);\n }\n\n private setDocumentDefinitionNameInService(task: Task): void {\n this.documentService\n .getProcessDefinitionCaseDefinitionFromProcessInstanceId(task.processInstanceId)\n .subscribe(ProcessDefinitionCaseDefinition => {\n const caseDefinitionKey = ProcessDefinitionCaseDefinition.id.caseDefinitionId.key;\n this.modalService.setCaseDefinitionKey(caseDefinitionKey);\n this.stateService.setDocumentDefinitionName(caseDefinitionKey);\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n page: page$ | 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 } as obs\"\n>\n <valtimo-form-io\n #form\n *ngIf=\"\n obs.formDefinition &&\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 <div *ngIf=\"obs.loading\" class=\"text-black mb-0 p-3 text-center\">\n {{ 'formManagement.loading' | translate }}\n </div>\n\n <div\n *ngIf=\"\n obs.loading === false &&\n !obs.formDefinition &&\n !obs.formFlowInstanceId &&\n !obs.errorMessage &&\n !obs.processLinkIsUiComponent\n \"\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n >\n {{\n (isAdmin$ | async)\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div *ngIf=\"obs.errorMessage\" class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ obs.errorMessage }}\n </div>\n\n <div class=\"m-2\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {RecentlyViewed16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ConfirmationModalModule, TooltipModule} from '@valtimo/components';\nimport {ConfigService, GlobalNotificationService} from '@valtimo/shared';\nimport {TaskProcessLinkResult, TaskWithProcessLink} from '@valtimo/process-link';\nimport {ButtonModule, IconModule, IconService, ModalModule} from 'carbon-components-angular';\nimport moment from 'moment';\nimport {BehaviorSubject, combineLatest, switchMap, take} from 'rxjs';\nimport {IntermediateSaveRequest, IntermediateSubmission, Task} from '../../models';\nimport {TaskIntermediateSaveService, TaskService} from '../../services';\n\n@Component({\n selector: 'valtimo-task-detail-intermediate-save',\n templateUrl: './task-detail-intermediate-save.component.html',\n styleUrls: ['./task-detail-intermediate-save.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n ConfirmationModalModule,\n IconModule,\n ModalModule,\n TooltipModule,\n ],\n})\nexport class TaskDetailIntermediateSaveComponent {\n @Input() public set task(value: Task | null) {\n if (!value) return;\n this.taskService\n .getTaskProcessLink(value.id)\n .pipe(take(1))\n .subscribe(res => {\n this.setFormFlow(res);\n });\n\n this.taskValue.set(value);\n this.page.set({\n title: value.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value.created}`,\n });\n this.getCurrentProgress(value);\n }\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.setFormFlow(value.processLinkActivityResult);\n this.taskValue.set(value.task as any);\n this.page.set({\n title: value?.task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.task.created}`,\n });\n this.getCurrentProgress(value.task as any);\n }\n @Output() public readonly currentIntermediateSaveEvent =\n new EventEmitter<IntermediateSubmission | null>();\n @Output() public readonly showModalEvent = new EventEmitter();\n\n public readonly formFlowInstanceId$ = new BehaviorSubject<string | undefined>(undefined);\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly taskValue = signal<Task | null>(null);\n public readonly page = signal<{title: string; subtitle: string} | null>(null);\n public readonly canAssignUserToTask = signal<boolean>(false);\n public readonly submission$ = this.taskIntermediateSaveService.submission$;\n public readonly formIoFormData$ = this.taskIntermediateSaveService.formIoFormData$;\n\n public intermediateSaveEnabled = false;\n public currentIntermediateSave: IntermediateSubmission | null = null;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly iconService: IconService,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly taskService: TaskService,\n private readonly translateService: TranslateService\n ) {\n this.intermediateSaveEnabled = !!this.configService.featureToggles?.enableIntermediateSave;\n this.iconService.registerAll([RecentlyViewed16]);\n }\n\n public saveCurrentProgress(): void {\n combineLatest([this.submission$, this.formIoFormData$])\n .pipe(\n switchMap(([submission, formIoFormData]) => {\n const intermediateSaveRequest: IntermediateSaveRequest = {\n submission: submission?.data ? submission.data : formIoFormData,\n taskInstanceId: this.taskValue()?.id ?? '',\n };\n\n return this.taskIntermediateSaveService.storeIntermediateSubmission(\n intermediateSaveRequest\n );\n }),\n take(1)\n )\n .subscribe({\n next: intermediateSubmission => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('formManagement.intermediateSave.success'),\n type: 'success',\n });\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSubmission);\n this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);\n },\n error: () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('formManagement.intermediateSave.error'),\n type: 'error',\n });\n },\n });\n }\n\n public revertSaveClick(): void {\n if (this.showModalEvent.observed) {\n this.showModalEvent.emit();\n return;\n }\n\n this.showConfirmationModal$.next(true);\n }\n\n public clearCurrentProgress(): void {\n this.taskIntermediateSaveService\n .clearIntermediateSubmission(this.taskValue()?.id ?? '')\n .pipe(take(1))\n .subscribe(() => {\n this.taskIntermediateSaveService.setSubmission({});\n this.currentIntermediateSave = null;\n this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);\n });\n }\n\n private setFormFlow(processLink: TaskProcessLinkResult): void {\n if (processLink !== null && processLink.type === 'form-flow') {\n this.formFlowInstanceId$.next(processLink.properties.formFlowInstanceId);\n }\n }\n\n private formatIntermediateSubmission(\n intermediateSubmission: IntermediateSubmission\n ): IntermediateSubmission {\n intermediateSubmission.createdOn = moment(intermediateSubmission.createdOn).format(\n 'DD MMM YYYY HH:mm'\n );\n if (intermediateSubmission.editedOn) {\n intermediateSubmission.editedOn = moment(new Date(intermediateSubmission.editedOn)).format(\n 'DD MMM YYYY HH:mm'\n );\n }\n\n return intermediateSubmission;\n }\n\n private getCurrentProgress(task: Task): void {\n this.taskIntermediateSaveService\n .getIntermediateSubmission(task.id ?? '')\n .pipe(take(1))\n .subscribe(intermediateSave => {\n if (intermediateSave !== null) {\n this.currentIntermediateSave = this.formatIntermediateSubmission(intermediateSave);\n } else {\n this.currentIntermediateSave = null;\n this.taskIntermediateSaveService.setSubmission({});\n }\n\n this.currentIntermediateSaveEvent.emit(this.currentIntermediateSave);\n });\n }\n}\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\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","/*\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\nimport {Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ProcessInstanceTask} from '@valtimo/process';\nimport {BehaviorSubject, Subject} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\nimport {\n ButtonModule,\n DatePickerModule,\n IconModule,\n IconService,\n LayerModule,\n ToggletipModule,\n} from 'carbon-components-angular';\nimport {CalendarAdd16} from '@carbon/icons';\nimport {TaskService} from '../../services';\nimport {Task} from '../../models';\nimport {CdsThemeService, RemoveClassnamesDirective} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-set-task-due-date',\n templateUrl: './set-task-due-date.component.html',\n styleUrls: ['./set-task-due-date.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n IconModule,\n ToggletipModule,\n DatePickerModule,\n LayerModule,\n RemoveClassnamesDirective,\n ],\n})\nexport class SetTaskDueDateComponent {\n public readonly canModifyTaskSet$ = new BehaviorSubject<boolean>(false);\n public readonly canModifyTask$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set canModifyTask(value: boolean) {\n this.canModifyTaskSet$.next(true);\n this.canModifyTask$.next(value);\n }\n\n private readonly _task$ = new BehaviorSubject<Partial<ProcessInstanceTask> | null>(null);\n\n private get _task(): Partial<ProcessInstanceTask> | null {\n return this._task$.getValue();\n }\n\n public readonly hasDueDate$ = new BehaviorSubject<boolean>(false);\n\n public readonly selectedDateString$ = new BehaviorSubject<string>('');\n\n private get _selectedDateString(): string {\n return this.selectedDateString$.getValue();\n }\n\n @Input() public set task(value: ProcessInstanceTask | Task) {\n if (!value) return;\n this.hasDueDate$.next(!!value.due);\n this._task$.next(value);\n }\n\n public readonly taskDueDate$ = this._task$.pipe(\n filter(task => !!task),\n map(task => new Date(task.due))\n );\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n public readonly open$ = new Subject<boolean>();\n\n public readonly mouseIsOverDueDate$ = new BehaviorSubject<boolean>(false);\n\n public readonly toggletipTheme$ = this.cdsThemeService.toggletipTheme$;\n\n constructor(\n private readonly iconService: IconService,\n private readonly taskService: TaskService,\n private readonly cdsThemeService: CdsThemeService\n ) {\n this.iconService.registerAll([CalendarAdd16]);\n }\n\n public onDateValueChange(value: Date[]): void {\n const date = Array.isArray(value) && value[0];\n if (!date) return;\n this.selectedDateString$.next(date.toISOString());\n }\n\n public onSubmitButtonClick(): void {\n this.disabled$.next(true);\n\n this.taskService.setTaskDueDate(this._task.id, {dueDate: this._selectedDateString}).subscribe({\n next: () => {\n this.disabled$.next(false);\n this.hasDueDate$.next(true);\n this._task$.next({...this._task, due: this._selectedDateString});\n this.selectedDateString$.next('');\n this.closeToggletip();\n },\n error: () => {\n this.disabled$.next(false);\n },\n });\n }\n\n public onRemoveButtonClick(): void {\n this.disabled$.next(true);\n\n this.taskService.removeTaskDueDate(this._task.id).subscribe({\n next: () => {\n this.disabled$.next(false);\n this.hasDueDate$.next(false);\n this._task$.next({...this._task, due: null});\n },\n error: () => {\n this.disabled$.next(false);\n },\n });\n }\n\n private closeToggletip(): void {\n // needed to reliably trigger toggle tip closure\n this.open$.next(true);\n setTimeout(() => this.open$.next(false));\n }\n\n public onMouseEnterDueDate(): void {\n this.mouseIsOverDueDate$.next(true);\n }\n\n public onMouseLeaveDueDate(): void {\n this.mouseIsOverDueDate$.next(false);\n }\n}\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<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 } 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 ? obs.hasDueDate && !obs.mouseIsOverDueDate : obs.hasDueDate,\n }\"\n >\n <span class=\"bold\">{{ 'setTaskDueDate.dueDateText' | translate }}</span>\n\n \n\n {{ obs.taskDueDate | date: 'dd-MM-yyyy' }}\n </div>\n\n <button\n *ngIf=\"obs.canModifyTask\"\n cdsButton=\"ghost\"\n class=\"element remove-button\"\n [ngClass]=\"{active: obs.hasDueDate && obs.mouseIsOverDueDate}\"\n [disabled]=\"obs.disabled\"\n size=\"sm\"\n (click)=\"onRemoveButtonClick()\"\n >\n {{ 'setTaskDueDate.removeButtonText' | translate }}\n </button>\n\n <cds-toggletip\n align=\"bottom\"\n class=\"element main\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n [ngClass]=\"{active: !obs.hasDueDate}\"\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\n cdsToggletipContent\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"assign-due-date-popover-content\"\n >\n <cds-date-picker\n *ngIf=\"!obs.hasDueDate\"\n [cdsLayer]=\"1\"\n [label]=\"'Select date'\"\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 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","/*\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 */\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonModalSize} from '@valtimo/components';\nimport {SseService} from '@valtimo/sse';\nimport {FormSize, formSizeToCarbonModalSizeMap, TaskWithProcessLink} from '@valtimo/process-link';\nimport moment from 'moment';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {IntermediateSubmission, Task, TaskUpdateSseEvent} from '../../models';\nimport {TaskIntermediateSaveService} from '../../services';\nimport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n} from '../../task-permissions';\nimport {TaskDetailIntermediateSaveComponent} from '../task-detail-intermediate-save/task-detail-intermediate-save.component';\nimport {filter, take} from 'rxjs/operators';\nimport {IconService} from 'carbon-components-angular';\nimport {DocumentService} from '@valtimo/document';\nimport {TaskService} from '../../services/task.service';\nimport {FolderDetailsReference16} from '@carbon/icons';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n selector: 'valtimo-task-detail-modal',\n templateUrl: './task-detail-modal.component.html',\n styleUrls: ['./task-detail-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TaskDetailModalComponent implements OnInit, OnDestroy {\n @ViewChild(TaskDetailIntermediateSaveComponent)\n private readonly _intermediateSaveComponent: TaskDetailIntermediateSaveComponent;\n\n @Output() formSubmit = new EventEmitter();\n @Output() assignmentOfTaskChanged = new EventEmitter();\n\n @Input() set modalSize(value: FormSize) {\n if (value) this.size$.next(formSizeToCarbonModalSizeMap[value]);\n }\n\n @Input() set openFromCaseManagement(value: boolean) {\n if (value) this.openFromCaseManagement$.next(value);\n }\n\n public currentIntermediateSave$ = new BehaviorSubject<IntermediateSubmission | null>(null);\n\n public readonly processLinkPreloaded$ = new BehaviorSubject<boolean>(false);\n public readonly task$ = new BehaviorSubject<Task | null>(null);\n public readonly taskAndProcessLink$ = new BehaviorSubject<TaskWithProcessLink | null>(null);\n public readonly task = new BehaviorSubject<Task | null>(null);\n public readonly submission$ = new BehaviorSubject<any>({});\n public readonly page$ = new BehaviorSubject<any>(null);\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly businessKey$ = new BehaviorSubject<string>('');\n\n public readonly size$ = new BehaviorSubject<CarbonModalSize>('md');\n public readonly openFromCaseManagement$ = new BehaviorSubject<boolean>(false);\n\n public readonly canAssignUserToTask$ = new BehaviorSubject<boolean>(false);\n public readonly canModifyTask$ = new BehaviorSubject<boolean>(false);\n\n public readonly modalCloseEvent$ = new BehaviorSubject<boolean>(false);\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly router: Router,\n private readonly translateService: TranslateService,\n private readonly permissionService: PermissionService,\n private readonly logger: NGXLogger,\n private readonly taskIntermediateSaveService: TaskIntermediateSaveService,\n private readonly sseService: SseService,\n private readonly cdr: ChangeDetectorRef,\n private readonly iconService: IconService,\n private readonly documentService: DocumentService,\n private readonly taskService: TaskService\n ) {\n this.iconService.registerAll([FolderDetailsReference16]);\n }\n\n public ngOnInit(): void {\n this.openTaskSubscription();\n this.openTaskUpdateSseEventSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public openRelatedCase(): void {\n const businessKey = this.businessKey$.getValue();\n\n this.documentService\n .getDocument(businessKey)\n .pipe(take(1))\n .subscribe(document => {\n window.open(`/cases/${document.definitionId?.name}/document/${businessKey}`, '_blank');\n });\n }\n\n private openTaskSubscription(): void {\n this._subscriptions.add(\n this.task$.subscribe(task => {\n if (task) {\n this.logger.debug('Checking if user allowed to assign a user to Task with id:', task.id);\n this.businessKey$.next(task.businessKey);\n\n this.permissionService\n .requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n })\n .subscribe((allowed: boolean) => {\n this.canAssignUserToTask$.next(allowed);\n });\n\n this.permissionService\n .requestPermission(CAN_MODIFY_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task.id,\n })\n .subscribe((allowed: boolean) => {\n this.canModifyTask$.next(allowed);\n });\n } else {\n this.logger.debug('Reset is user allowed to assign a user to Task as task is null');\n this.canAssignUserToTask$.next(false);\n }\n })\n );\n }\n\n private openTaskUpdateSseEventSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.task$,\n this.sseService.getSseEventObservable<TaskUpdateSseEvent>('TASK_UPDATE'),\n ])\n .pipe(filter(([task, event]) => task?.id === event.taskId))\n .subscribe(() => this.closeModal())\n );\n }\n\n public clearCurrentProgress(): void {\n this._intermediateSaveComponent.clearCurrentProgress();\n }\n\n public openTaskDetails(task: Task | null): void {\n this.task$.next({...task});\n this.page$.next({\n title: task?.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${task?.created}`,\n });\n\n this.openModal();\n }\n\n public openTaskAndProcessLinkDetails(taskWithProcessLink: TaskWithProcessLink | null): void {\n this.processLinkPreloaded$.next(true);\n this.taskAndProcessLink$.next(taskWithProcessLink);\n this.task$.next({...(taskWithProcessLink.task as any)});\n this.page$.next({\n title: taskWithProcessLink.task?.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${taskWithProcessLink.task?.created}`,\n });\n\n this.openModal();\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeModal();\n this.router.navigate(['process-links']);\n }\n\n public onCurrentIntermediateSaveEvent(value: IntermediateSubmission | null): void {\n this.currentIntermediateSave$.next(value);\n }\n\n public onFormSubmit(): void {\n this.formSubmit.emit();\n }\n\n public onShowModalEvent(): void {\n this.showConfirmationModal$.next(true);\n }\n\n public closeModal(): void {\n this.modalOpen$.next(false);\n this.taskIntermediateSaveService.setSubmission({});\n this.modalCloseEvent$.next(!this.modalCloseEvent$.getValue());\n }\n\n private openModal(): void {\n this.modalOpen$.next(false);\n\n setTimeout(() => {\n this.modalOpen$.next(true);\n this.cdr.detectChanges();\n });\n }\n}\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\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 ></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 ></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-assign-user-to-task\n *ngIf=\"obs.task && assignmentOfTaskChanged\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n [canAssignUserToTask]=\"obs.canAssignUserToTask\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n ></valtimo-set-task-due-date>\n </div>\n</ng-template>\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\nimport {CarbonListNoResultsMessage} from '@valtimo/components';\n\nconst TASK_LIST_NO_SEARCH_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'task-list.noSearchResultsDescription',\n isSearchResult: true,\n title: 'task-list.noSearchResultsTitle',\n};\n\nexport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE};\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\nexport * from './task-list.constants';\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\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TaskService} from '../../services/task.service';\nimport moment from 'moment';\nimport {\n MappedSpecifiedTask,\n SpecifiedTask,\n Task,\n TaskListOtherFilters,\n TaskListParams,\n TaskPageParams,\n} from '../../models';\nimport {TaskDetailModalComponent} from '../task-detail-modal/task-detail-modal.component';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n of,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n ConfigService,\n Page,\n SearchField,\n SearchFieldValues,\n SortState,\n TaskListTab,\n} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {SseService} from '@valtimo/sse';\nimport {distinctUntilChanged, filter, map, take} from 'rxjs/operators';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n CAN_VIEW_CASE_PERMISSION,\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n} from '../../task-permissions';\nimport {\n TaskListColumnService,\n TaskListPaginationService,\n TaskListQueryParamService,\n TaskListSearchService,\n TaskListService,\n} from '../../services';\nimport {isEqual} from 'lodash';\nimport {ListItem} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TaskListSortService} from '../../services/task-list-sort.service';\nimport {CarbonListNoResultsMessage, PageTitleService} from '@valtimo/components';\nimport {TASK_LIST_NO_SEARCH_RESULTS_MESSAGE} from '../../constants';\nimport {TaskUpdateSseEvent} from '../../models';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n selector: 'valtimo-task-list',\n templateUrl: './task-list.component.html',\n styleUrls: ['./task-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TaskListService,\n TaskListColumnService,\n TaskListPaginationService,\n TaskListSortService,\n TaskListSearchService,\n TaskListQueryParamService,\n ],\n})\nexport class TaskListComponent implements OnInit, OnDestroy {\n @ViewChild('taskDetail') private readonly _taskDetail: TaskDetailModalComponent;\n\n @HostListener('window:popstate', ['$event'])\n private onPopState() {\n setTimeout(() => {\n this.setParamsFromQueryParams();\n });\n }\n\n public readonly ALL_CASES_ID = this.taskListService.ALL_CASES_ID;\n\n public readonly selectedTaskType$ = this.taskListService.selectedTaskType$;\n\n private readonly _overrideNoResultsMessage$ =\n new BehaviorSubject<CarbonListNoResultsMessage | null>(null);\n\n public readonly noResultsMessage$: Observable<CarbonListNoResultsMessage> = combineLatest([\n this.selectedTaskType$,\n this._overrideNoResultsMessage$,\n ]).pipe(\n map(\n ([selectedTaskType, overrideNoResultsMessage]) =>\n overrideNoResultsMessage || {\n title: 'task-list.' + selectedTaskType + '.noResultsTitle',\n description: 'task-list.' + selectedTaskType + '.noResultsDescription',\n isSearchResult: false,\n }\n )\n );\n\n public readonly fields$ = this.taskListColumnService.fields$;\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n public readonly visibleTabs$ = new BehaviorSubject<Array<TaskListTab> | null>(null);\n\n private _enableLoadingAnimation$ = new BehaviorSubject<boolean>(true);\n\n public readonly cachedTasks$ = new BehaviorSubject<Task[] | MappedSpecifiedTask[] | null>(null);\n\n public readonly paginationForCurrentTaskTypeForList$ =\n this.taskListPaginationService.paginationForCurrentTaskTypeForList$;\n\n public readonly sortStateForCurrentTaskType$ =\n this.taskListSortService.sortStateForCurrentTaskType$;\n\n public readonly overrideSortState$ = this.taskListSortService.overrideSortState$;\n\n private readonly _reload$ = new BehaviorSubject<boolean>(true);\n\n public readonly caseDefinitionKey$ = this.taskListService.caseDefinitionKey$;\n\n public readonly tasks$: Observable<Task[] | MappedSpecifiedTask[]> = combineLatest([\n this.taskListService.loadingStateForCaseDefinition$,\n this.selectedTaskType$,\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListSortService.sortStringForCurrentTaskType$,\n this.caseDefinitionKey$,\n this._enableLoadingAnimation$,\n this._reload$,\n this.taskListSearchService.otherFilters$,\n this.taskListSortService.overrideSortStateString$,\n ]).pipe(\n filter(([loadingStateForCaseDefinition]) => loadingStateForCaseDefinition === false),\n map(\n ([\n _,\n selectedTaskType,\n paginationForSelectedTaskType,\n sortStringForSelectedTaskType,\n caseDefinitionKey,\n enableLoadingAnimation,\n reload,\n otherFilters,\n overrideSortStateString,\n ]) =>\n this.getTaskListParams(\n paginationForSelectedTaskType,\n overrideSortStateString || sortStringForSelectedTaskType,\n selectedTaskType,\n caseDefinitionKey,\n enableLoadingAnimation,\n reload,\n otherFilters\n )\n ),\n distinctUntilChanged((previous, current) => isEqual(previous.params, current.params)),\n tap(params => {\n if (params.enableLoadingAnimation) this.loadingTasks$.next(true);\n this.taskListQueryParamService.setTaskListParams(params.params);\n }),\n switchMap(({params}) =>\n combineLatest([\n this.taskService.queryTasksPageV3(\n params.selectedTaskType,\n params.params,\n params.caseDefinitionKey,\n params.otherFilters\n ),\n of(!!params.caseDefinitionKey),\n ])\n ),\n switchMap(([tasksResult, isSpecified]) =>\n this.getTaskListPermissionsRequest(tasksResult, isSpecified)\n ),\n map(([isSpecified, taskResult, canViewTaskPermissions, canViewCasePermissions]) => {\n this.updateTaskListPaginationAfterResponse(Number(taskResult.totalElements));\n\n return this.mapTasksForList(\n isSpecified,\n taskResult,\n canViewTaskPermissions,\n canViewCasePermissions\n );\n }),\n tap(tasks => {\n this.cachedTasks$.next(tasks);\n this.loadingTasks$.next(false);\n this.disableLoadingAnimation();\n\n this.taskListSearchService.otherFilters$.pipe(take(1)).subscribe(otherFilters => {\n this._overrideNoResultsMessage$.next(\n otherFilters?.length > 0 ? TASK_LIST_NO_SEARCH_RESULTS_MESSAGE : null\n );\n });\n })\n );\n\n public readonly loadingCaseListItems$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedCaseDefinitionId$ = new BehaviorSubject<string>(this.ALL_CASES_ID);\n\n public readonly caseListItems$: Observable<ListItem[]> = combineLatest([\n this.documentService.getAllDefinitions(),\n this._selectedCaseDefinitionId$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([documentDefinitionRes, selectedCaseDefinitionId]) => [\n {\n content: this.translateService.instant('task-list.allCases'),\n id: this.ALL_CASES_ID,\n selected: selectedCaseDefinitionId === this.ALL_CASES_ID,\n },\n ...documentDefinitionRes.content.map(documentDefinition => ({\n id: documentDefinition.id.name,\n content: documentDefinition?.schema?.title,\n selected: documentDefinition.id.name === selectedCaseDefinitionId,\n })),\n ]),\n tap(() => this.loadingCaseListItems$.next(false))\n );\n\n public readonly taskListColumnsForCase$ = this.taskListColumnService.taskListColumnsForCase$;\n\n public readonly loadingSearchFields$ = this.taskListSearchService.loadingSearchFields$;\n public readonly searchFields$: Observable<SearchField[]> =\n this.taskListSearchService.searchFields$;\n\n private readonly _DEFAULT_TASK_LIST_TABS: TaskListTab[] = [\n TaskListTab.MINE,\n TaskListTab.OPEN,\n TaskListTab.ALL,\n ];\n\n public readonly setSearchFieldValuesSubject$ = new BehaviorSubject<SearchFieldValues>({});\n public readonly clearSearchFieldValuesSubject$ = new Subject<null>();\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly permissionService: PermissionService,\n private readonly router: Router,\n private readonly taskService: TaskService,\n private readonly taskListService: TaskListService,\n private readonly translateService: TranslateService,\n private readonly taskListColumnService: TaskListColumnService,\n private readonly taskListPaginationService: TaskListPaginationService,\n private readonly taskListSortService: TaskListSortService,\n private readonly taskListSearchService: TaskListSearchService,\n private readonly taskListQueryParamService: TaskListQueryParamService,\n private readonly pageTitleService: PageTitleService,\n private readonly sseService: SseService\n ) {}\n\n public ngOnInit(): void {\n this.taskListColumnService.resetTaskListFields();\n this.setVisibleTabs();\n this.pageTitleService.disableReset();\n this.setParamsFromQueryParams();\n this.openTaskUpdateSseEventSubscription();\n }\n\n private openTaskUpdateSseEventSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.sseService.getSseEventObservable<TaskUpdateSseEvent>('TASK_UPDATE'),\n this.caseDefinitionKey$,\n ])\n .pipe(\n filter(\n ([event, caseDefinitionKey]) =>\n caseDefinitionKey === null || event.caseDefinitionKey === caseDefinitionKey\n )\n )\n .subscribe(() => this.reload())\n );\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this._subscriptions.unsubscribe();\n }\n\n public paginationClicked(page: number, type: TaskListTab | string): void {\n this.taskListPaginationService.updateTaskPagination(type as TaskListTab, {page: page - 1});\n }\n\n public paginationSet(newSize: number): void {\n combineLatest([\n this.taskListPaginationService.paginationForCurrentTaskType$,\n this.taskListService.selectedTaskType$,\n ])\n .pipe(take(1))\n .subscribe(([pagination, selectedTaskType]) => {\n this.taskListPaginationService.updateTaskPagination(selectedTaskType, {\n size: Number(newSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n pagination.page,\n Number(newSize),\n pagination.collectionSize\n ),\n });\n });\n }\n\n public tabChange(tab: TaskListTab | string): void {\n this.taskListService.selectedTaskType$.pipe(take(1)).subscribe(selectedTaskType => {\n if (selectedTaskType !== tab) {\n this.enableLoadingAnimation();\n this.taskListService.setSelectedTaskType(tab as TaskListTab);\n this.taskListPaginationService.updateTaskPagination(tab as TaskListTab, {page: 0});\n }\n });\n }\n\n public openRelatedCase(event: MouseEvent, index: number): void {\n event.stopPropagation();\n\n this.cachedTasks$.pipe(take(1)).subscribe(cachedTasks => {\n const currentTask = cachedTasks && cachedTasks[index];\n\n if (currentTask && !currentTask.caseLocked) {\n this.documentService\n .getDocument(currentTask.businessKey)\n .pipe(take(1))\n .subscribe(document => {\n this.router.navigate([\n `/cases/${document.definitionId?.name}/document/${currentTask.businessKey}`,\n ]);\n });\n }\n });\n }\n\n public rowOpenTaskClick(task): void | boolean {\n return !task.endTime && !task.locked ? this._taskDetail.openTaskDetails(task) : false;\n }\n\n public sortChanged(sortState: SortState): void {\n this.taskListSortService.setOverrideSortState(sortState);\n this.taskListSortService.updateSortState(this.taskListService.selectedTaskType, sortState);\n }\n\n public setCaseDefinition(definition: {item: {id: string}}): void {\n if (definition.item.id) {\n this.taskListSortService.resetOverrideSortState();\n this.loadingTasks$.next(true);\n this.taskListService.setCaseDefinitionKey(definition.item.id);\n }\n }\n\n public reload(): void {\n this.enableLoadingAnimation();\n this._reload$.next(!this._reload$.getValue());\n }\n\n public search(searchFieldValues: SearchFieldValues): void {\n if (!searchFieldValues) return;\n\n this.taskListSearchService.setSearchFieldValues(searchFieldValues);\n }\n\n private updateTaskListPaginationAfterResponse(newCollectionSize: number): void {\n this.taskListPaginationService.paginationForCurrentTaskType$\n .pipe(take(1))\n .subscribe(currentPagination => {\n this.taskListPaginationService.updateTaskPagination(this.taskListService.selectedTaskType, {\n collectionSize: Number(newCollectionSize),\n page: this.taskListPaginationService.getLastAvailablePage(\n currentPagination.page,\n currentPagination.size,\n newCollectionSize\n ),\n });\n });\n }\n\n private setVisibleTabs(): void {\n const visibleTabs = this.configService.config?.visibleTaskListTabs;\n\n if (visibleTabs) {\n this.visibleTabs$.next(visibleTabs);\n this.taskListService.setSelectedTaskType(visibleTabs[0]);\n } else {\n this.visibleTabs$.next(this._DEFAULT_TASK_LIST_TABS);\n this.taskListService.setSelectedTaskType(this._DEFAULT_TASK_LIST_TABS[0]);\n }\n }\n\n private disableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(false);\n }\n\n private enableLoadingAnimation(): void {\n this._enableLoadingAnimation$.next(true);\n }\n\n private getTaskListParams(\n paginationForSelectedTaskType: TaskPageParams,\n sortStringForSelectedTaskType: string,\n selectedTaskType: TaskListTab,\n caseDefinitionKey: string,\n enableLoadingAnimation: boolean,\n reload: boolean,\n otherFilters?: TaskListOtherFilters\n ): TaskListParams {\n const params = {\n ...paginationForSelectedTaskType,\n ...(sortStringForSelectedTaskType && {sort: sortStringForSelectedTaskType}),\n };\n\n delete params.collectionSize;\n\n return {\n params: {\n reload,\n selectedTaskType,\n params,\n ...(caseDefinitionKey &&\n caseDefinitionKey !== this.ALL_CASES_ID && {caseDefinitionKey: caseDefinitionKey}),\n ...(otherFilters && {otherFilters}),\n },\n enableLoadingAnimation,\n };\n }\n\n private getTaskListPermissionsRequest(\n tasksResult: Page<Task> | Page<SpecifiedTask>,\n isSpecified: boolean\n ) {\n const taskResults = tasksResult.content;\n const hasTaskResults = Array.isArray(taskResults) && taskResults.length > 0;\n\n return combineLatest([\n of(isSpecified),\n of(tasksResult),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: !isSpecified ? (task as Task).id : (task as SpecifiedTask).id,\n })\n )\n )\n : of(null),\n hasTaskResults\n ? combineLatest(\n taskResults.map(task =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: task.businessKey,\n })\n )\n )\n : of(null),\n ]);\n }\n\n private mapTasksForList(\n isSpecified: boolean,\n tasks: Page<Task> | Page<SpecifiedTask>,\n canViewTaskPermissions: boolean[] | null,\n canViewCasePermissions: boolean[] | null\n ): Task[] | MappedSpecifiedTask[] {\n const MOMENT_FORMAT = 'DD MMM YYYY HH:mm';\n\n if (isSpecified) {\n return (tasks as Page<SpecifiedTask>).content.map((specifiedTask, specifiedTaskIndex) =>\n specifiedTask.items.reduce(\n (acc, curr) =>\n ({\n id: specifiedTask.id,\n businessKey: specifiedTask.businessKey,\n processInstanceId: specifiedTask.processInstanceId,\n name: specifiedTask.name,\n ...(moment(specifiedTask.created).isValid() && {\n created: moment(specifiedTask.created).format(MOMENT_FORMAT),\n }),\n ...(canViewTaskPermissions && {locked: !canViewTaskPermissions[specifiedTaskIndex]}),\n ...(canViewCasePermissions && {\n caseLocked: !canViewCasePermissions[specifiedTaskIndex],\n }),\n ...acc,\n [curr.key]: curr.value,\n }) as MappedSpecifiedTask,\n {}\n )\n ) as MappedSpecifiedTask[];\n }\n\n return (tasks as Page<Task>)?.content?.map((task, taskIndex) => {\n const createdDate = moment(task.created);\n const dueDate = moment(task.due);\n const taskCopy = {...task};\n\n if (task.due && dueDate.isValid()) taskCopy.due = dueDate.format(MOMENT_FORMAT);\n if (createdDate.isValid()) taskCopy.created = createdDate.format(MOMENT_FORMAT);\n if (canViewTaskPermissions) taskCopy.locked = !canViewTaskPermissions[taskIndex];\n if (canViewCasePermissions) taskCopy.caseLocked = !canViewCasePermissions[taskIndex];\n\n return taskCopy;\n }) as Task[];\n }\n\n private setParamsFromQueryParams(): void {\n const decodedParams = this.taskListQueryParamService.getTaskListQueryParams();\n\n if (decodedParams.caseDefinitionKey) {\n this.taskListService.setCaseDefinitionKey(decodedParams.caseDefinitionKey);\n this._selectedCaseDefinitionId$.next(decodedParams.caseDefinitionKey);\n }\n\n if (decodedParams.otherFilters?.length > 0) {\n const searchFieldValues = this.taskListSearchService.mapOtherFilterToSearchValues(\n decodedParams.otherFilters\n );\n this.setSearchFieldValuesSubject$.next(searchFieldValues);\n } else {\n this.clearSearchFieldValuesSubject$.next(null);\n }\n\n if (decodedParams.selectedTaskType)\n this.taskListService.setSelectedTaskType(decodedParams.selectedTaskType);\n\n if (decodedParams.params?.sort) {\n const stateFromSortString = this.taskListSortService.getSortStateFromSortString(\n decodedParams.params.sort\n );\n if (stateFromSortString) this.taskListSortService.setOverrideSortState(stateFromSortString);\n }\n\n if (decodedParams.params)\n this.taskListPaginationService.updateTaskPagination(\n this.taskListService.selectedTaskType,\n decodedParams.params\n );\n }\n}\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\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 ></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 #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","/*\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\nimport {User} from '@valtimo/shared';\n\ninterface Task {\n assignee: string;\n caseDefinitionId: string;\n caseExecutionId: string;\n caseInstanceId: string;\n created: string;\n delegationState: any;\n description: string;\n due: string;\n executionId: string;\n followUp: any;\n formKey: string;\n formless: boolean;\n id: string;\n listItemFields: ListItemField[];\n name: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n suspended: boolean;\n taskDefinitionKey: string;\n tenantId: string;\n formLocation: string;\n businessKey: string;\n processDefinitionKey: string;\n valtimoAssignee: User;\n locked?: boolean;\n caseLocked?: boolean;\n}\n\ninterface ListItemField {\n key: string;\n value: string;\n label: string;\n}\n\ninterface AssigneeRequest {\n assignee: string;\n}\n\ninterface SpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created: Date;\n items: {key: string; value: any}[];\n}\n\ninterface MappedSpecifiedTask {\n id: string;\n businessKey: string;\n processInstanceId: string;\n name: string;\n created?: string;\n locked?: boolean;\n caseLocked?: boolean;\n [key: string]: any;\n}\n\ninterface SetTaskDueDateRequest {\n dueDate: string | null;\n}\n\nexport {\n AssigneeRequest,\n ListItemField,\n Task,\n SpecifiedTask,\n MappedSpecifiedTask,\n SetTaskDueDateRequest,\n};\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\nimport {FormDefinition} from '@valtimo/form-management';\n\nexport interface TaskDefinition {\n id: string;\n name: string;\n formDefinition: FormDefinition | null;\n}\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\nimport {ListItem} from 'carbon-components-angular';\nimport {SearchFilter, SearchFilterRange, TaskListTab} from '@valtimo/shared';\n\ninterface TaskPageParams {\n page: number;\n size: number;\n collectionSize?: number;\n sort?: string;\n}\n\nenum TaskListColumnDefaultSort {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\ninterface TaskListColumnEnum {\n [key: string]: string;\n}\n\ninterface TaskListColumnDisplayTypeParameters {\n enum?: TaskListColumnEnum;\n dateFormat?: string;\n}\n\ninterface TaskListColumnDisplayType {\n type: string;\n displayTypeParameters?: TaskListColumnDisplayTypeParameters;\n}\n\ninterface TaskListColumn {\n title?: string;\n key: string;\n path: string;\n displayType: TaskListColumnDisplayType;\n sortable: boolean;\n defaultSort?: TaskListColumnDefaultSort;\n order?: number;\n}\n\ntype TaskListColumnModalType = 'edit' | 'add';\n\ntype TaskListColumnModalCloseEvent = 'close' | 'refresh';\n\ninterface TaskListColumnListItem extends ListItem {\n key: string;\n}\n\ntype TaskListOtherFilters = Array<SearchFilter | SearchFilterRange>;\n\ninterface TaskListQueryParams {\n selectedTaskType: TaskListTab;\n params: TaskPageParams;\n caseDefinitionKey?: string;\n otherFilters?: TaskListOtherFilters;\n}\n\ninterface TaskListEncodedQueryParams {\n selectedTaskType: TaskListTab;\n params: string;\n caseDefinitionName?: string;\n otherFilters?: string;\n}\n\ninterface TaskListQueryParamsWithReload extends TaskListQueryParams {\n reload: boolean;\n}\n\ninterface TaskListParams {\n params: TaskListQueryParamsWithReload;\n enableLoadingAnimation: boolean;\n}\n\nexport {\n TaskListColumn,\n TaskListColumnDisplayType,\n TaskListColumnDefaultSort,\n TaskListColumnModalType,\n TaskListColumnListItem,\n TaskListColumnModalCloseEvent,\n TaskListColumnDisplayTypeParameters,\n TaskListColumnEnum,\n TaskPageParams,\n TaskListParams,\n TaskListOtherFilters,\n TaskListQueryParams,\n TaskListQueryParamsWithReload,\n TaskListEncodedQueryParams,\n};\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\nexport interface IntermediateSubmission {\n submission: object;\n taskInstanceId: string;\n createdBy: string;\n createdOn: string;\n editedBy?: string;\n editedOn?: string;\n}\n\nexport interface IntermediateSaveRequest {\n submission: object;\n taskInstanceId: string;\n}\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\nenum TaskListSearchFieldDataType {\n TEXT = 'text',\n NUMBER = 'number',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n BOOLEAN = 'boolean',\n}\n\nenum TaskListSearchFieldFieldType {\n SINGLE = 'single',\n RANGE = 'range',\n SINGLE_SELECT_DROPDOWN = 'single_select_dropdown',\n MULTI_SELECT_DROPDOWN = 'multi_select_dropdown',\n}\n\nenum TaskListSearchFieldMatchType {\n LIKE = 'like',\n EXACT = 'exact',\n}\n\nenum TaskListSearchDropdownDataProvider {\n DATABASE = 'dropdownDatabaseDataProvider',\n JSON = 'dropdownJsonFileDataProvider',\n}\n\ninterface TaskListSearchField {\n id: string;\n ownerId: string;\n dataType: TaskListSearchFieldDataType;\n fieldType: TaskListSearchFieldFieldType;\n key: string;\n title?: string;\n path: string;\n order: number;\n matchType: TaskListSearchFieldMatchType;\n dropdownDataProvider?: string;\n dropdownValues?: TaskListSearchDropdownValue;\n}\n\ninterface TaskListSearchDropdownValue {\n [key: string]: string;\n}\n\nexport {\n TaskListSearchDropdownDataProvider,\n TaskListSearchFieldDataType,\n TaskListSearchFieldFieldType,\n TaskListSearchFieldMatchType,\n TaskListSearchField,\n TaskListSearchDropdownValue,\n};\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\nimport {BaseSseEvent} from '@valtimo/sse';\n\ninterface TaskUpdateSseEvent extends BaseSseEvent {\n taskId: string;\n documentId: string;\n caseDefinitionKey: string;\n}\n\nexport {TaskUpdateSseEvent};\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\nexport * from './task.model';\nexport * from './task-definition.model';\nexport * from './task-list.model';\nexport * from './task-intermediate-save.model';\nexport * from './task-list-search-field.model';\nexport * from './task-sse-event.model';\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\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {ROLE_USER} from '@valtimo/shared';\n\nconst routes: Routes = [\n {\n path: 'tasks',\n component: TaskListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Tasks', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TaskRoutingModule {}\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 */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n CamundaFormModule,\n CarbonListModule,\n ConfirmationModalModule,\n FormIoModule,\n PageHeaderModule,\n RenderInPageHeaderDirective,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n SpinnerModule,\n ValtimoCdsModalDirective,\n WidgetModule,\n TooltipModule as ValtimoTooltipModule,\n} from '@valtimo/components';\nimport {HttpLoaderFactory} from '@valtimo/shared';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {\n ButtonModule,\n ContentSwitcherModule,\n DropdownModule,\n IconModule,\n LinkModule,\n ModalModule,\n TabsModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {AssignUserToTaskComponent} from './components/assign-user-to-task/assign-user-to-task.component';\nimport {SetTaskDueDateComponent} from './components/set-task-due-date/set-task-due-date.component';\nimport {TaskDetailContentComponent} from './components/task-detail-content/task-detail-content.component';\nimport {TaskDetailIntermediateSaveComponent} from './components/task-detail-intermediate-save/task-detail-intermediate-save.component';\nimport {TaskDetailModalComponent} from './components/task-detail-modal/task-detail-modal.component';\nimport {TaskListComponent} from './components/task-list/task-list.component';\nimport {TaskRoutingModule} from './task-routing.module';\n\n@NgModule({\n declarations: [TaskListComponent, TaskDetailModalComponent],\n imports: [\n CommonModule,\n TaskRoutingModule,\n CarbonListModule,\n PageHeaderModule,\n WidgetModule,\n SpinnerModule,\n SearchableDropdownSelectModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n FormsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n NgbModule,\n FormIoModule,\n ModalModule,\n LinkModule,\n ProcessLinkModule,\n TabsModule,\n ContentSwitcherModule,\n RenderInPageHeaderDirective,\n DropdownModule,\n ButtonModule,\n IconModule,\n TooltipModule,\n ValtimoTooltipModule,\n ConfirmationModalModule,\n SearchFieldsModule,\n AssignUserToTaskComponent,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n SetTaskDueDateComponent,\n ValtimoCdsModalDirective,\n ],\n exports: [TaskListComponent, TaskDetailModalComponent],\n})\nexport class TaskModule {}\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\n/*\n * Public API Surface of task\n */\n\nexport * from './lib/components/assign-user-to-task/assign-user-to-task.component';\nexport * from './lib/components/task-detail-content/task-detail-content.component';\nexport * from './lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component';\nexport * from './lib/components/task-detail-modal/task-detail-modal.component';\nexport * from './lib/components/task-list/task-list.component';\nexport * from './lib/components/set-task-due-date/set-task-due-date.component';\nexport * from './lib/constants';\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/services/task.service';\nexport * from './lib/task-permissions';\nexport * from './lib/task.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1.TaskService","i2.TaskListService","i3.TaskListSortService","i1.TaskListService","map","i1","i3.TaskService","take","filter","i3","i5","i6","i4","i8","i9.TaskIntermediateSaveService","i9.TaskService","i11","i3.TaskIntermediateSaveService","i2.TaskService","i5.TaskIntermediateSaveService","i7","i10","i12.AssignUserToTaskComponent","i13.TaskDetailContentComponent","i14.TaskDetailIntermediateSaveComponent","i15.SetTaskDueDateComponent","distinctUntilChanged","i5.TaskService","i6.TaskListService","i6.TaskListColumnService","i6.TaskListPaginationService","i8.TaskListSortService","i6.TaskListSearchService","i6.TaskListQueryParamService","i13","i15.TaskDetailModalComponent","TooltipModule","ValtimoTooltipModule"],"mappings":"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"}
|