@valtimo/case 13.30.0 → 13.32.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-case.mjs","sources":["../../../../projects/valtimo/case/src/lib/permissions/case-detail.permissions.ts","../../../../projects/valtimo/case/src/lib/permissions/index.ts","../../../../projects/valtimo/case/src/lib/services/case-bulk-assign.service.ts","../../../../projects/valtimo/case/src/lib/services/case-column.service.ts","../../../../projects/valtimo/case/src/lib/services/case-parameter.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-assignee.service.ts","../../../../projects/valtimo/case/src/lib/services/case.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-pagination.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-search.service.ts","../../../../projects/valtimo/case/src/lib/models/candidate-user.model.ts","../../../../projects/valtimo/case/src/lib/models/case-detail-tab.model.ts","../../../../projects/valtimo/case/src/lib/models/case-parameters.model.ts","../../../../projects/valtimo/case/src/lib/models/search.model.ts","../../../../projects/valtimo/case/src/lib/models/tab-api.model.ts","../../../../projects/valtimo/case/src/lib/models/tabs.model.ts","../../../../projects/valtimo/case/src/lib/models/case-detail-layout.model.ts","../../../../projects/valtimo/case/src/lib/models/case-sse-event.model.ts","../../../../projects/valtimo/case/src/lib/models/index.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/summary/summary.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/summary/summary.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/progress/progress.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/progress/progress.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/audit/audit.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/audit/audit.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/not-found/not-found.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/not-found/not-found.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/s3-documents/s3-documents.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/s3-documents/s3-documents.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/documents/documents.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/documents/documents.component.html","../../../../projects/valtimo/case/src/lib/services/notes.service.ts","../../../../projects/valtimo/case/src/lib/components/note-modal/note-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/note-modal/note-modal.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/notes/notes.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/notes/notes.component.html","../../../../projects/valtimo/case/src/lib/constants/tab.ts","../../../../projects/valtimo/case/src/lib/constants/case-tab-token.ts","../../../../projects/valtimo/case/src/lib/constants/case-list.constants.ts","../../../../projects/valtimo/case/src/lib/constants/case-status.constants.ts","../../../../projects/valtimo/case/src/lib/constants/case-widget.constants.ts","../../../../projects/valtimo/case/src/lib/constants/case-detail-layout.constants.ts","../../../../projects/valtimo/case/src/lib/constants/index.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/formio/formio.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/formio/formio.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.permissions.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/widget-process/widget-process.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.service.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/field/case-widget-field.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/field/case-widget-field.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/custom/case-widget-custom.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/custom/case-widget-custom.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/formio/case-widget-formio.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/formio/case-widget-formio.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/table/case-widget-table.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/table/case-widget-table.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/map/case-widget-map.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/map/case-widget-map.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/person-card/case-widget-person-card.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/person-card/case-widget-person-card.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/metroline/case-widget-metroline.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/metroline/case-widget-metroline.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/highlight/case-widget-highlight.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/highlight/case-widget-highlight.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.component.html","../../../../projects/valtimo/case/src/lib/services/case-tab-api.service.ts","../../../../projects/valtimo/case/src/lib/services/case-tab.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-status.service.ts","../../../../projects/valtimo/case/src/lib/services/start-modal.service.ts","../../../../projects/valtimo/case/src/lib/services/case-widgets-api.service.ts","../../../../projects/valtimo/case/src/lib/services/case-detail-layout.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-case-tag.service.ts","../../../../projects/valtimo/case/src/lib/services/case-export.service.ts","../../../../projects/valtimo/case/src/lib/services/case-menu.service.ts","../../../../projects/valtimo/case/src/lib/services/case-header-widget-api.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-hidden-columns.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-quick-search.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-orchestration.service.ts","../../../../projects/valtimo/case/src/lib/services/index.ts","../../../../projects/valtimo/case/src/lib/components/case-bulk-assign-modal/case-bulk-assign-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/case-bulk-assign-modal/case-bulk-assign-modal.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail-task-list/case-detail-task-list.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail-task-list/case-detail-task-list.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail-task-detail/case-detail-task-detail.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail-task-detail/case-detail-task-detail.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail-header-widget/case-detail-header-widget.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail-header-widget/case-detail-header-widget.component.html","../../../../projects/valtimo/case/src/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.html","../../../../projects/valtimo/case/src/lib/pipes/tab-translate/tab-translate.pipe.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/case-detail.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/case-detail.component.html","../../../../projects/valtimo/case/src/lib/components/case-process-start-modal/case-process-start-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/case-process-start-modal/case-process-start-modal.component.html","../../../../projects/valtimo/case/src/lib/components/case-list-actions/case-list-actions.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list-actions/case-list-actions.component.html","../../../../projects/valtimo/case/src/lib/components/case-list-tabs/case-list-tabs.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list-tabs/case-list-tabs.component.html","../../../../projects/valtimo/case/src/lib/components/case-list-toolbar/case-list-toolbar.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list-toolbar/case-list-toolbar.component.html","../../../../projects/valtimo/case/src/lib/components/case-list/case-list.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list/case-list.component.html","../../../../projects/valtimo/case/src/lib/components/case-update/case-update.component.ts","../../../../projects/valtimo/case/src/lib/components/case-update/case-update.component.html","../../../../projects/valtimo/case/src/lib/components/generic-case-list/generic-case-list.component.ts","../../../../projects/valtimo/case/src/lib/components/generic-case-list/generic-case-list.component.html","../../../../projects/valtimo/case/src/lib/case-routing.module.ts","../../../../projects/valtimo/case/src/lib/pipes/tab-translate/tab-translate-pipe.module.ts","../../../../projects/valtimo/case/src/lib/pipes/tab-translate/index.ts","../../../../projects/valtimo/case/src/lib/pipes/index.ts","../../../../projects/valtimo/case/src/lib/case.module.ts","../../../../projects/valtimo/case/src/public_api.ts","../../../../projects/valtimo/case/src/valtimo-case.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 {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n add = 'create',\n assign = 'assign',\n claim = 'claim',\n delete = 'delete',\n edit = 'modify',\n view = 'view',\n export = 'export',\n}\n\nenum CASE_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n note = 'com.ritense.note.domain.Note',\n jsonSchemaDocumentDefinition = 'com.ritense.document.domain.impl.JsonSchemaDocumentDefinition',\n}\n\nconst CAN_CLAIM_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.claim,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_ADD_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_DELETE_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_EDIT_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.edit,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_ASSIGN_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_CREATE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_DELETE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_EXPORT_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.export,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nexport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n CAN_VIEW_CASE_PERMISSION,\n CAN_CREATE_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n CAN_EXPORT_CASE_PERMISSION,\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 './case-detail.permissions';\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 {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {CandidateUser} from '../models';\n\n@Injectable()\nexport class CaseBulkAssignService {\n private _valtimoEndpointUri: string;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}v1/document/`;\n }\n\n public bulkAssign(documentIds: string[], assigneeId?: string, assignedTeamKey?: string): Observable<void> {\n return this.http.post<void>(`${this._valtimoEndpointUri}assign`, {assigneeId, assignedTeamKey, documentIds});\n }\n\n public loadCandidateUsers(documentIds: string[]): Observable<CandidateUser[]> {\n return this.http.post<CandidateUser[]>(`${this._valtimoEndpointUri}candidate-user`, {\n documentIds: documentIds,\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 {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport {CaseListColumn, DocumentService} from '@valtimo/document';\nimport {ListField} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Injectable()\nexport class CaseColumnService {\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public getDefinitionColumns(\n caseDefinitionKey: string\n ): Observable<{columns: Array<DefinitionColumn>; hasApiConfig: boolean}> {\n const defaultDefinitionTable = this.configService.config.defaultDefinitionTable;\n\n return combineLatest([\n this.documentService.getCaseList(caseDefinitionKey),\n this.configService.getFeatureToggleObservable('caseListColumn', true),\n ]).pipe(\n map(([caseListColumns, caseListColumnEnabled]) => {\n const apiCaseListColumns =\n caseListColumnEnabled &&\n caseListColumns &&\n Array.isArray(caseListColumns) &&\n caseListColumns.length > 0 &&\n this.mapCaseListColumnsToDefinitionColumns(caseListColumns);\n\n return {\n columns: apiCaseListColumns || defaultDefinitionTable,\n hasApiConfig: !!apiCaseListColumns,\n };\n })\n );\n }\n\n public mapDefinitionColumnsToListFields(\n columns: Array<DefinitionColumn>,\n hasApiColumnConfig: boolean\n ): Array<ListField> {\n return columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key: !hasApiColumnConfig ? column.propertyName : column.translationKey,\n label: column.title || validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n ...(column.format && {format: column.format}),\n ...(column.tagAmount && {tagAmount: column.tagAmount}),\n ...(column.default && {default: column.default}),\n };\n });\n }\n\n private mapCaseListColumnsToDefinitionColumns(\n caseListColumns: Array<CaseListColumn>\n ): Array<DefinitionColumn> {\n return caseListColumns.map(caseListColumn => ({\n translationKey: caseListColumn.key,\n sortable: caseListColumn.sortable,\n default: caseListColumn.defaultSort,\n viewType: this.getViewType(caseListColumn.displayType.type),\n propertyName: this.getPropertyName(caseListColumn.path),\n ...(caseListColumn.title && {title: caseListColumn.title}),\n ...(caseListColumn?.displayType?.displayTypeParameters?.enum && {\n enum: caseListColumn.displayType.displayTypeParameters.enum as any,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.dateFormat && {\n format: caseListColumn.displayType?.displayTypeParameters?.dateFormat,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.tagAmount && {\n tagAmount: caseListColumn.displayType?.displayTypeParameters?.tagAmount,\n }),\n }));\n }\n\n private getViewType(caseListColumnDisplayType: string): string {\n switch (caseListColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return caseListColumnDisplayType;\n }\n }\n\n private getPropertyName(caseListColumnPath: string): string {\n return caseListColumnPath.replace('doc:', '$.').replace('case:', '');\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, OnDestroy} from '@angular/core';\nimport {CaseParameters} from '../models';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n Subscription,\n take,\n} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AssigneeFilter, Direction, SearchFieldValues} from '@valtimo/shared';\nimport {Pagination} from '@valtimo/components';\n\n@Injectable()\nexport class CaseParameterService implements OnDestroy {\n private readonly _caseParameters$ = new BehaviorSubject<CaseParameters>(undefined);\n private readonly _searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n\n public get caseParameters$(): Observable<CaseParameters> {\n return this._caseParameters$.asObservable();\n }\n\n public get searchFieldValues$(): Observable<SearchFieldValues> {\n return this._searchFieldValues$.asObservable();\n }\n\n public get querySearchParams$(): Observable<SearchFieldValues> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params.search) return JSON.parse(atob(params.search)) as SearchFieldValues;\n\n return {};\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryPaginationParams$(): Observable<Pagination | null> {\n return this.route.queryParams.pipe(\n map(params => {\n const paramsCopy = {...params} as any as CaseParameters;\n\n return paramsCopy.collectionSize\n ? {\n collectionSize: Number(paramsCopy.collectionSize),\n page: Number(paramsCopy.page),\n size: Number(paramsCopy.size),\n ...(paramsCopy.isSorting === 'true' && {\n sort: {\n isSorting: !!(paramsCopy.isSorting === 'true'),\n state: {\n name: paramsCopy.sortStateName,\n direction: paramsCopy.sortStateDirection as Direction,\n },\n },\n }),\n }\n : null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryAssigneeParam$(): Observable<AssigneeFilter> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.assignee) {\n return params?.assignee?.toUpperCase();\n }\n return '';\n }),\n distinctUntilChanged((prevParams, currParams) => prevParams === currParams)\n );\n }\n\n public get queryStatusParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.status) {\n return JSON.parse(atob(params.status)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryCaseTagsParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.casetags) {\n return JSON.parse(atob(params.casetags)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n private _caseParametersSubscription!: Subscription;\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {\n this.setCaseParameters();\n }\n\n public ngOnDestroy(): void {\n this._caseParametersSubscription?.unsubscribe();\n }\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._searchFieldValues$.next(searchFieldValues);\n }\n\n public setSearchParameters(searchParameters: SearchFieldValues): void {\n this._caseParameters$.pipe(take(1)).subscribe(caseParameters => {\n if (Object.keys(searchParameters || {}).length > 0) {\n this._caseParameters$.next({\n ...caseParameters,\n ...this.getSearchParameter('search', searchParameters),\n });\n } else {\n if (caseParameters?.search) {\n delete caseParameters.search;\n }\n this._caseParameters$.next(caseParameters);\n }\n });\n }\n\n public setPaginationParameters(pagination: Pagination): void {\n if (pagination) {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._caseParameters$.next({\n ...dossierParameters,\n size: `${pagination.size}`,\n collectionSize: `${pagination.collectionSize}`,\n page: `${pagination.page}`,\n isSorting: pagination.sort?.isSorting ? 'true' : 'false',\n ...(pagination.sort?.state?.name && {sortStateName: `${pagination.sort?.state.name}`}),\n ...(pagination.sort?.state?.direction && {\n sortStateDirection: `${pagination.sort?.state.direction}`,\n }),\n });\n });\n }\n }\n\n public setAssigneeParameter(assigneeFilter: AssigneeFilter): void {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._caseParameters$.next({\n ...dossierParameters,\n assignee: assigneeFilter.toLowerCase(),\n });\n });\n }\n\n public setStatusParameter(statusKeyParameters: string[]): void {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((statusKeyParameters || []).length > 0) {\n this._caseParameters$.next({\n ...dossierParameters,\n ...this.getSearchParameter('status', statusKeyParameters),\n });\n } else {\n if (dossierParameters?.status) {\n delete dossierParameters.status;\n }\n this._caseParameters$.next(dossierParameters);\n }\n });\n }\n\n public setCaseTagParameter(caseTagKeyParameters: string[]): void {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((caseTagKeyParameters || []).length > 0) {\n this._caseParameters$.next({\n ...dossierParameters,\n ...this.getSearchParameter('casetags', caseTagKeyParameters),\n });\n } else {\n if (dossierParameters?.casetags) {\n delete dossierParameters.casetags;\n }\n this._caseParameters$.next(dossierParameters);\n }\n });\n }\n\n public clearSearchFieldValues(): void {\n this._searchFieldValues$.next({});\n }\n\n public clearParameters(): void {\n this._caseParameters$.next(undefined);\n this.router.navigate([this.getUrlWithoutParams()], {replaceUrl: true});\n }\n\n public getSearchParameter(\n searchParamKey: string,\n parameters: string[] | SearchFieldValues\n ): {[key: string]: string} {\n return {[searchParamKey]: this.objectToBase64(parameters)};\n }\n\n public getSearchObject(searchQuery: string): object {\n return this.base64ToObject(searchQuery);\n }\n\n private openDossierParametersSubscription(): void {\n this._caseParametersSubscription = this.caseParameters$.subscribe(dossierParams => {\n this.router.navigate([this.getUrlWithoutParams()], {\n queryParams: dossierParams,\n replaceUrl: true,\n });\n });\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private base64ToObject(string: string): object {\n return JSON.parse(atob(string));\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 public setCaseParameters(): void {\n combineLatest([\n this.queryPaginationParams$,\n this.querySearchParams$,\n this.queryAssigneeParam$,\n this.queryStatusParams$,\n this.queryCaseTagsParams$,\n ])\n .pipe(take(1))\n .subscribe(\n ([paginationParams, searchParams, assigneeParams, statusParams, caseTagParams]) => {\n if (paginationParams) this.setPaginationParameters(paginationParams);\n if (assigneeParams) this.setAssigneeParameter(assigneeParams);\n if (statusParams) this.setStatusParameter(statusParams);\n if (caseTagParams) this.setCaseTagParameter(caseTagParams);\n if (searchParams) {\n this.setSearchParameters(searchParams);\n this.setSearchFieldValues(searchParams);\n }\n\n this.openDossierParametersSubscription();\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 */\nimport {Injectable} from '@angular/core';\nimport {Documents, SpecifiedDocuments} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, take} from 'rxjs';\n\n@Injectable()\nexport class CaseListService {\n private readonly _caseDefinitionKey$ = new BehaviorSubject<string>('');\n\n private readonly _checkRefresh$ = new BehaviorSubject<boolean>(false);\n private readonly _forceRefresh$ = new BehaviorSubject<boolean>(false);\n\n public get caseDefinitionKey$(): Observable<string> {\n return this._caseDefinitionKey$.asObservable();\n }\n\n get checkRefresh$(): Observable<boolean> {\n return this._checkRefresh$.asObservable();\n }\n\n get forceRefresh$(): Observable<boolean> {\n return this._forceRefresh$.asObservable();\n }\n\n public setCaseDefinitionKey(caseDefinitionKey: string): void {\n this._caseDefinitionKey$.next(caseDefinitionKey);\n }\n\n public mapDocuments(documents: Documents | SpecifiedDocuments, hasApiColumnConfig: boolean) {\n if (!hasApiColumnConfig) {\n return (documents as Documents).content.map(document => {\n const {content, ...others} = document;\n return {...content, ...others};\n });\n }\n\n return (documents as SpecifiedDocuments).content.reduce((acc, curr) => {\n const propsObject = {id: curr.id, locked: curr.locked};\n curr.items?.forEach(item => {\n propsObject[item.key] = item.value;\n });\n return [...acc, propsObject];\n }, []);\n }\n\n public forceRefresh(): void {\n this._forceRefresh$.pipe(take(1)).subscribe(forceRefresh => {\n this._forceRefresh$.next(!forceRefresh);\n });\n }\n\n public checkRefresh(): void {\n this._checkRefresh$.pipe(take(1)).subscribe(checkRefresh => {\n this._checkRefresh$.next(!checkRefresh);\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 {BehaviorSubject, Subject, map, Observable, of, switchMap, take, tap, combineLatest} from 'rxjs';\nimport {CaseListService} from './case-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {AssigneeFilter, ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField} from '@valtimo/components';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListAssigneeService {\n private readonly ASSIGNEE_KEY = 'assigneeFullName';\n private readonly _defaultAssigneeFilter$ = new Subject<AssigneeFilter>();\n private readonly _assigneeFilter$ = new BehaviorSubject<AssigneeFilter | null>(null);\n\n public readonly canHaveAssignee$: Observable<boolean> =\n this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.documentService.getCaseSettings(caseDefinitionKey)\n : of({canHaveAssignee: false})\n ),\n map(caseSettings => caseSettings?.canHaveAssignee),\n tap(canHaveAssignee => {\n const visibleTabs: AssigneeFilter[] = this.configService.config.visibleCaseListTabs ?? [];\n\n this._defaultAssigneeFilter$.next(\n !!visibleTabs && canHaveAssignee ? visibleTabs[0] : 'ALL'\n );\n })\n );\n\n public get assigneeFilter$(): Observable<AssigneeFilter | null> {\n return this._assigneeFilter$.asObservable();\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly caseListService: CaseListService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public resetAssigneeFilter(): void {\n combineLatest([this.caseParameterService.queryAssigneeParam$, this._defaultAssigneeFilter$])\n .pipe(take(1))\n .subscribe(([assigneeParam, defaultAssigneeFilter]) => {\n if (assigneeParam) {\n this._assigneeFilter$.next(assigneeParam);\n this.caseParameterService.setAssigneeParameter(assigneeParam);\n } else {\n this._assigneeFilter$.next(defaultAssigneeFilter);\n this.caseParameterService.setAssigneeParameter(defaultAssigneeFilter);\n }\n });\n }\n\n public setAssigneeFilter(assigneeFilter: AssigneeFilter): void {\n this._assigneeFilter$.next(assigneeFilter);\n this.caseParameterService.setAssigneeParameter(assigneeFilter);\n }\n\n public filterAssigneeColumns(\n columns: Array<DefinitionColumn>,\n canHaveAssignee: boolean\n ): Array<DefinitionColumn> {\n return columns.filter(column => {\n if (column?.key === this.ASSIGNEE_KEY && !canHaveAssignee) {\n return false;\n }\n return true;\n });\n }\n\n public addAssigneeListField(\n columns: Array<DefinitionColumn>,\n listFields: Array<ListField>,\n canHaveAssignee: boolean\n ): Array<ListField> {\n return [\n ...listFields,\n ...(canHaveAssignee && !columns.find(column => column.propertyName === this.ASSIGNEE_KEY)\n ? [\n {\n key: this.ASSIGNEE_KEY,\n label: this.translateService.instant(`fieldLabels.${this.ASSIGNEE_KEY}`),\n sortable: true,\n viewType: 'string',\n },\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 */\nimport {Injectable} from '@angular/core';\nimport {Direction, SortState} from '@valtimo/components';\nimport {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseService {\n private readonly definitions: any;\n private readonly _refreshDocument$ = new BehaviorSubject<null>(null);\n\n constructor(private readonly configService: ConfigService) {\n this.definitions = this.configService.config.definitions;\n }\n\n public getImplementationEnvironmentDefinitions(name: string) {\n return this.definitions.cases.find(definition => definition.name === name);\n }\n\n public getInitialSortState(columns: Array<DefinitionColumn>): SortState {\n const defaultColumn = columns.find(column => column.default);\n const isSorting = defaultColumn?.default === 'ASC' || defaultColumn?.default === 'DESC';\n const direction: Direction =\n typeof !defaultColumn || defaultColumn.default === 'boolean'\n ? 'DESC'\n : (defaultColumn.default as any as Direction);\n\n return {\n isSorting,\n state: {\n name: defaultColumn ? defaultColumn.propertyName : columns[0].propertyName,\n direction,\n },\n };\n }\n\n public get refreshDocument$(): Observable<any> {\n return this._refreshDocument$.asObservable();\n }\n\n public refresh(): void {\n this._refreshDocument$.next(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, combineLatest, filter, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {Pagination} from '@valtimo/components';\nimport {NGXLogger} from 'ngx-logger';\nimport {CaseParameterService} from './case-parameter.service';\nimport {DefinitionColumn, UserSettingsService} from '@valtimo/shared';\nimport {CaseService} from './case.service';\nimport {Documents, SortState, SpecifiedDocuments} from '@valtimo/document';\n\n@Injectable()\nexport class CaseListPaginationService {\n private readonly DEFAULT_PAGINATION: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n sort: undefined,\n };\n\n private _caseDefinitionKey: string;\n\n private readonly _pagination$ = new BehaviorSubject<Pagination | undefined>(undefined);\n\n private readonly _paginationCopy$ = this._pagination$.pipe(\n filter(pagination => !!pagination),\n map(pagination => pagination && JSON.parse(JSON.stringify(pagination))),\n tap(pagination => this.caseParameterService.setPaginationParameters(pagination))\n );\n\n public get pagination$(): Observable<Pagination> {\n return this._paginationCopy$;\n }\n\n constructor(\n private readonly logger: NGXLogger,\n private readonly caseParameterService: CaseParameterService,\n private readonly caseService: CaseService,\n private readonly userSettingsService: UserSettingsService\n ) {}\n\n public pageChange(newPage: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.page !== newPage) {\n this.logger.debug(`Page change: ${newPage}`);\n this._pagination$.next({...pagination, page: newPage});\n }\n });\n }\n\n public pageSizeChange(newPageSize: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.size !== newPageSize) {\n const amountOfAvailablePages = Math.ceil(+pagination.collectionSize / newPageSize);\n const newPage =\n amountOfAvailablePages < pagination.page ? amountOfAvailablePages : pagination.page;\n\n this.logger.debug(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);\n this._pagination$.next({...pagination, size: newPageSize, page: newPage});\n this.savePageSizePreference(newPageSize);\n }\n });\n }\n\n public sortChanged(newSortState: SortState): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && JSON.stringify(pagination.sort) !== JSON.stringify(newSortState)) {\n this.logger.debug(`Sort state change: ${JSON.stringify(newSortState)}`);\n this._pagination$.next({...pagination, sort: newSortState});\n }\n });\n }\n\n public setPage(newPageNumber: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (!pagination) return;\n this._pagination$.next({...pagination, page: newPageNumber});\n });\n }\n\n public setCollectionSize(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.collectionSize !== documents.totalElements) {\n this._pagination$.next({...pagination, collectionSize: documents.totalElements});\n }\n });\n }\n\n public checkPage(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination) {\n const amountOfItems = documents.totalElements;\n const amountOfPages = Math.ceil(amountOfItems / pagination.size);\n const currentPage = pagination.page;\n\n if (!!amountOfItems && !currentPage) {\n this._pagination$.next({...pagination, page: 1});\n return;\n }\n\n if (currentPage > amountOfPages) {\n this._pagination$.next({...pagination, page: amountOfPages});\n }\n }\n });\n }\n\n public clearPagination(): void {\n this._pagination$.next(undefined);\n }\n\n public setPagination(columns: Array<DefinitionColumn>, caseDefinitionKey: string): void {\n this._caseDefinitionKey = caseDefinitionKey;\n\n combineLatest([\n this.caseParameterService.queryPaginationParams$.pipe(take(1)),\n this.userSettingsService.getUserSettings().pipe(take(1)),\n ]).subscribe(([queryPaginationParams, userSettings]) => {\n const defaultPagination: Pagination = this.getDefaultPagination(columns);\n\n if (queryPaginationParams) {\n this._pagination$.next(queryPaginationParams);\n } else {\n const savedSize = userSettings?.caseListPageSizes?.[caseDefinitionKey];\n const pagination = savedSize\n ? {...defaultPagination, size: savedSize}\n : defaultPagination;\n this._pagination$.next(pagination);\n }\n\n this.logger.debug(`Set pagination: ${JSON.stringify(this._pagination$.getValue())}`);\n });\n }\n\n private getDefaultPagination(columns: Array<DefinitionColumn>): Pagination {\n const defaultSortState = this.caseService.getInitialSortState(columns);\n\n return {\n ...this.DEFAULT_PAGINATION,\n sort: defaultSortState,\n };\n }\n\n private savePageSizePreference(size: number): void {\n if (!this._caseDefinitionKey) return;\n\n const caseDefinitionKey = this._caseDefinitionKey;\n this.userSettingsService.getUserSettings().pipe(\n take(1),\n switchMap(settings => {\n const pageSizes = {...(settings?.caseListPageSizes || {}), [caseDefinitionKey]: size};\n return this.userSettingsService.saveUserSettings({...settings, caseListPageSizes: pageSizes});\n })\n ).subscribe();\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 {Observable, of, switchMap} from 'rxjs';\nimport {SearchField, SearchFieldValues, SearchFilter, SearchFilterRange} from '@valtimo/shared';\nimport {CaseListService} from './case-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListSearchService {\n private readonly _documentSearchFields$: Observable<Array<SearchField> | null> =\n this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.documentService.getDocumentSearchFields(caseDefinitionKey)\n : of([])\n )\n );\n\n public get documentSearchFields$(): Observable<Array<SearchField> | null> {\n return this._documentSearchFields$;\n }\n\n constructor(\n private readonly caseListService: CaseListService,\n private readonly documentService: DocumentService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.caseParameterService.setSearchFieldValues(searchFieldValues || {});\n this.caseParameterService.setSearchParameters(searchFieldValues);\n this.caseListService.checkRefresh();\n }\n\n public mapSearchValuesToFilters(\n values: SearchFieldValues\n ): Array<SearchFilter | SearchFilterRange> {\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});\n } else {\n filters.push({key: valueKey, values: [searchValue]});\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\ninterface CandidateUser {\n id: string;\n firstName: string;\n lastName: string;\n}\n\ninterface BulkAssign {\n ids: string[];\n assigneeId?: string;\n assignedTeamKey?: string;\n}\n\nexport {CandidateUser, BulkAssign};\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 {Type} from '@angular/core';\n\nenum DefaultTabs {\n summary = 'summary',\n progress = 'progress',\n audit = 'audit',\n documents = 'documents',\n notes = 'notes',\n}\n\ntype DefaultTabComponents = {\n [key in DefaultTabs]: Type<any>;\n};\n\ninterface CaseTabConfig {\n [tabKey: string]: Type<any>;\n}\n\nexport {DefaultTabs, DefaultTabComponents, CaseTabConfig};\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\ninterface PaginationParameters {\n collectionSize: string;\n page: string;\n size: string;\n sortStateName: string;\n sortStateDirection: string;\n isSorting: 'true' | 'false';\n}\n\ninterface CaseParameters extends PaginationParameters {\n search?: string;\n assignee?: string;\n status?: string;\n casetags?: string;\n}\n\nexport {CaseParameters};\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\ntype CaseSearchFieldDataType = 'text' | 'number' | 'date' | 'datetime' | 'boolean';\n\ntype CaseSearchFieldFieldType = 'single' | 'multiple' | 'range';\n\ntype CaseSearchFieldMatchType = 'exact' | 'like';\n\ninterface CaseSearchField {\n key: string;\n datatype: CaseSearchFieldDataType;\n fieldtype: CaseSearchFieldFieldType;\n matchtype: CaseSearchFieldMatchType;\n}\n\nexport {\n CaseSearchFieldDataType,\n CaseSearchFieldFieldType,\n CaseSearchFieldMatchType,\n CaseSearchField,\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 ApiTabType {\n STANDARD = 'standard',\n FORMIO = 'formio',\n CUSTOM = 'custom',\n WIDGETS = 'widgets',\n MAP = 'map',\n}\n\ninterface ApiTabItem {\n name: string | null;\n key: string;\n type: ApiTabType;\n contentKey: string;\n createdOn?: string;\n createdBy?: string;\n showTasks?: boolean;\n}\n\ninterface TabSelectItem {\n icon: string;\n title: string;\n type: ApiTabType;\n disabled: boolean;\n disabledTooltipTranslationKey?: string;\n}\n\nexport {ApiTabType, ApiTabItem, TabSelectItem};\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 {ComponentFactoryResolver, ComponentRef, ViewContainerRef} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {BehaviorSubject, combineLatest, filter, Observable, take} from 'rxjs';\n\nexport interface TabLoader<T_TAB extends Tab> {\n tabs: T_TAB[];\n\n initial(tabName?: string): void;\n\n load(tabToLoad: T_TAB): void;\n}\n\nexport class TabLoaderImpl implements TabLoader<TabImpl> {\n private readonly _activeTab$ = new BehaviorSubject<TabImpl | null>(null);\n private readonly _tabs: TabImpl[] = null;\n private readonly _componentFactoryResolver: ComponentFactoryResolver = null;\n private readonly _viewContainerRef: ViewContainerRef = null;\n private _activeComponent: ComponentRef<any> = null;\n private _activeTab: TabImpl = null;\n private _router: Router;\n private _route: ActivatedRoute;\n\n constructor(\n tabs: TabImpl[],\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n router: Router,\n route: ActivatedRoute\n ) {\n this._tabs = tabs;\n this._componentFactoryResolver = componentFactoryResolver;\n this._viewContainerRef = viewContainerRef;\n this._router = router;\n this._route = route;\n }\n\n public get tabs(): TabImpl[] {\n return this._tabs;\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._activeTab$.pipe(filter(tab => !!tab));\n }\n\n public initial(tabName?: string): void {\n let initialTab!: TabImpl;\n\n if (tabName) {\n initialTab =\n this._tabs.find(tab => tab.name === tabName) ||\n this._tabs.find(tab => tab.contentKey === tabName);\n }\n\n if (!initialTab) {\n initialTab = this._tabs[0] || null;\n }\n\n this.load(initialTab);\n }\n\n public load(newTab: TabImpl): void {\n if (newTab !== this._activeTab) {\n this._tabs.forEach(tab => tab.deactivate());\n this.replaceView(newTab);\n this.replaceUrlState(newTab);\n this.setActive(newTab);\n }\n }\n\n public refreshView() {\n this.replaceView(this._activeTab);\n }\n\n private replaceView(tab: TabImpl): void {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(tab.component);\n this._viewContainerRef.clear();\n if (this._activeTab !== null) {\n this._activeComponent.destroy();\n }\n this._activeComponent = this._viewContainerRef.createComponent(componentFactory);\n }\n\n public replaceUrlState(nextTab: TabImpl): void {\n combineLatest([this._route.params, this._route.queryParams])\n .pipe(take(1))\n .subscribe(([params, queryParams]) => {\n const currentUrl = this._router.url;\n const currentDocumentId = params?.documentId;\n const urlBeforeDocumentId = currentUrl.split(currentDocumentId)[0];\n\n this._router.navigate([`${urlBeforeDocumentId}${currentDocumentId}/${nextTab.name}`], {\n ...(nextTab.name === 'documents' && {\n queryParams,\n }),\n replaceUrl: true,\n });\n });\n }\n\n private setActive(tab: TabImpl): void {\n tab.activate();\n this._activeTab = tab;\n this._activeTab$.next(tab);\n }\n}\n\nexport interface Tab {\n name: string;\n sequence: number;\n component: any;\n title: string;\n contentKey: string;\n\n activate(): void;\n\n deactivate(): void;\n\n isActive(): boolean;\n}\n\nexport class TabImpl implements Tab {\n private readonly _name: string;\n private readonly _sequence: number;\n private readonly _component: any;\n private readonly _contentKey: string;\n private readonly _title: string;\n private _active = false;\n private _showTasks = false;\n\n constructor(\n name: string,\n sequence: number,\n component: any,\n contentKey?: string,\n title?: string,\n showTasks: boolean = false\n ) {\n this._name = name;\n this._sequence = sequence;\n this._component = component;\n\n if (contentKey) this._contentKey = contentKey;\n if (title) this._title = title;\n if (showTasks) this._showTasks = showTasks;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get sequence(): number {\n return this._sequence;\n }\n\n public get component(): any {\n return this._component;\n }\n\n public get contentKey(): string {\n return this._contentKey;\n }\n\n public get title(): string {\n return this._title;\n }\n\n public get showTasks(): boolean {\n return this._showTasks;\n }\n\n public activate(): void {\n this._active = true;\n }\n\n public deactivate(): void {\n this._active = false;\n }\n\n public isActive(): boolean {\n return this._active;\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 {FormSize} from '@valtimo/process-link';\n\ntype CaseDetailLayoutUnit = 'pixel' | 'percent';\n\ninterface CaseDetailLayout {\n unit: CaseDetailLayoutUnit;\n widthAdjustable: boolean;\n showRightPanel?: boolean;\n leftPanelWidth?: number | '*';\n leftPanelMinWidth?: number;\n leftPanelMaxWidth?: number;\n rightPanelWidth?: number | '*';\n rightPanelMinWidth?: number;\n rightPanelMaxWidth?: number;\n}\n\ntype RightPanelMinWidths = {\n [key in FormSize]: number;\n};\n\nexport {CaseDetailLayout, CaseDetailLayoutUnit, RightPanelMinWidths};\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 DocumentUpdatedSseEvent extends BaseSseEvent {\n documentId: string;\n caseDefinitionKey: string;\n}\n\nexport {DocumentUpdatedSseEvent};\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 './candidate-user.model';\nexport * from './case-detail-tab.model';\nexport * from './case-parameters.model';\nexport * from './search.model';\nexport * from './tab-api.model';\nexport * from './tabs.model';\nexport * from './case-detail-layout.model';\nexport * from './case-sse-event.model';\nexport * from './case-list-quick-search.model';\nexport * from './case-widget.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 {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Document, DocumentService} from '@valtimo/document';\nimport {FormService} from '@valtimo/form';\nimport {FormioOptionsImpl, ValtimoFormioOptions} from '@valtimo/components';\nimport moment from 'moment';\nimport {FormioForm} from '@formio/angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n forkJoin,\n map,\n of,\n startWith,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {NotificationContent} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {catchError} from 'rxjs/operators';\nimport {DocumentUpdatedSseEvent} from '../../../../models';\nimport {SseService} from '@valtimo/sse';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n standalone: false,\n templateUrl: './summary.component.html',\n styleUrls: ['./summary.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseDetailTabSummaryComponent implements OnInit, OnDestroy {\n public readonly caseDefinitionKey: string;\n public readonly documentId!: string;\n\n private snapshot: ParamMap;\n public moment!: typeof moment;\n\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(null);\n public readonly document$ = new BehaviorSubject<Document>(null);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public options: ValtimoFormioOptions;\n\n public notificationObj$ = new BehaviorSubject<NotificationContent>(null);\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService,\n private readonly translateService: TranslateService,\n private readonly sseService: SseService\n ) {\n this.snapshot = this.route.snapshot.paramMap;\n this.caseDefinitionKey = this.snapshot.get('caseDefinitionKey') || '';\n this.documentId = this.snapshot.get('documentId') || '';\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n }\n\n public ngOnInit(): void {\n this.moment = moment;\n this.init();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public init(): void {\n this._subscriptions.add(\n this.sseService\n .getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED')\n .pipe(\n startWith(null),\n filter(event => event === null || event.documentId === this.documentId),\n switchMap(() =>\n forkJoin({\n document: this.documentService\n .getDocument(this.documentId)\n .pipe(catchError(() => of(null))),\n formDefinition: this.formService\n .getFormDefinitionByNamePreFilled(\n `${this.caseDefinitionKey}.summary`,\n this.documentId\n )\n .pipe(catchError(() => of(null))),\n })\n ),\n tap(({document, formDefinition}) => {\n this.document$.next(document);\n this.formDefinition$.next(formDefinition);\n\n if (!formDefinition || !document) {\n combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('case.summaryFormNotFound', {\n summary: this.caseDefinitionKey,\n }),\n ]).pipe(\n take(1),\n map(([title, message]) => ({\n type: 'warning' as any,\n title,\n message,\n showClose: false,\n lowContrast: true,\n })),\n tap(notificationObject => this.notificationObj$.next(notificationObject))\n );\n }\n\n this.loading$.next(false);\n })\n )\n .subscribe()\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 formDefinition: formDefinition$ | async,\n document: document$ | async,\n loading: loading$ | async,\n notificationObj: notificationObj$ | async,\n } as obs\"\n>\n @if (!obs.loading && obs.document && obs.formDefinition) {\n <valtimo-form-io\n class=\"valtimo-summary-form\"\n [form]=\"obs.formDefinition\"\n [options]=\"options\"\n ></valtimo-form-io>\n } @else if (obs.notificationObj) {\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n }\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 {Component} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {DocumentService, LoadedValue, ProcessDocumentInstance} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, switchMap, tap} from 'rxjs';\nimport {ListItem} from 'carbon-components-angular/dropdown';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-detail-tab-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.scss'],\n})\nexport class CaseDetailTabProgressComponent {\n private readonly processDocumentInstances$: Observable<Array<ProcessDocumentInstance>> =\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.findProcessDocumentInstances(params.get('documentId'))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.map(processDocumentInstance => ({\n ...processDocumentInstance,\n startedOn: new Date(processDocumentInstance.startedOn),\n }))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.sort((a, b) =>\n a.active === b.active ? b.startedOn.getTime() - a.startedOn.getTime() : a.active ? -1 : 1\n )\n ),\n tap(processDocumentInstances => {\n if (processDocumentInstances.length > 0) {\n this.selectedProcessInstanceId$.next(processDocumentInstances[0].id.processInstanceId);\n }\n })\n );\n\n public readonly processInstanceItems$: Observable<LoadedValue<Array<ListItem>>> =\n this.processDocumentInstances$.pipe(\n map(processDocumentInstances =>\n processDocumentInstances.map((processDocumentInstance, index) => ({\n processInstanceId: processDocumentInstance.id.processInstanceId,\n content: processDocumentInstance.processName || '-',\n selected: index === 0,\n }))\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n public readonly selectedProcessInstanceId$ = new BehaviorSubject<string | null>(null);\n public readonly selectedProcessInstance$: Observable<LoadedValue<ProcessDocumentInstance>> =\n combineLatest([this.processDocumentInstances$, this.selectedProcessInstanceId$]).pipe(\n map(([processDocumentInstances, selectedProcessInstanceId]) =>\n processDocumentInstances.find(\n instance => instance.id.processInstanceId === selectedProcessInstanceId\n )\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService\n ) {}\n\n public loadProcessInstance(processInstanceId: string) {\n if (!!processInstanceId) {\n this.selectedProcessInstanceId$.next(processInstanceId);\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 class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async,\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport moment from 'moment';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, AuditEvent} from '@valtimo/document';\nimport {NgxSpinnerService} from 'ngx-spinner';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n standalone: false,\n templateUrl: './audit.component.html',\n styleUrls: ['./audit.component.scss'],\n})\nexport class CaseDetailTabAuditComponent implements OnInit {\n @Output() paginationClicked: EventEmitter<any> = new EventEmitter();\n\n public timelineItems: TimelineItem[];\n public pagination: any;\n private readonly documentId: string;\n private defaultAuditPage = 0;\n private currentAuditPage: number;\n\n constructor(\n private route: ActivatedRoute,\n private documentService: DocumentService,\n private spinnerService: NgxSpinnerService\n ) {\n this.spinnerService.show('auditSpinner');\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n }\n\n private static getTranslationKey(auditEvent: AuditEvent) {\n const classNameArray = auditEvent.className.split('.');\n const eventName = classNameArray[classNameArray.length - 1];\n return 'events.' + eventName;\n }\n\n public ngOnInit(): void {\n this.loadAuditPage(this.defaultAuditPage);\n }\n\n public loadAuditPage(pageNumber: number): void {\n this.documentService.getAuditLog(this.documentId, pageNumber).subscribe(page => {\n const timelineItems: TimelineItemImpl[] = [];\n page.content.forEach(auditRecord => {\n if (\n auditRecord.auditEvent.className ===\n 'com.ritense.document.event.DocumentRetentionPeriodSetEvent'\n ) {\n const rawRetentionDate = auditRecord.auditEvent['retentionDate'];\n if (rawRetentionDate) {\n const retentionMoment = moment(rawRetentionDate);\n if (retentionMoment.isValid()) {\n auditRecord.auditEvent['retentionDate'] = retentionMoment.format('DD MMM YYYY HH:mm');\n }\n }\n }\n const occurredOn = moment(auditRecord.metaData.occurredOn);\n const fromNow = occurredOn.fromNow();\n timelineItems.push(\n new TimelineItemImpl(\n occurredOn.format('DD MMM YYYY'),\n occurredOn.format('HH:mm'),\n auditRecord.metaData.user,\n fromNow,\n CaseDetailTabAuditComponent.getTranslationKey(auditRecord.auditEvent),\n auditRecord.auditEvent,\n {id: `${auditRecord.metaData.user}-${auditRecord.metaData.occurredOn}`}\n )\n );\n });\n this.timelineItems = timelineItems;\n this.spinnerService.hide('auditSpinner');\n this.pagination = page;\n this.pagination.number += 1;\n });\n }\n\n public onChangePagination(page): void {\n this.paginationClicked.emit(page);\n this.currentAuditPage = page - 1;\n this.loadAuditPage(this.currentAuditPage);\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@if (timelineItems) {\n <valtimo-timeline [items]=\"timelineItems\"></valtimo-timeline>\n}\n\n<valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n>\n</valtimo-spinner>\n\n<div\n class=\"valtimo-audit-pagination\"\n *ngIf=\"pagination && pagination.totalElements > pagination.size\"\n>\n <div>\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.number, total: pagination.totalPages}\n }}</strong>\n\n <br />\n\n {{\n pagination.totalElements === 1\n ? ('list.showingResult' | translate: {number: pagination.content.length})\n : ('list.showingResults'\n | translate: {number: pagination.content.length, total: pagination.totalElements})\n }}\n </div>\n\n <ngb-pagination\n *ngIf=\"pagination.totalElements > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.totalElements\"\n [(page)]=\"pagination.number\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.size\"\n [rotate]=\"true\"\n (pageChange)=\"onChangePagination(pagination.number)\"\n ></ngb-pagination>\n</div>\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} from '@angular/core';\n\n@Component({\n standalone: false,\n templateUrl: './not-found.component.html',\n})\nexport class CaseDetailTabNotFoundComponent {}\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<valtimo-no-results\n [title]=\"'case.tabs.componentNotFound' | translate\"\n [description]=\"'case.tabs.componentNotFoundMessage' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n></valtimo-no-results>\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, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, FileSortService, RelatedFile} from '@valtimo/document';\nimport {DownloadService, ResourceDto, UploadProviderService} from '@valtimo/resource';\nimport {map, switchMap} from 'rxjs/operators';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService, GlobalNotificationService} from '@valtimo/shared';\nimport {PromptService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-detail-tab-s3-documents',\n templateUrl: './s3-documents.component.html',\n})\nexport class CaseDetailTabS3DocumentsComponent implements OnInit {\n public readonly documentId: string;\n public readonly caseDefinitionKey: string;\n public readonly maxFileSize: number = this.configService?.config?.caseFileSizeUploadLimitMB || 5;\n public readonly acceptedFiles: string =\n this.configService?.config?.caseFileUploadAcceptedFiles || null;\n public fields = [\n {key: 'fileName', label: 'File name'},\n {key: 'sizeInBytes', label: 'Size in bytes'},\n {key: 'createdOn', label: 'Created on', viewType: 'date'},\n {key: 'createdBy', label: 'Created by'},\n ];\n public actions = [\n {\n columnName: '',\n iconClass: 'mdi mdi-open-in-new',\n callback: this.downloadDocument.bind(this),\n },\n {\n columnName: '',\n iconClass: 'mdi mdi-delete',\n callback: this.removeRelatedFile.bind(this),\n },\n ];\n readonly uploading$ = new BehaviorSubject<boolean>(false);\n private readonly refetch$ = new BehaviorSubject<null>(null);\n public relatedFiles$: Observable<Array<RelatedFile>> = this.refetch$.pipe(\n switchMap(() =>\n combineLatest([\n this.documentService.getDocument(this.documentId),\n this.translateService.stream('key'),\n ])\n ),\n map(([document]) => {\n const relatedFiles = document?.relatedFiles || [];\n const translatedFiles = relatedFiles.map(file => ({\n ...file,\n createdBy: file.createdBy || this.translateService.instant('list.automaticallyGenerated'),\n }));\n\n return translatedFiles || [];\n }),\n map(relatedFiles => this.fileSortService.sortRelatedFilesByDateDescending(relatedFiles))\n );\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly downloadService: DownloadService,\n private readonly fileSortService: FileSortService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly promptService: PromptService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly uploadProviderService: UploadProviderService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n this.caseDefinitionKey = snapshot.get('caseDefinitionKey') || '';\n }\n\n ngOnInit(): void {\n this.refetchDocuments();\n }\n\n fileSelected(file: File): void {\n this.uploading$.next(true);\n\n this.uploadProviderService\n .uploadFile(file, this.caseDefinitionKey, this.documentId)\n .pipe(\n switchMap(resourceFile =>\n this.documentService.assignResource(this.documentId, resourceFile.data.resourceId)\n )\n )\n .subscribe({\n next: () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.uploadSuccessful'),\n type: 'success',\n });\n this.refetchDocuments();\n this.uploading$.next(false);\n },\n error: () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.uploadFailed'),\n type: 'error',\n });\n this.uploading$.next(false);\n },\n });\n }\n\n downloadDocument(relatedFile: RelatedFile): void {\n this.uploadProviderService\n .getResource(relatedFile.fileId)\n .subscribe((resource: ResourceDto) => {\n this.downloadService.downloadFile(resource.url, resource.resource.name);\n });\n }\n\n removeRelatedFile(relatedFile: RelatedFile) {\n this.promptService.openPrompt({\n headerText: this.translateService.instant('case.deleteConfirmation.title'),\n bodyText: this.translateService.instant('case.deleteConfirmation.description'),\n cancelButtonText: this.translateService.instant('case.deleteConfirmation.cancel'),\n confirmButtonText: this.translateService.instant('case.deleteConfirmation.delete'),\n closeOnConfirm: true,\n closeOnCancel: true,\n confirmCallBackFunction: () => {\n this.documentService.removeResource(this.documentId, relatedFile.fileId).subscribe(\n () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.removeSuccessful'),\n type: 'success',\n });\n this.refetchDocuments();\n },\n () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.removeFailed'),\n type: 'success',\n });\n }\n );\n },\n });\n }\n\n private refetchDocuments(): void {\n this.refetch$.next(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\n<valtimo-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"true\"\n [camera]=\"false\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<valtimo-widget>\n <valtimo-carbon-list\n [fields]=\"fields\"\n [items]=\"relatedFiles$ | async\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [actions]=\"actions\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this case' | translate }}\n </h5>\n </div>\n </valtimo-carbon-list>\n</valtimo-widget>\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 AfterViewInit,\n Component,\n HostBinding,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ConfigService,\n UploadProvider,\n ValtimoConfig,\n ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN,\n} from '@valtimo/shared';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {CaseDetailTabNotFoundComponent} from '../not-found/not-found.component';\n\n@Component({\n standalone: false,\n templateUrl: './documents.component.html',\n})\nexport class CaseDetailTabDocumentsComponent implements OnInit, AfterViewInit, OnDestroy {\n @HostBinding('class.tab--no-margin') noMargin = false;\n @HostBinding('class.tab--no-min-height') noMinHeight = false;\n\n @ViewChild('externalDocumentsTab', {read: ViewContainerRef})\n private _externalDocumentsTab: ViewContainerRef;\n\n public readonly openZaakUploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly s3UploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly documentenApiUploadProvider$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n @Optional()\n @Inject(ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN)\n private readonly zgwDocumentenApiDocumentsComponent: Type<any>\n ) {}\n\n public ngOnInit(): void {\n this.setConfig(this.configService.config);\n }\n\n public ngAfterViewInit(): void {\n this._subscriptions.add(\n this.documentenApiUploadProvider$.subscribe(uploadProviderIsDocumentenApi => {\n this.noMargin = uploadProviderIsDocumentenApi;\n this.noMinHeight = uploadProviderIsDocumentenApi;\n\n if (!uploadProviderIsDocumentenApi) return;\n\n this._externalDocumentsTab.createComponent(\n this.zgwDocumentenApiDocumentsComponent || CaseDetailTabNotFoundComponent\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private setConfig(config: ValtimoConfig): void {\n const uploadProvider = config.uploadProvider;\n this.openZaakUploadProvider$.next(uploadProvider === UploadProvider.OPEN_ZAAK);\n this.s3UploadProvider$.next(config.uploadProvider === UploadProvider.S3);\n this.documentenApiUploadProvider$.next(uploadProvider === UploadProvider.DOCUMENTEN_API);\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<valtimo-case-detail-tab-s3-documents\n *ngIf=\"(s3UploadProvider$ | async) || (openZaakUploadProvider$ | async)\"\n></valtimo-case-detail-tab-s3-documents>\n\n<ng-template #externalDocumentsTab></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 {Injectable} from '@angular/core';\nimport {ConfigService, Page} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {Note, NoteCreateRequest, NoteModal, NoteUpdateRequest} from '../models/notes.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotesService {\n private readonly VALTIMO_API_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {}\n\n public get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n public getDocumentNotes(documentId: string, params?: any): Observable<Page<Note>> {\n return this.http.get<Page<Note>>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n {params}\n );\n }\n\n public createDocumentNote(documentId: string, request: NoteCreateRequest): Observable<Note> {\n return this.http.post<Note>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n request\n );\n }\n\n public updateNote(noteId: string, request: NoteUpdateRequest): Observable<Note> {\n return this.http.put<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`, request);\n }\n\n public deleteNote(noteId: string): Observable<Note> {\n return this.http.delete<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`);\n }\n\n public refresh(): void {\n this._refresh$.next(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 {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {TimelineItem} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-note-modal',\n templateUrl: './note-modal.component.html',\n styleUrl: './note-modal.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NoteModalComponent {\n @Input() modalType: 'add' | 'modify';\n private _customData: TimelineItem | null;\n @Input() public set customData(value: TimelineItem | null) {\n this._customData = value;\n if (!value) {\n this.formGroup.reset();\n return;\n }\n\n this.formGroup.get('content')?.setValue(value.summaryTranslationKey ?? '');\n }\n @Input() public open;\n @Output() public readonly modalClosed = new EventEmitter<null | Partial<{\n id: string;\n content: string;\n }>>();\n\n public readonly formGroup = this.fb.group({\n content: this.fb.control('', Validators.required),\n });\n\n constructor(private readonly fb: FormBuilder) {}\n\n public onCancel(): void {\n this.modalClosed.emit(null);\n this.formGroup.reset();\n }\n\n public onConfirm(): void {\n const content = this.formGroup.get('content')?.value ?? '';\n this.modalClosed.emit({\n content,\n ...(!!this._customData && {id: this._customData?.customData?.['id'] ?? ''}),\n });\n this.formGroup.reset();\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 valtimoCdsModal [open]=\"open\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent>\n <cds-textarea-label>\n {{ 'case.notes.input.content' | translate }}\n\n <textarea\n cdsTextArea\n cdsLayer=\"1\"\n class=\"valtimo-note-modal__textarea\"\n formControlName=\"content\"\n [rows]=\"10\"\n ></textarea>\n </cds-textarea-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"!formGroup.valid\" cdsButton=\"primary\" (click)=\"onConfirm()\">\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </button>\n </cds-modal-footer>\n</cds-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 */\nimport {Component, HostBinding, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {Pagination, TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport {GlobalNotificationService, Page} from '@valtimo/shared';\nimport moment from 'moment';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subject} from 'rxjs';\nimport {switchMap, take, tap} from 'rxjs/operators';\nimport {Note} from '../../../../models/notes.model';\nimport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n} from '../../../../permissions';\nimport {NotesService} from '../../../../services/notes.service';\n\n@Component({\n standalone: false,\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class CaseDetailTabNotesComponent implements OnInit {\n @HostBinding('class.tab--no-margin') noMargin = true;\n\n public timelineItems: TimelineItem[] = [];\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly customData$ = new BehaviorSubject<TimelineItem | null>(null);\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly modalType$ = new Subject<'add' | 'modify'>();\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly idToDelete$ = new BehaviorSubject<string | null>(null);\n\n private readonly documentId$ = this.route.params.pipe(map(params => params.documentId));\n public readonly actions = [\n {id: 'edit', label: 'Edit', icon: 'mdi-pencil', callback: this.editNote.bind(this)},\n {id: 'delete', label: 'Delete', icon: 'mdi-delete', callback: this.deleteNote.bind(this)},\n ];\n\n public readonly canAdd$: Observable<boolean> = this.documentId$.pipe(\n switchMap((identifier: string) =>\n this.permissionService.requestPermission(CAN_ADD_NOTE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier,\n })\n )\n );\n\n public readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n page: 0,\n size: 10,\n });\n\n public readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n collectionSize: 0,\n });\n\n public readonly pagination$: Observable<Pagination> = combineLatest([\n this.currentPageAndSize$,\n this.pageSizes$,\n ]).pipe(\n map(\n ([currentPage, sizes]) =>\n ({...currentPage, ...sizes, page: (currentPage.page ?? 0) + 1}) as Pagination\n )\n );\n\n public readonly notes$: Observable<Array<Note>> = combineLatest([\n this.documentId$,\n this.currentPageAndSize$,\n this.notesService.refresh$,\n this.notesService.refresh$,\n ]).pipe(\n tap(() => (this.timelineItems = [])),\n switchMap(([documentId, currentPage]) =>\n this.notesService.getDocumentNotes(documentId, {\n page: currentPage.page,\n size: currentPage.size,\n })\n ),\n tap((res: Page<Note>) => {\n this.timelineItems = [];\n this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n this.pageSizes$.next({...sizes, collectionSize: res.totalElements});\n });\n }),\n switchMap(res =>\n combineLatest([\n of(res),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_DELETE_NOTE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_EDIT_NOTE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ])\n ),\n map(combinedResults => {\n const permissionResults = combinedResults.filter((curr, index) => index !== 0);\n const halfIndex = Math.ceil(permissionResults.length / 2);\n const deletePermissions = permissionResults.slice(0, halfIndex);\n const editPermissions = permissionResults.slice(halfIndex);\n\n return combinedResults[0].content.map((note: Note, index) => {\n const noteCreatedDate = moment(note.createdDate).locale(this.translateService.currentLang);\n this.timelineItems.push(\n new TimelineItemImpl(\n noteCreatedDate.format('DD MMM YYYY'),\n noteCreatedDate.format('HH:mm'),\n note.createdByUserFullName,\n noteCreatedDate.fromNow(),\n note.content,\n {},\n {id: note.id},\n [\n ...(editPermissions[index] ? ['edit'] : []),\n ...(deletePermissions[index] ? ['delete'] : []),\n ]\n )\n );\n return {\n ...note,\n };\n });\n }),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly notesService: NotesService,\n private readonly permissionService: PermissionService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.translateService.onLangChange.subscribe(() => {\n this.notesService.refresh();\n });\n }\n\n public paginationClicked(newPageNumber): void {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n });\n }\n\n public showAddModal(): void {\n this.customData$.next(null);\n this.modalType$.next('add');\n this.modalOpen$.next(true);\n }\n\n public editNote(data: TimelineItem): void {\n this.customData$.next(data);\n this.modalType$.next('modify');\n this.modalOpen$.next(true);\n }\n\n public onModalClosed(note: Partial<{id: string; content: string}> | null): void {\n this.modalOpen$.next(false);\n\n if (!note || !note.content) return;\n const {id, content} = note;\n\n if (!id) this.createNewNote(content);\n else this.editNoteConfirmed({id, content});\n }\n\n public onDeleteConfirm(noteId: string): void {\n this.notesService.deleteNote(noteId).subscribe(() => {\n this.notesService.refresh();\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.notes.deleteConfirmation.deletedMessage'),\n type: 'success',\n });\n });\n }\n\n private createNewNote(content): void {\n this.documentId$\n .pipe(\n take(1),\n switchMap((documentId: string) =>\n this.notesService.createDocumentNote(documentId, {content})\n )\n )\n .subscribe(() => {\n this.notesService.refresh();\n });\n }\n\n private editNoteConfirmed(note: {id: string; content: string}): void {\n this.notesService.updateNote(note.id, note).subscribe(() => {\n this.notesService.refresh();\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.notes.editedMessage'),\n type: 'success',\n });\n });\n }\n\n private deleteNote(data: TimelineItem): void {\n this.idToDelete$.next(data.customData?.['id'] ?? '');\n this.showDeleteModal$.next(true);\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 canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'case.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'case.notes.noResults.description' | translate\"\n [title]=\"'case.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n [modalType]=\"modalType$ | async\"\n [open]=\"modalOpen$ | async\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-note-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.notes.deleteConfirmation.description\"\n [outputOnConfirm]=\"idToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.notes.deleteConfirmation.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\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 {InjectionToken} from '@angular/core';\nimport {CaseDetailTabSummaryComponent} from '../components/case-detail/tab/summary/summary.component';\nimport {CaseDetailTabProgressComponent} from '../components/case-detail/tab/progress/progress.component';\nimport {CaseDetailTabAuditComponent} from '../components/case-detail/tab/audit/audit.component';\nimport {CaseDetailTabDocumentsComponent} from '../components/case-detail/tab/documents/documents.component';\nimport {DefaultTabComponents, DefaultTabs} from '../models';\nimport {CaseDetailTabNotesComponent} from '../components/case-detail/tab/notes/notes.component';\n\nconst TAB_MAP = new InjectionToken<Map<string, object>>('TabMap');\n\nconst DEFAULT_TABS = new Map<string, object>([\n [DefaultTabs.summary, CaseDetailTabSummaryComponent],\n [DefaultTabs.progress, CaseDetailTabProgressComponent],\n [DefaultTabs.audit, CaseDetailTabAuditComponent],\n [DefaultTabs.documents, CaseDetailTabDocumentsComponent],\n]);\n\nconst DEFAULT_TAB_COMPONENTS: DefaultTabComponents = {\n [DefaultTabs.summary]: CaseDetailTabSummaryComponent,\n [DefaultTabs.progress]: CaseDetailTabProgressComponent,\n [DefaultTabs.audit]: CaseDetailTabAuditComponent,\n [DefaultTabs.documents]: CaseDetailTabDocumentsComponent,\n [DefaultTabs.notes]: CaseDetailTabNotesComponent,\n};\n\nexport {TAB_MAP, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS};\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 {InjectionToken} from '@angular/core';\nimport {CaseTabConfig} from '../models';\n\nconst CASE_TAB_TOKEN = new InjectionToken<CaseTabConfig>(\n 'Specify a component to display per configured tab key.'\n);\n\nexport {CASE_TAB_TOKEN};\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 {CaseListTab} from '@valtimo/shared';\nimport {CarbonListNoResultsMessage, CarbonListTranslations} from '@valtimo/components';\n\nconst DEFAULT_CASE_LIST_TABS: CaseListTab[] = [CaseListTab.ALL, CaseListTab.MINE, CaseListTab.TEAM, CaseListTab.OPEN];\n\nconst CASE_LIST_TABLE_TRANSLATIONS: CarbonListTranslations = {\n select: {\n single: 'case.select.single',\n multiple: 'case.select.multiple',\n },\n pagination: {\n itemsPerPage: 'case.pagination.itemsPerPage',\n totalItem: 'case.pagination.totalItem',\n totalItems: 'case.pagination.totalItems',\n },\n};\n\nconst CASE_LIST_NO_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'case.noResults.ALL.description',\n isSearchResult: false,\n title: 'case.noResults.ALL.title',\n};\n\nexport {DEFAULT_CASE_LIST_TABS, CASE_LIST_TABLE_TRANSLATIONS, CASE_LIST_NO_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\nimport {CASES_WITHOUT_STATUS_KEY} from '@valtimo/components';\nimport {InternalCaseStatus} from '@valtimo/document';\nimport {TagColor} from '@valtimo/shared';\n\nconst CASE_WITHOUT_STATUS_STATUS: InternalCaseStatus = {\n key: CASES_WITHOUT_STATUS_KEY,\n documentDefinitionName: '',\n title: '',\n retentionPeriodInDays: 0,\n color: TagColor.Gray,\n visibleInCaseListByDefault: false,\n};\n\nexport {CASES_WITHOUT_STATUS_KEY, CASE_WITHOUT_STATUS_STATUS};\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\nconst WIDGET_WIDTH_1X = 320;\nconst WIDGET_HEIGHT_1X = 200;\n\nexport {WIDGET_WIDTH_1X, WIDGET_HEIGHT_1X};\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 {FormDisplayType, FormSize} from '@valtimo/process-link';\nimport {RightPanelMinWidths} from '../models';\n\nconst CASE_DETAIL_GUTTER_SIZE = 32;\n\nconst CASE_DETAIL_TASK_LIST_WIDTH = 412;\n\nconst CASE_DETAIL_LEFT_PANEL_MIN_WIDTH = 320;\n\nconst CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS: RightPanelMinWidths = {\n extraSmall: 240,\n small: 320,\n medium: 480,\n large: 640,\n};\n\nconst CASE_DETAIL_DEFAULT_DISPLAY_TYPE: FormDisplayType = 'modal';\nconst CASE_DETAIL_DEFAULT_DISPLAY_SIZE: FormSize = 'medium';\n\nconst CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {\n small: 250,\n medium: 350,\n large: 450,\n};\n\nexport {\n CASE_DETAIL_GUTTER_SIZE,\n CASE_DETAIL_LEFT_PANEL_MIN_WIDTH,\n CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n CASE_DETAIL_TASK_LIST_WIDTH,\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE,\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE,\n CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\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 './tab';\nexport * from './case-tab-token';\nexport * from './case-list.constants';\nexport * from './case-status.constants';\nexport * from './case-widget.constants';\nexport * from './case-detail-layout.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 {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {CaseTabService} from '../../../../services';\nimport {ActivatedRoute} from '@angular/router';\nimport {FormService} from '@valtimo/form';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {FormioForm} from '@formio/angular';\nimport {catchError} from 'rxjs/operators';\nimport {DocumentUpdatedSseEvent} from '../../../../models';\nimport {SseService} from '@valtimo/sse';\n\n@Component({\n standalone: false,\n templateUrl: './formio.component.html',\n styleUrls: ['./formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseDetailTabFormioComponent {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly formNotFound$ = new BehaviorSubject<string>('');\n public readonly noFormSpecified$ = new BehaviorSubject<boolean>(false);\n private _formDefinitionName!: string;\n public readonly prefilledForm$: Observable<FormioForm | null> = combineLatest([\n this.tabService.tabs$,\n this.route.params,\n this.sseService\n .getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED')\n .pipe(startWith(null)),\n ]).pipe(\n filter(([_, params, event]) => event === null || event.documentId === params?.documentId),\n switchMap(([tabs, params]) => {\n const currentTabName = params?.tab;\n const documentId = params?.documentId;\n const currentTab = tabs.find(tab => tab.name === currentTabName);\n\n if (!documentId || !currentTab?.contentKey) {\n this.noFormSpecified$.next(true);\n return of(null);\n }\n\n this._formDefinitionName = currentTab.contentKey;\n return this.formService.getFormDefinitionByNamePreFilled(currentTab.contentKey, documentId);\n }),\n tap(() => this.loading$.next(false)),\n catchError(() => {\n this.formNotFound$.next(this._formDefinitionName);\n this.loading$.next(false);\n return of(null);\n })\n );\n\n constructor(\n private readonly tabService: CaseTabService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService,\n private readonly sseService: SseService\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 prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'case.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'case.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\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 create = 'create',\n}\n\nenum WIDGET_PERMISSION_RESOURCE {\n camundaExecution = 'com.ritense.valtimo.operaton.domain.OperatonExecution',\n camundaProcessDefinition = 'com.ritense.valtimo.operaton.domain.OperatonProcessDefinition',\n}\n\nconst CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.create,\n resource: WIDGET_PERMISSION_RESOURCE.camundaExecution,\n};\n\nexport {CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, WIDGET_PERMISSION_RESOURCE};\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 {BehaviorSubject, combineLatest, Observable, of, switchMap} from 'rxjs';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService, StartableItem} from '@valtimo/document';\nimport {\n CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION,\n WIDGET_PERMISSION_RESOURCE,\n} from '../../widgets.permissions';\nimport {BasicWidget} from '@valtimo/layout';\n\nexport class WidgetProcess {\n private readonly _baseDocumentId$ = new BehaviorSubject<string | null>(null);\n private readonly _baseWidgetConfiguration$ = new BehaviorSubject<BasicWidget | null>(null);\n protected set baseDocumentId(value: string) {\n this._baseDocumentId$.next(value);\n }\n protected set baseWidgetConfiguration(value: BasicWidget) {\n this._baseWidgetConfiguration$.next(value);\n }\n protected get baseDocumentId(): string {\n return this._baseDocumentId$.getValue();\n }\n\n private readonly _startableItems$ = combineLatest([\n this._baseDocumentId$,\n this._baseWidgetConfiguration$,\n ]).pipe(\n switchMap(([documentId, widgetConfiguration]: [string | null, BasicWidget | null]) => {\n if (\n !documentId ||\n !widgetConfiguration ||\n !widgetConfiguration.actions?.[0]?.processDefinitionKey\n ) {\n return of(null);\n }\n return this.documentService.getStartableItems({caseDocumentId: documentId});\n })\n );\n\n public readonly canCreateCamundaExecution$: Observable<boolean> = combineLatest([\n this._startableItems$,\n this._baseWidgetConfiguration$,\n ]).pipe(\n switchMap(\n ([startableItems, widgetConfiguration]: [\n StartableItem[] | null,\n BasicWidget | null,\n ]) => {\n const processDefinitionKey = widgetConfiguration?.actions?.[0]?.processDefinitionKey;\n const requiredProcess = startableItems?.find(\n (item: StartableItem) =>\n item.key === processDefinitionKey && !!item.processDefinitionId\n );\n\n if (!requiredProcess) {\n return of(false);\n }\n\n return this.permissionService.requestPermission(CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, {\n resource: WIDGET_PERMISSION_RESOURCE.camundaProcessDefinition,\n identifier: requiredProcess.processDefinitionId,\n });\n }\n )\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\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 {EventEmitter, Injectable} from '@angular/core';\nimport {DocumentService, StartableItem} from '@valtimo/document';\nimport {\n BehaviorSubject,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n switchMap,\n} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetsService {\n private readonly _documentId$ = new BehaviorSubject<string | null>(null);\n private readonly _activeProcessKey$ = new BehaviorSubject<string | null>(null);\n private readonly _refreshWidgets$ = new Subject<void>();\n public readonly startProcessEvent = new EventEmitter();\n\n public readonly refreshWidgets$ = this._refreshWidgets$.asObservable();\n\n public set documentId(value: string) {\n this._documentId$.next(value);\n }\n\n private readonly startableItems$ = this._documentId$.pipe(\n filter((documentId: string | null) => !!documentId),\n switchMap((documentId: string) => this.documentService.getStartableItems({caseDocumentId: documentId})),\n distinctUntilChanged()\n );\n\n public get activeProcess$(): Observable<StartableItem | undefined> {\n return combineLatest([this._activeProcessKey$, this.startableItems$]).pipe(\n map(([activeProcessKey, items]: [string | null, StartableItem[]]) => {\n return items.find((item: StartableItem) => activeProcessKey === item.key);\n })\n );\n }\n\n constructor(private readonly documentService: DocumentService) {}\n\n public startProcess(processDocumentDefinitionKey: string): void {\n this._activeProcessKey$.next(processDocumentDefinitionKey);\n this.startProcessEvent.emit();\n }\n\n public finishProcess(): void {\n this._activeProcessKey$.next(null);\n }\n\n public refreshWidgets(): void {\n this._refreshWidgets$.next();\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 {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonListModule} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n FieldsWidget,\n WidgetAction,\n WidgetFieldComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\nimport {WidgetProcess} from '../widget-process/widget-process';\n\n@Component({\n selector: 'valtimo-case-widget-field',\n templateUrl: './case-widget-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetFieldComponent,\n ],\n})\nexport class CaseWidgetFieldComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: FieldsWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n if (!process.processDefinitionKey) return;\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {WidgetsService} from '../../widgets.service';\nimport {CustomWidget, WidgetAction, WidgetCustomComponent} from '@valtimo/layout';\n\n@Component({\n selector: 'valtimo-case-widget-custom',\n templateUrl: './case-widget-custom.component.html',\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseWidgetCustomComponent extends WidgetProcess {\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n }\n @Input() public set widgetConfiguration(value: CustomWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this._widgetConfigSubject$.next(value);\n }\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n constructor(\n private readonly widgetsService: WidgetsService,\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\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 EventEmitter,\n Input,\n OnInit,\n DestroyRef,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {FormIoModule} from '@valtimo/components';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService} from '@valtimo/document';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {WidgetsService} from '../../widgets.service';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n FormioWidgetWidgetWithUuid,\n WidgetAction,\n WidgetFormioComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\n\n@Component({\n selector: 'valtimo-case-widget-formio',\n templateUrl: './case-widget-formio.component.html',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseWidgetFormioComponent extends WidgetProcess implements OnInit {\n @Input() public set documentId(value: string) {\n if (value) this._documentIdSubject$.next(value);\n this.baseDocumentId = value;\n }\n @Input() public set widgetConfiguration(value: FormioWidgetWidgetWithUuid) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this._widgetConfigurationSubject$.next(value);\n }\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n public readonly refreshForm = new EventEmitter<void>();\n\n private readonly _documentIdSubject$ = new BehaviorSubject<string>('');\n private readonly _tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public get documentId$(): Observable<string> {\n return this._documentIdSubject$.pipe(filter(id => !!id));\n }\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this._widgetConfigurationSubject$,\n this._tabKey$,\n this._documentIdSubject$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabKey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabKey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly destroyRef: DestroyRef,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public ngOnInit(): void {\n this.widgetsService.refreshWidgets$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.refreshForm.emit());\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\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 {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListItem, CarbonListModule} from '@valtimo/components';\nimport {Page} from '@valtimo/shared';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\nimport {\n TableWidget,\n WidgetAction,\n WidgetLayoutService,\n WidgetTableComponent,\n WidgetTableContent,\n WidgetWithUuid,\n} from '@valtimo/layout';\nimport {HttpErrorResponse} from '@angular/common/http';\n\n@Component({\n selector: 'valtimo-case-widget-table',\n templateUrl: './case-widget-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n WidgetTableComponent,\n ],\n})\nexport class CaseWidgetTableComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n private _widgetConfiguration: TableWidget;\n public readonly widgetConfiguration$ = new BehaviorSubject<TableWidget | null>(null);\n @Input({required: true}) public set widgetConfiguration(value: TableWidget) {\n this._widgetConfiguration = value;\n this.baseWidgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public get widgetConfiguration(): TableWidget {\n return this._widgetConfiguration;\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n private readonly _initialWidgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetsApiService.getWidgetData(\n documentId,\n tabkey,\n widget.key,\n this.getPageSizeParam(widget as WidgetWithUuid)\n )\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n public readonly widgetData$: Observable<Page<CarbonListItem>> = combineLatest([\n this._initialWidgetData$,\n this._queryParams$,\n this.tabKey$,\n ]).pipe(\n switchMap(([initialData, queryParams, tabKey]) =>\n !queryParams\n ? of(initialData as Page<CarbonListItem>)\n : this.caseWidgetsApiService.getWidgetData(\n this.baseDocumentId,\n tabKey,\n this.widgetConfiguration.key,\n queryParams\n )\n ),\n filter(page => !!page)\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly caseWidgetsApiService: CaseWidgetsApiService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private getPageSizeParam(widgetConfiguration: WidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as WidgetTableContent).defaultPageSize}`;\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<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\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 {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Page} from '@valtimo/shared';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\nimport {\n CollectionWidget,\n CollectionWidgetCardData,\n WidgetAction,\n WidgetCollectionComponent,\n WidgetCollectionContent,\n WidgetLayoutService,\n WidgetWithUuid,\n} from '@valtimo/layout';\nimport {HttpErrorResponse} from '@angular/common/http';\n\n@Component({\n selector: 'valtimo-case-widget-collection',\n templateUrl: './case-widget-collection.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n WidgetCollectionComponent,\n ],\n})\nexport class CaseWidgetCollectionComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: CollectionWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionWidget | null>(null);\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n private readonly _initialWidgetData$ = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetsApiService.getWidgetData(\n documentId,\n tabkey,\n widget.key,\n this.getPageSizeParam(widget as WidgetWithUuid)\n )\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n public readonly widgetData$ = combineLatest([\n this._initialWidgetData$,\n this._queryParams$,\n this.widgetConfiguration$,\n this.tabKey$,\n ]).pipe(\n switchMap(([initialData, queryParams, widgetConfiguration, tabKey]) =>\n !queryParams\n ? of(initialData)\n : this.widgetApiService\n .getWidgetData(this.baseDocumentId, tabKey, widgetConfiguration.key, queryParams)\n .pipe(map((res: Page<CollectionWidgetCardData>) => res))\n ),\n filter(page => !!page)\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetApiService: CaseWidgetsApiService,\n private readonly widgetsService: WidgetsService,\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetsApiService: CaseWidgetsApiService\n ) {\n super(documentService, permissionService);\n }\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey ?? '');\n }\n\n private getPageSizeParam(widgetConfiguration: WidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as any as WidgetCollectionContent).defaultPageSize}`;\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<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\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 {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonListModule} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n MapWidget,\n WidgetAction,\n WidgetMapComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\nimport {WidgetProcess} from '../widget-process/widget-process';\n\n@Component({\n selector: 'valtimo-case-widget-map',\n templateUrl: './case-widget-map.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetMapComponent,\n ],\n})\nexport class CaseWidgetMapComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: MapWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<MapWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n if (!process.processDefinitionKey) return;\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {PersonCardWidget, WidgetLayoutService, WidgetPersonCardComponent} from '@valtimo/layout';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-case-widget-person-card',\n templateUrl: './case-widget-person-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, WidgetPersonCardComponent],\n})\nexport class CaseWidgetPersonCardComponent {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: PersonCardWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<PersonCardWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabKey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabKey, widget!.key, undefined)\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n return of(null);\n })\n );\n\n constructor(\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-person-card\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n></valtimo-widget-person-card>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonListModule} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n MetrolineWidget,\n WidgetAction,\n WidgetLayoutService,\n WidgetMetrolineComponent,\n} from '@valtimo/layout';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\nimport {WidgetProcess} from '../widget-process/widget-process';\n\n@Component({\n selector: 'valtimo-case-widget-metroline',\n templateUrl: './case-widget-metroline.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ButtonModule,\n CarbonListModule,\n CommonModule,\n TranslateModule,\n WidgetMetrolineComponent,\n ],\n})\nexport class CaseWidgetMetrolineComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: MetrolineWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<MetrolineWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n if (!process.processDefinitionKey) return;\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-metroline\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button cdsButton=\"ghost\" (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\">\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-metroline>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n HighlightWidget,\n WidgetHighlightComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {BehaviorSubject, catchError, combineLatest, Observable, of, startWith, switchMap, tap} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-case-widget-highlight',\n templateUrl: './case-widget-highlight.component.html',\n styleUrls: ['./case-widget-highlight.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, WidgetHighlightComponent],\n})\nexport class CaseWidgetHighlightComponent {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: HighlightWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<HighlightWidget | null>(null);\n\n private readonly _tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<object | null> = combineLatest([\n this.widgetConfiguration$,\n this._tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n return of(null);\n })\n );\n\n constructor(\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-highlight\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n></valtimo-widget-highlight>\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 {ChangeDetectionStrategy, Component, HostBinding, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {LoadingModule} from 'carbon-components-angular';\nimport {combineLatest, filter, map, Observable, shareReplay, startWith, switchMap} from 'rxjs';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../services';\nimport {\n BasicWidget,\n WidgetComponentMap,\n WidgetContainerComponent,\n WidgetType,\n DividerWidget,\n Widget,\n WidgetGroup,\n} from '@valtimo/layout';\nimport {CaseWidgetFieldComponent} from './components/field/case-widget-field.component';\nimport {CaseWidgetCustomComponent} from './components/custom/case-widget-custom.component';\nimport {CaseWidgetFormioComponent} from './components/formio/case-widget-formio.component';\nimport {CaseWidgetTableComponent} from './components/table/case-widget-table.component';\nimport {CaseWidgetCollectionComponent} from './components/collection/case-widget-collection.component';\nimport {CaseWidgetMapComponent} from './components/map/case-widget-map.component';\nimport {CaseWidgetPersonCardComponent} from './components/person-card/case-widget-person-card.component';\nimport {CaseWidgetMetrolineComponent} from './components/metroline/case-widget-metroline.component';\nimport {CaseWidgetHighlightComponent} from './components/highlight/case-widget-highlight.component';\nimport {DocumentUpdatedSseEvent} from '../../../../models';\nimport {SseService} from '@valtimo/sse';\nimport {WidgetsService} from './widgets.service';\nimport {isEqual} from 'lodash-es';\n\n@Component({\n templateUrl: './widgets.component.html',\n styleUrls: ['./widgets.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n LoadingModule,\n WidgetContainerComponent,\n CarbonListModule,\n TranslateModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseDetailWidgetsComponent implements OnInit, OnDestroy {\n @HostBinding('class.tab--no-margin') private readonly _noMargin = true;\n @HostBinding('class.tab--no-background') private readonly _noBackground = true;\n @HostBinding('class.tab--no-min-height') private readonly _noMinHeight = true;\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n private readonly _tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n\n private readonly _documentUpdates$ = combineLatest([\n this.sseService.getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED'),\n this._documentId$,\n ]).pipe(\n filter(([event, documentId]) => event.documentId === documentId),\n map(([event]) => event),\n startWith<DocumentUpdatedSseEvent | null>(null)\n );\n\n private _previousWidgetConfiguration: BasicWidget[] | null = null;\n\n private readonly _widgetConfiguration$ = combineLatest([\n this._documentId$,\n this._tabKey$,\n this._documentUpdates$,\n ]).pipe(\n switchMap(([documentId, tabKey, documentUpdatedEvent]) => {\n return this.filterDuplicateConfigurations(\n this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey),\n documentUpdatedEvent\n );\n }),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n public readonly widgetGroups$: Observable<WidgetGroup[]> = this._widgetConfiguration$.pipe(\n map(widgets => this.toCaseWidgetGroups(widgets))\n );\n\n public readonly widgetComponentMap: WidgetComponentMap = {\n [WidgetType.FIELDS]: CaseWidgetFieldComponent,\n [WidgetType.CUSTOM]: CaseWidgetCustomComponent,\n [WidgetType.FORMIO]: CaseWidgetFormioComponent,\n [WidgetType.TABLE]: CaseWidgetTableComponent,\n [WidgetType.INTERACTIVE_TABLE]: CaseWidgetTableComponent,\n [WidgetType.COLLECTION]: CaseWidgetCollectionComponent,\n [WidgetType.MAP]: CaseWidgetMapComponent,\n [WidgetType.PERSON_CARD]: CaseWidgetPersonCardComponent,\n [WidgetType.METROLINE]: CaseWidgetMetrolineComponent,\n [WidgetType.HIGHLIGHT]: CaseWidgetHighlightComponent,\n };\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly caseTabService: CaseTabService,\n private readonly widgetsApiService: CaseWidgetsApiService,\n private readonly sseService: SseService,\n private readonly widgetsService: WidgetsService\n ) {}\n\n public ngOnInit(): void {\n this.caseTabService.disableTabHorizontalOverflow();\n }\n\n public ngOnDestroy(): void {\n this.caseTabService.enableTabHorizontalOverflow();\n }\n\n private toCaseWidgetGroups(widgets: BasicWidget[]): WidgetGroup[] {\n const groups = widgets.reduce<WidgetGroup[]>((acc, widget) => {\n if (widget.type === WidgetType.DIVIDER) {\n acc.push({divider: widget as DividerWidget, widgets: []});\n } else {\n if (acc.length === 0) acc.push({divider: null, widgets: []});\n acc[acc.length - 1].widgets.push(widget as Widget);\n }\n return acc;\n }, []);\n\n // if there is more than one group and trailing groups have only a divider and no widgets, don't render these last groups\n for (let i = groups.length - 1; i >= 0; i--) {\n if (groups[i].widgets.length === 0) {\n groups.pop();\n } else {\n break;\n }\n }\n\n return groups;\n }\n\n private filterDuplicateConfigurations(\n widgetConfiguration: Observable<BasicWidget[]>,\n documentUpdatedEvent: DocumentUpdatedSseEvent | null\n ): Observable<BasicWidget[]> {\n return widgetConfiguration.pipe(\n map(configuration => {\n const configurationChanged =\n !this._previousWidgetConfiguration ||\n !isEqual(this._previousWidgetConfiguration, configuration);\n\n if (!configurationChanged && documentUpdatedEvent) {\n this.widgetsService.refreshWidgets();\n return null;\n }\n\n if (configurationChanged) {\n this._previousWidgetConfiguration = configuration;\n return configuration;\n }\n\n return null;\n }),\n filter((configuration): configuration is BasicWidget[] => configuration !== null)\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@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n ></valtimo-widget-container>\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 {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ApiTabItem} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseTabApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getDossierTabs(\n caseDefinitionKey: string,\n documentId: string\n ): Observable<Array<ApiTabItem>> {\n return this.httpClient.get<Array<ApiTabItem>>(this.getApiUrl(`v1/document/${documentId}/tab`));\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 {Inject, Injectable, OnDestroy, Optional, Signal, signal, Type} from '@angular/core';\nimport {\n ApiTabItem,\n ApiTabType,\n CaseTabConfig,\n DefaultTabs,\n TabImpl,\n TabLoaderImpl,\n} from '../models';\nimport {CASE_TAB_TOKEN, DEFAULT_TAB_COMPONENTS, DEFAULT_TABS, TAB_MAP} from '../constants';\nimport {ConfigService, ZGW_OBJECT_TYPE_COMPONENT_TOKEN} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\nimport {CaseTabApiService} from './case-tab-api.service';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {CaseDetailTabFormioComponent} from '../components/case-detail/tab/formio/formio.component';\nimport {CaseDetailTabNotFoundComponent} from '../components/case-detail/tab/not-found/not-found.component';\nimport {CaseDetailWidgetsComponent} from '../components/case-detail/tab/widgets/widgets.component';\n\n@Injectable()\nexport class CaseTabService implements OnDestroy {\n private readonly _tabManagementEnabled$: Observable<boolean> =\n this.configService.getFeatureToggleObservable('enableTabManagement', true);\n private readonly _caseDefinitionKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.caseDefinitionKey),\n filter(caseDefinitionKey => !!caseDefinitionKey)\n );\n private readonly _documentId$: Observable<string> = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n private readonly _tabs$ = new BehaviorSubject<Array<TabImpl> | null>(null);\n private readonly _subscriptions = new Subscription();\n private readonly _tabLoader$ = new BehaviorSubject<TabLoaderImpl | null>(null);\n private readonly _$tabHorizontalOverflowDisabled = signal(false);\n\n public get $tabHorizontalOverflowDisabled(): Signal<boolean> {\n return this._$tabHorizontalOverflowDisabled.asReadonly();\n }\n\n public get tabs$(): Observable<Array<TabImpl>> {\n return this._tabs$.pipe(filter(tabs => !!tabs));\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$)\n );\n }\n\n public get activeTabKey$(): Observable<string> {\n return this.activeTab$.pipe(map(tab => tab.name));\n }\n\n public get showTaskList$(): Observable<boolean> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$),\n map(activeTab => !!activeTab?.showTasks || activeTab.contentKey === DefaultTabs.summary)\n );\n }\n\n constructor(\n @Inject(TAB_MAP) private readonly tabMap: Map<string, object> = DEFAULT_TABS,\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(ZGW_OBJECT_TYPE_COMPONENT_TOKEN)\n private readonly zgwObjectTypeComponent: Type<any>,\n private readonly configService: ConfigService,\n private readonly route: ActivatedRoute,\n private readonly caseTabApiService: CaseTabApiService\n ) {\n this.openCaseDefinitionKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setTabLoader(tabLoader: TabLoaderImpl): void {\n this._tabLoader$.next(tabLoader);\n }\n\n public disableTabHorizontalOverflow(): void {\n this._$tabHorizontalOverflowDisabled.set(true);\n }\n\n public enableTabHorizontalOverflow(): void {\n this._$tabHorizontalOverflowDisabled.set(false);\n }\n\n private getConfigurableTabs(caseDefinitionKey: string): Map<string, object> {\n const tabMap = new Map<string, object>();\n\n if (this.configService?.config?.caseObjectTypes) {\n const allNamesObjects = this.configService?.config?.caseObjectTypes[caseDefinitionKey];\n\n allNamesObjects?.forEach(name => {\n tabMap.set(name, this.zgwObjectTypeComponent || CaseDetailTabNotFoundComponent);\n });\n }\n\n return tabMap;\n }\n\n private getAllEnvironmentTabs(extraTabs: Map<string, object>): Array<TabImpl> {\n let i = 0;\n const tabMap = extraTabs\n ? new Map([...Array.from(this.tabMap.entries()), ...Array.from(extraTabs.entries())])\n : this.tabMap;\n const tabs: Array<TabImpl> = [];\n\n tabMap.forEach((component, name) => {\n tabs.push(new TabImpl(name, i, component));\n i++;\n });\n\n return tabs;\n }\n\n private openCaseDefinitionKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this._caseDefinitionKey$, this._documentId$, this._tabManagementEnabled$])\n .subscribe(([caseDefinitionKey, documentId, tabManagementEnabled]) => {\n if (tabManagementEnabled) {\n this.setApiTabs(caseDefinitionKey, documentId);\n } else {\n this.setEnvironmentTabs(caseDefinitionKey);\n }\n })\n );\n }\n\n private setEnvironmentTabs(caseDefinitionKey: string): void {\n const configurableTabs = this.getConfigurableTabs(caseDefinitionKey);\n const allEnvironmentTabs = this.getAllEnvironmentTabs(configurableTabs);\n this._tabs$.next(allEnvironmentTabs);\n }\n\n private setApiTabs(caseDefinitionKey: string, documentId: string): void {\n this.caseTabApiService.getDossierTabs(caseDefinitionKey, documentId).subscribe({\n next: tabs => {\n const supportedTabs = tabs.filter(tab => this.filterTab(tab));\n const mappedTabs = supportedTabs.map((tab, index) => this.mapTab(tab, index));\n this._tabs$.next(mappedTabs.filter(tab => !!tab));\n },\n error: () => {\n this._tabs$.next([]);\n },\n });\n }\n\n private filterTab(tab: ApiTabItem): boolean {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return !!DEFAULT_TAB_COMPONENTS[tab.contentKey];\n case ApiTabType.CUSTOM:\n return !!(this.caseTabConfig || {})[tab.contentKey];\n default:\n return true;\n }\n }\n\n private mapTab(tab: ApiTabItem, index: number): TabImpl | null {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return new TabImpl(\n tab.key,\n index,\n DEFAULT_TAB_COMPONENTS[tab.contentKey],\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n case ApiTabType.FORMIO:\n return new TabImpl(\n tab.key,\n index,\n CaseDetailTabFormioComponent,\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n case ApiTabType.CUSTOM:\n return new TabImpl(\n tab.key,\n index,\n this.caseTabConfig[tab.contentKey],\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n case ApiTabType.WIDGETS:\n return new TabImpl(\n tab.key,\n index,\n CaseDetailWidgetsComponent,\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n default:\n return null;\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 {CaseListService} from './case-list.service';\nimport {CaseStatusService, InternalCaseStatus} from '@valtimo/document';\nimport {CaseParameterService} from './case-parameter.service';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {CASE_WITHOUT_STATUS_STATUS} from '../constants';\n\n@Injectable()\nexport class CaseListStatusService {\n private readonly _selectedCaseStatusKeys$ = new BehaviorSubject<string[]>([]);\n\n private readonly _showStatusSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseStatuses$: Observable<Array<InternalCaseStatus>> =\n this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n combineLatest([\n caseDefinitionKey\n ? this.caseStatusService.getInternalCaseStatuses(caseDefinitionKey)\n : this.caseStatusService.getAllInternalCaseStatuses(),\n this.caseParameterService.queryStatusParams$,\n ]).pipe(take(1))\n ),\n switchMap(([statuses, queryStatuses]) =>\n combineLatest([of([CASE_WITHOUT_STATUS_STATUS, ...statuses]), of(queryStatuses)])\n ),\n tap(([statuses, queryStatuses]) => {\n const selectedStatuses = queryStatuses\n ? statuses.filter(status => queryStatuses.includes(status.key))\n : [\n ...statuses.filter(status => status.visibleInCaseListByDefault),\n CASE_WITHOUT_STATUS_STATUS,\n ];\n this.setSelectedStatuses(selectedStatuses.map((status: InternalCaseStatus) => status.key));\n }),\n map(([statuses]) => statuses),\n tap(statuses => this._showStatusSelector$.next((statuses || []).length > 1))\n );\n\n public get caseStatuses$(): Observable<Array<InternalCaseStatus>> {\n return this._caseStatuses$;\n }\n\n public get showStatusSelector$(): Observable<boolean> {\n return this._showStatusSelector$.asObservable();\n }\n\n public get selectedCaseStatuses$(): Observable<Array<string>> {\n return this._selectedCaseStatusKeys$;\n }\n\n constructor(\n private readonly caseListService: CaseListService,\n private readonly caseStatusService: CaseStatusService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public setSelectedStatuses(statusKeys: string[]): void {\n this._selectedCaseStatusKeys$.next(statusKeys);\n this.caseParameterService.setStatusParameter(statusKeys);\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StartModalService {\n getStandardStartEventTitle(bpmnXml: string): string | null {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(bpmnXml, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('parsererror').length) {\n console.error('Error parsing XML');\n return null;\n }\n\n const startEvents = xmlDoc.getElementsByTagName('bpmn:startEvent');\n if (!startEvents) {\n return null;\n }\n\n const standardStartEvent = Array.from(startEvents).find(\n event =>\n !event.getElementsByTagName('bpmn:messageEventDefinition').length &&\n !event.getElementsByTagName('bpmn:timerEventDefinition').length\n );\n\n return standardStartEvent ? standardStartEvent.getAttribute('name') : 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 */\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, InterceptorSkip, Page} from '@valtimo/shared';\nimport {Observable, map} from 'rxjs';\nimport {CarbonListItem} from '@valtimo/components';\nimport {BasicWidget} from '@valtimo/layout';\nimport {CaseWidgetsRes} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseWidgetsApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getWidgetTabConfiguration(documentId: string, tabKey: string): Observable<BasicWidget[]> {\n return this.httpClient\n .get<CaseWidgetsRes>(this.getApiUrl(`v1/document/${documentId}/widget-tab/${tabKey}`))\n .pipe(map((res: CaseWidgetsRes) => res.widgets));\n }\n\n public getWidgetData(\n documentId: string,\n tabKey: string,\n widgetKey: string,\n queryParams?: string\n ): Observable<Page<CarbonListItem>> {\n return this.httpClient.get<Page<CarbonListItem>>(\n this.getApiUrl(\n !queryParams\n ? `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}`\n : `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}?${queryParams}`\n ),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\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 {FormDisplayType, FormSize, TaskWithProcessLink} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith} from 'rxjs';\nimport {\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE,\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE,\n CASE_DETAIL_GUTTER_SIZE,\n CASE_DETAIL_LEFT_PANEL_MIN_WIDTH,\n CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n CASE_DETAIL_TASK_LIST_WIDTH,\n} from '../constants';\nimport {CaseDetailLayout} from '../models';\nimport {CaseTabService} from './case-tab.service';\nimport {PageHeaderService} from '@valtimo/components';\n\n@Injectable()\nexport class CaseDetailLayoutService {\n private readonly _tabContentContainerWidth$ = new BehaviorSubject<number | null>(null);\n private readonly _showTaskList$ = this.caseTabService.showTaskList$;\n private readonly _taskAndProcessLinkOpenedInPanel$ =\n new BehaviorSubject<TaskWithProcessLink | null>(null);\n private readonly _formDisplayType$ = new BehaviorSubject<FormDisplayType>(\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE\n );\n private readonly _formDisplaySize$ = new BehaviorSubject<FormSize>(\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE\n );\n private readonly _refreshTasks$ = new BehaviorSubject<null>(null);\n private readonly _mainContentHeaderHeight$ = new BehaviorSubject<number>(0);\n private readonly _hasCaseTags$ = new BehaviorSubject<boolean>(false);\n\n public get refreshTasks$(): Observable<null> {\n return this._refreshTasks$.asObservable();\n }\n\n public get tabContentContainerWidth$(): Observable<number | null> {\n return this._tabContentContainerWidth$.pipe(filter(width => typeof width === 'number'));\n }\n\n public get taskAndProcessLinkOpenedInPanel$(): Observable<TaskWithProcessLink | null> {\n return this._taskAndProcessLinkOpenedInPanel$.asObservable();\n }\n\n public get formDisplaySize$(): Observable<FormSize> {\n return this._formDisplaySize$.asObservable();\n }\n\n public get tabContentContainerMaxHeight$(): Observable<string> {\n return combineLatest([\n this.pageHeaderService.compactMode$,\n this._mainContentHeaderHeight$,\n this._hasCaseTags$,\n ]).pipe(\n map(([compactMode, mainContentHeaderHeight, hasCaseTags]) =>\n !compactMode && !hasCaseTags\n ? `calc(100vh - ${202 + mainContentHeaderHeight}px)`\n : `calc(100vh - ${160 + mainContentHeaderHeight}px)`\n )\n );\n }\n\n constructor(\n private readonly caseTabService: CaseTabService,\n private readonly pageHeaderService: PageHeaderService\n ) {}\n\n public readonly caseDetailLayout$: Observable<CaseDetailLayout | any> = combineLatest([\n this.tabContentContainerWidth$,\n this._showTaskList$,\n this._taskAndProcessLinkOpenedInPanel$,\n this._formDisplayType$,\n this._formDisplaySize$,\n ]).pipe(\n map(\n ([\n tabContentContainerWidth,\n showTaskList,\n taskAndProcessLinkOpenedInPanel,\n formDisplayType,\n formDisplaySize,\n ]) => {\n if (!showTaskList) {\n return this.getInitialLayout();\n }\n\n if (!taskAndProcessLinkOpenedInPanel) {\n return this.getTaskListLayout();\n }\n\n if (taskAndProcessLinkOpenedInPanel && formDisplayType === 'panel') {\n return this.getPanelLayout(tabContentContainerWidth ?? 0, formDisplaySize);\n }\n\n return {} as CaseDetailLayout;\n }\n ),\n startWith({})\n );\n\n public setTabContentContainerWidth(width: number): void {\n this._tabContentContainerWidth$.next(width);\n }\n\n public setTaskAndProcessLinkOpenedInPanel(value: TaskWithProcessLink | null): void {\n this._taskAndProcessLinkOpenedInPanel$.next(value);\n }\n\n public setFormDisplayType(type: FormDisplayType): void {\n this._formDisplayType$.next(type);\n }\n\n public setFormDisplaySize(size: FormSize): void {\n this._formDisplaySize$.next(size);\n }\n\n public refreshTasks(): void {\n this._refreshTasks$.next(null);\n }\n\n public setMainContentHeaderHeight(height: number): void {\n this._mainContentHeaderHeight$.next(height);\n }\n\n public setHasCaseTags(hasCaseTags: boolean): void {\n this._hasCaseTags$.next(hasCaseTags);\n }\n\n private getInitialLayout(): CaseDetailLayout {\n return {\n showRightPanel: false,\n widthAdjustable: false,\n unit: 'percent',\n leftPanelWidth: '*',\n };\n }\n\n private getTaskListLayout(): CaseDetailLayout {\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: false,\n rightPanelMaxWidth: CASE_DETAIL_TASK_LIST_WIDTH,\n rightPanelMinWidth: CASE_DETAIL_TASK_LIST_WIDTH,\n rightPanelWidth: CASE_DETAIL_TASK_LIST_WIDTH,\n leftPanelWidth: '*',\n };\n }\n\n private getPanelLayout(\n tabContentContainerWidth: number,\n formDisplaySize: FormSize\n ): CaseDetailLayout {\n const rightPanelMaxWidth =\n tabContentContainerWidth - CASE_DETAIL_GUTTER_SIZE - CASE_DETAIL_LEFT_PANEL_MIN_WIDTH;\n const rightPanelMinWidth = CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS[formDisplaySize];\n const rightPanelMinWidthToUse =\n rightPanelMinWidth < rightPanelMaxWidth ? rightPanelMinWidth : rightPanelMaxWidth;\n\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: true,\n rightPanelMinWidth: rightPanelMinWidthToUse,\n rightPanelWidth: rightPanelMinWidthToUse,\n rightPanelMaxWidth,\n leftPanelWidth: '*',\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 {CaseTag, CaseTagService} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {CaseListService} from './case-list.service';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListCaseTagService {\n private readonly _selectedCaseTagKeys$ = new BehaviorSubject<string[]>([]);\n\n private readonly _showCaseTagsSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseTags$: Observable<CaseTag[]> = this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? combineLatest([\n this.caseTagsService.getCaseTags(caseDefinitionKey),\n this.caseParameterService.queryCaseTagsParams$,\n ]).pipe(take(1))\n : of<[CaseTag[], null]>([[], null])\n ),\n tap(([caseTags, queryCaseTags]) => {\n let selectedCaseTags;\n if (queryCaseTags) {\n selectedCaseTags = caseTags.filter(caseTag => queryCaseTags.includes(caseTag.key));\n this.setSelectedCaseTags(selectedCaseTags.map(selectedCaseTags => selectedCaseTags.key));\n }\n }),\n map(([caseTags]) => caseTags),\n tap(caseTags => this._showCaseTagsSelector$.next((caseTags || []).length > 1))\n );\n\n public get caseTags$(): Observable<CaseTag[]> {\n return this._caseTags$;\n }\n\n public get showCaseTagsSelector$(): Observable<boolean> {\n return this._showCaseTagsSelector$.asObservable();\n }\n\n public get selectedCaseTagKeys$(): Observable<string[]> {\n return this._selectedCaseTagKeys$;\n }\n\n constructor(\n private readonly caseListService: CaseListService,\n private readonly caseTagsService: CaseTagService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public setSelectedCaseTags(caseTagKeys: string[]): void {\n this._selectedCaseTagKeys$.next(caseTagKeys);\n this.caseParameterService.setCaseTagParameter(caseTagKeys);\n }\n}\n","import {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n combineLatest,\n first,\n of,\n switchMap,\n startWith,\n Observable,\n catchError,\n fromEvent,\n map,\n} from 'rxjs';\nimport {CaseListService} from './case-list.service';\nimport {CaseParameterService} from './case-parameter.service';\nimport {CaseListSearchService} from './case-list-search.service';\nimport {GlobalNotificationService, InterceptorSkip} from '@valtimo/shared';\nimport {CASES_WITHOUT_STATUS_KEY} from '@valtimo/components';\n\n@Injectable()\nexport class CaseExportService {\n constructor(\n private readonly http: HttpClient,\n private readonly listService: CaseListService,\n private readonly parameterService: CaseParameterService,\n private readonly caseListSearchService: CaseListSearchService,\n private readonly globalNotificationService: GlobalNotificationService\n ) {}\n\n public downloadExport(): Observable<{isLoading: boolean}> {\n return combineLatest([\n this.listService.caseDefinitionKey$,\n this.parameterService.querySearchParams$,\n this.parameterService.queryAssigneeParam$,\n this.parameterService.queryStatusParams$,\n this.parameterService.queryCaseTagsParams$,\n ]).pipe(\n first(),\n switchMap(data => {\n const body = {\n documentDefinitionName: data[0],\n searchOperator: 'AND',\n assigneeFilter: data[2],\n statusFilter: data[3].map((statusKey: string) =>\n statusKey === CASES_WITHOUT_STATUS_KEY ? null : statusKey\n ),\n caseTagsFilter: data[4],\n otherFilters: this.caseListSearchService.mapSearchValuesToFilters(data[1]),\n };\n return this.http.post(\n `/api/v1/case/${data[0]}/export?definitionName=${data[0]}&page=0&size=10&sort=createdOn%2CDESC`,\n body,\n {\n responseType: 'blob',\n observe: 'response',\n headers: new HttpHeaders().set(InterceptorSkip, '400'),\n }\n );\n }),\n switchMap(data => {\n const contentDisposition = data.headers.get('Content-Disposition');\n let filename = 'export.csv';\n if (contentDisposition) {\n const matches = /filename=\"?([^\"]+)\"?/.exec(contentDisposition);\n if (matches != null && matches[1]) {\n filename = matches[1];\n }\n }\n const url = URL.createObjectURL(data.body as Blob);\n const link = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.download = filename;\n link.click();\n link.remove();\n URL.revokeObjectURL(url);\n return of({isLoading: false});\n }),\n catchError(error => {\n return this.readBlobAsText(error.error).pipe(\n switchMap(errorBlobData => {\n this.globalNotificationService.showToast({\n title: 'An unexpected error occurred',\n caption: errorBlobData?.title,\n type: 'error',\n });\n\n return of({isLoading: false, error: errorBlobData?.title});\n })\n );\n }),\n startWith({isLoading: true})\n );\n }\n\n private readBlobAsText(blob: Blob): Observable<any> {\n const reader = new FileReader();\n reader.readAsText(blob);\n return fromEvent(reader, 'load').pipe(map(() => JSON.parse(reader.result as string)));\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, OnDestroy} from '@angular/core';\nimport {CaseDefinition, DocumentService} from '@valtimo/document';\nimport {ConfigService, MenuItem} from '@valtimo/shared';\nimport {BehaviorSubject, from, Observable, of, Subscription} from 'rxjs';\nimport {filter, switchMap} from 'rxjs/operators';\nimport {SseService} from '@valtimo/sse';\nimport {MenuService} from '@valtimo/components';\n\n@Injectable({providedIn: 'root'})\nexport class CaseMenuService implements OnDestroy {\n private readonly _subscriptions = new Subscription();\n public readonly disableCaseCount$: Observable<boolean>;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly sseService: SseService,\n private readonly menuService: MenuService,\n private readonly configService: ConfigService\n ) {\n this.disableCaseCount$ = this.configService.getFeatureToggleObservable('disableCaseCount');\n this.menuService.registerAppendMenuItemsFunction(this.appendCaseMenuItems.bind(this));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public appendCaseMenuItems = (menuItems: MenuItem[]): Observable<MenuItem[]> => {\n const isGenericCaseList =\n this.configService.config?.featureToggles?.enableGenericCaseList === true;\n\n if (isGenericCaseList) {\n const index = menuItems.findIndex(i => i.title === 'Cases' || i.title === 'Dossiers');\n if (index >= 0) {\n menuItems[index].link = ['/cases'];\n delete menuItems[index].children;\n }\n return of(menuItems);\n }\n\n return from(this.documentService.getCaseDefinitions({active: true})).pipe(\n switchMap(definitions => {\n const countMap = this.getCountMap(definitions);\n\n const caseItems: MenuItem[] = definitions.map((def, index) => ({\n link: ['/cases/' + def.caseDefinitionKey],\n title: def.name,\n iconClass: 'icon mdi mdi-dot-circle',\n sequence: index,\n show: true,\n ...(countMap && {count$: countMap.get(def.caseDefinitionKey)}),\n }));\n\n const index = menuItems.findIndex(i => i.title === 'Cases' || i.title === 'Dossiers');\n\n if (index >= 0) {\n menuItems[index].children = caseItems;\n }\n\n return of(menuItems);\n })\n );\n };\n\n private getCountMap(definitions: CaseDefinition[]): Map<string, BehaviorSubject<number>> {\n const map = new Map<string, BehaviorSubject<number>>();\n\n definitions.forEach(def => {\n map.set(def.caseDefinitionKey, new BehaviorSubject<number>(0));\n });\n\n this._subscriptions.add(\n this.sseService\n .getSseMessagesObservableByEventType(['CASE_UNASSIGNED', 'CASE_ASSIGNED', 'CASE_CREATED'])\n .subscribe(() => this.updateCounts(map))\n );\n\n this.updateCounts(map);\n return map;\n }\n\n private updateCounts(map: Map<string, BehaviorSubject<number>>): void {\n this._subscriptions.add(\n this.disableCaseCount$\n .pipe(\n filter(disableCaseCount => !disableCaseCount),\n switchMap(_ => this.documentService.getOpenDocumentCount())\n )\n .subscribe(counts => {\n counts.forEach(entry => {\n const subject = map.get(entry.documentDefinitionName);\n if (subject) {\n subject.next(entry.openDocumentCount);\n }\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\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {BasicWidget} from '@valtimo/layout';\n\n@Injectable({providedIn: 'root'})\nexport class CaseHeaderWidgetApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getHeaderWidget(documentId: string): Observable<BasicWidget> {\n return this.httpClient.get<BasicWidget>(this.getApiUrl(`v1/case/${documentId}/header-widget`), {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n });\n }\n\n public getHeaderWidgetData(documentId: string, pageSize = 5, page = 0): Observable<any> {\n return this.httpClient.get<any>(\n this.getApiUrl(`v1/case/${documentId}/header-widget/data?page=${page}&size=${pageSize}`),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\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\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {ListField, ListHiddenColumn} from '@valtimo/components';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseListHiddenColumnsService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getHiddenColumns(caseDefinitionKey: string): Observable<ListField[]> {\n return this.httpClient.get<ListField[]>(\n this.getApiUrl(`v1/case/${caseDefinitionKey}/hidden-list-column`)\n );\n }\n\n public saveHiddenColumns(\n caseDefinitionKey: string,\n hiddenColumns: ListHiddenColumn[]\n ): Observable<ListHiddenColumn[]> {\n return this.httpClient.post<ListHiddenColumn[]>(\n this.getApiUrl(`v1/case/${caseDefinitionKey}/hidden-list-column`),\n hiddenColumns\n );\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {IQuickSearchService, QuickSearchItem} from '@valtimo/components';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, Observable, filter, of, switchMap, take, tap} from 'rxjs';\nimport {CaseListQuickSearchParams} from '../models';\n\n@Injectable()\nexport class CaseListQuickSearchService\n extends BaseApiService\n implements IQuickSearchService<CaseListQuickSearchParams>\n{\n private readonly _params$ = new BehaviorSubject<CaseListQuickSearchParams | null>(null);\n private get _params(): CaseListQuickSearchParams {\n return this._params$.getValue() ?? {caseDefinitionKey: ''};\n }\n public get params$(): Observable<CaseListQuickSearchParams | null> {\n return this._params$.pipe(filter(params => !!params));\n }\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public initParams(caseDefinitionKey: string): void {\n if (caseDefinitionKey === this._params.caseDefinitionKey) return;\n this._params$.next({caseDefinitionKey});\n }\n\n public getQuickSearchItems(): Observable<QuickSearchItem[]> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.get<QuickSearchItem[]>(\n this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`)\n )\n )\n );\n }\n\n public createQuickSearchItem(quickSearchItem: QuickSearchItem): Observable<QuickSearchItem> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.post<QuickSearchItem>(\n this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`),\n quickSearchItem\n )\n )\n );\n }\n public updateQuickSearchItems(\n quickSearchItems: QuickSearchItem[]\n ): Observable<QuickSearchItem[]> {\n throw new Error('Method not implemented.');\n }\n\n public editQuickSearchItem(quickSearchItem: QuickSearchItem): Observable<QuickSearchItem> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.put<QuickSearchItem>(\n this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`),\n quickSearchItem\n )\n )\n );\n }\n public deleteQuickSearchItem(quickSearchItem: QuickSearchItem): Observable<void> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.delete<void>(\n this.getApiUrl(\n `v1/case/${params?.caseDefinitionKey}/stored-quick-search/${quickSearchItem.title}`\n )\n )\n )\n );\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DestroyRef, Inject, Injectable} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n CarbonListNoResultsMessage,\n CASES_WITHOUT_STATUS_KEY,\n IQuickSearchService,\n ListField,\n ListHiddenColumn,\n PageTitleService,\n Pagination,\n QUICK_SEARCH_SERVICE,\n ViewType,\n} from '@valtimo/components';\nimport {\n AdvancedDocumentSearchRequest,\n AdvancedDocumentSearchRequestImpl,\n CaseTag,\n CaseTagsUtils,\n Documents,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n SpecifiedDocuments,\n} from '@valtimo/document';\nimport {\n AssigneeFilter,\n CaseListTab,\n DefinitionColumn,\n SearchField,\n SearchFieldValues,\n} from '@valtimo/shared';\nimport {isEqual} from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n defaultIfEmpty,\n distinctUntilChanged,\n filter,\n forkJoin,\n map,\n Observable,\n of,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CASE_LIST_NO_RESULTS_MESSAGE} from '../constants';\nimport {CaseListQuickSearchParams} from '../models';\nimport {\n CAN_CREATE_CASE_PERMISSION,\n CAN_EXPORT_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n} from '../permissions';\nimport {CaseColumnService} from './case-column.service';\nimport {CaseListAssigneeService} from './case-list-assignee.service';\nimport {CaseListCaseTagService} from './case-list-case-tag.service';\nimport {CaseListHiddenColumnsService} from './case-list-hidden-columns.service';\nimport {CaseListPaginationService} from './case-list-pagination.service';\nimport {CaseListSearchService} from './case-list-search.service';\nimport {CaseListService} from './case-list.service';\nimport {CaseListStatusService} from './case-list-status.service';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListOrchestrationService {\n private readonly INTERNAL_STATUS_COLUMN = 'internalStatus';\n private readonly CASE_TAGS_COLUMN = 'caseTags';\n\n private readonly _statusField: ListField = {\n label: 'document.status',\n key: this.INTERNAL_STATUS_COLUMN,\n viewType: ViewType.TAGS,\n sortable: true,\n };\n\n private readonly _internalStatusKeys$ = new BehaviorSubject<string[]>([\n this.INTERNAL_STATUS_COLUMN,\n ]);\n private readonly _caseTagsKeys$ = new BehaviorSubject<string[]>([this.CASE_TAGS_COLUMN]);\n private readonly _refreshHiddenColumns$ = new BehaviorSubject<null>(null);\n\n public readonly noResultsMessage$ = new BehaviorSubject<CarbonListNoResultsMessage>(\n CASE_LIST_NO_RESULTS_MESSAGE\n );\n public readonly hasApiColumnConfig$ = new BehaviorSubject<boolean>(false);\n public readonly disableExportButton$ = new BehaviorSubject<boolean>(false);\n\n public readonly caseDefinitionKey$: Observable<string> = this.listService.caseDefinitionKey$.pipe(\n tap((caseDefinitionKey: string) =>\n this.caseListQuickSearchService.initParams(caseDefinitionKey)\n )\n );\n\n public readonly searchFields$: Observable<Array<SearchField> | null> =\n this.searchService.documentSearchFields$;\n\n public readonly statuses$: Observable<Array<InternalCaseStatus>> =\n this.statusService.caseStatuses$;\n\n public readonly caseTags$: Observable<CaseTag[]> = this.caseListCaseTagService.caseTags$;\n\n public readonly selectedStatusKeys$ = this.statusService.selectedCaseStatuses$;\n public readonly selectedCaseTagKeys$ = this.caseListCaseTagService.selectedCaseTagKeys$;\n public readonly searchFieldValues$ = this.parameterService.searchFieldValues$;\n public readonly assigneeFilter$: Observable<AssigneeFilter> =\n this.assigneeService.assigneeFilter$;\n public readonly showStatusSelector$ = this.statusService.showStatusSelector$;\n public readonly showCaseTagsSelector$ = this.caseListCaseTagService.showCaseTagsSelector$;\n\n public readonly hiddenColumns$: Observable<ListField[]> = this._refreshHiddenColumns$.pipe(\n switchMap(() => this.caseDefinitionKey$),\n switchMap((caseDefinitionKey: string) =>\n caseDefinitionKey\n ? this.caseListHiddenColumnsService.getHiddenColumns(caseDefinitionKey)\n : of([])\n )\n );\n\n public readonly schema$ = this.listService.caseDefinitionKey$.pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey => this.documentService.getDocumentDefinition(caseDefinitionKey)),\n map(caseDefinition => caseDefinition?.schema),\n tap(schema => {\n if (schema?.title) {\n this.pageTitleService.setCustomPageTitle(schema?.title, true);\n }\n })\n );\n\n public readonly canCreateCase$: Observable<boolean> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.permissionService.requestPermission(CAN_CREATE_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocumentDefinition,\n identifier: caseDefinitionKey,\n })\n : of(false)\n )\n );\n\n public readonly canExportCase$: Observable<boolean> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? combineLatest([\n this.permissionService.requestPermission(CAN_EXPORT_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocumentDefinition,\n identifier: caseDefinitionKey,\n }),\n this.documentService.getCaseList(caseDefinitionKey),\n ])\n : of([false, []] as [boolean, any[]])\n ),\n switchMap(([canExportPermission, caseList]) => {\n const isExportableColumns = caseList.some(caseListitem => caseListitem.exportable);\n return of(canExportPermission && isExportableColumns);\n })\n );\n\n public readonly disableSaveSearch$: Observable<boolean> = combineLatest([\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n ]).pipe(\n map(([selectedStatuses, selectedTags]) => !selectedStatuses.length && !selectedTags.length)\n );\n\n private readonly _canHaveAssignee$: Observable<boolean> = this.assigneeService.canHaveAssignee$;\n\n private readonly _columns$: Observable<Array<DefinitionColumn>> =\n this.listService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.columnService.getDefinitionColumns(caseDefinitionKey)\n : of({hasApiConfig: false, columns: []})\n ),\n map(res => {\n this.hasApiColumnConfig$.next(res.hasApiConfig);\n return res.columns;\n }),\n tap(columns => {\n this.listService.caseDefinitionKey$.pipe(take(1)).subscribe(caseDefinitionKey => {\n this.paginationService.setPagination(columns, caseDefinitionKey);\n });\n })\n );\n\n // --- Loading state ---\n\n private readonly _loadingFields$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingPagination$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingSearchFields$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingAssigneeFilter$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingDocumentItems$ = new BehaviorSubject<boolean>(true);\n\n public readonly pagination$: Observable<Pagination> = this.paginationService.pagination$.pipe(\n tap(() => this._loadingPagination$.next(false))\n );\n\n public readonly loaded$: Observable<boolean> = combineLatest([\n this._loadingFields$,\n this._loadingPagination$,\n this._loadingSearchFields$,\n this._loadingAssigneeFilter$,\n this._loadingDocumentItems$,\n ]).pipe(map(flags => flags.every(loading => !loading)));\n\n // --- Column & field observables ---\n\n public readonly availableFields$: Observable<ListField[]> = combineLatest([\n this._canHaveAssignee$,\n this._columns$,\n this.hasApiColumnConfig$,\n this.statuses$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([canHaveAssignee, columns, hasApiConfig, statuses]) => {\n this._internalStatusKeys$.next([\n ...this._internalStatusKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.INTERNAL_STATUS_COLUMN ? [...acc, curr.translationKey] : acc,\n [] as string[]\n ),\n ]);\n this._caseTagsKeys$.next([\n ...this._caseTagsKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.CASE_TAGS_COLUMN ? [...acc, curr.translationKey] : acc,\n []\n ),\n ]);\n const filteredAssigneeColumns = this.assigneeService.filterAssigneeColumns(\n columns,\n canHaveAssignee\n );\n const listFields = this.columnService.mapDefinitionColumnsToListFields(\n filteredAssigneeColumns,\n hasApiConfig\n );\n const fieldsToReturn = this.assigneeService.addAssigneeListField(\n columns,\n listFields,\n canHaveAssignee\n );\n\n return statuses.some(\n (status: InternalCaseStatus) => status.key !== CASES_WITHOUT_STATUS_KEY\n ) && !hasApiConfig\n ? [...fieldsToReturn, this._statusField]\n : fieldsToReturn;\n })\n );\n\n public readonly fields$: Observable<ListField[]> = combineLatest([\n this.availableFields$,\n this.hiddenColumns$,\n ]).pipe(\n map(([fields, hiddenColumns]) =>\n fields.filter(\n (field: ListField) =>\n !hiddenColumns.find((hiddenColumn: ListField) => hiddenColumn.key === field.key)\n )\n ),\n tap(listFields => {\n const defaultListField = listFields.find(field => field.default);\n this.parameterService.queryPaginationParams$\n .pipe(take(1))\n .subscribe(queryPaginationParams => {\n if (defaultListField && !queryPaginationParams?.sort?.isSorting) {\n const sortDirection =\n typeof defaultListField.default === 'string' ? defaultListField.default : 'DESC';\n this.paginationService.sortChanged({\n isSorting: true,\n state: {name: defaultListField.key, direction: sortDirection as any},\n });\n }\n });\n }),\n tap(() => this._loadingFields$.next(false))\n );\n\n // --- Document items (the main data pipeline) ---\n\n private readonly _documentItems$ = new BehaviorSubject<any[] | null>(null);\n public readonly documentItems$: Observable<any[] | null> = this._documentItems$.asObservable();\n\n private readonly _documentSearchRequest$: Observable<AdvancedDocumentSearchRequest> =\n combineLatest([this.pagination$, this.listService.caseDefinitionKey$]).pipe(\n filter(([pagination, caseDefinitionKey]) => !!pagination && !!caseDefinitionKey),\n map(([pagination, caseDefinitionKey]) => {\n const page = pagination.page - 1;\n return new AdvancedDocumentSearchRequestImpl(\n caseDefinitionKey,\n page >= 0 ? page : 0,\n pagination.size,\n pagination.sort\n );\n })\n );\n\n private readonly _documentItemsPipeline$ = this.listService.checkRefresh$.pipe(\n switchMap(() =>\n combineLatest([\n this._documentSearchRequest$,\n this.assigneeFilter$,\n this.searchFieldValues$,\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n this.listService.forceRefresh$,\n this.hasApiColumnConfig$,\n this.statusService.caseStatuses$,\n this.caseListCaseTagService.caseTags$,\n ]).pipe(debounceTime(50))\n ),\n distinctUntilChanged(this.areDocumentRequestsEqual),\n switchMap(\n ([\n documentSearchRequest,\n assigneeFilter,\n searchValues,\n selectedStatuses,\n selectedCaseTagKeys,\n _,\n hasApiColumnConfig,\n allStatuses,\n ]) =>\n this.fetchDocuments(\n documentSearchRequest,\n assigneeFilter,\n searchValues,\n selectedStatuses,\n selectedCaseTagKeys,\n hasApiColumnConfig,\n allStatuses\n )\n ),\n switchMap(res => this.checkDocumentPermissions(res)),\n map(res => this.mapDocumentsToItems(res)),\n map(res => this.mapStatusAndTagColumns(res)),\n tap(items => {\n this._documentItems$.next(items);\n this._loadingAssigneeFilter$.next(false);\n this._loadingDocumentItems$.next(false);\n })\n );\n\n constructor(\n private readonly assigneeService: CaseListAssigneeService,\n private readonly caseListCaseTagService: CaseListCaseTagService,\n private readonly caseListHiddenColumnsService: CaseListHiddenColumnsService,\n private readonly columnService: CaseColumnService,\n private readonly destroyRef: DestroyRef,\n private readonly documentService: DocumentService,\n private readonly listService: CaseListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: CaseListPaginationService,\n private readonly parameterService: CaseParameterService,\n private readonly permissionService: PermissionService,\n private readonly searchService: CaseListSearchService,\n private readonly statusService: CaseListStatusService,\n private readonly translateService: TranslateService,\n @Inject(QUICK_SEARCH_SERVICE)\n private readonly caseListQuickSearchService: IQuickSearchService<CaseListQuickSearchParams>\n ) {\n this._documentItemsPipeline$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n }\n\n public setLoading(): void {\n this._loadingFields$.next(true);\n this._loadingPagination$.next(true);\n this._loadingSearchFields$.next(true);\n this._loadingAssigneeFilter$.next(true);\n this._loadingDocumentItems$.next(true);\n this._documentItems$.next(null);\n }\n\n public setLoadingAssigneeFilter(loading: boolean): void {\n this._loadingAssigneeFilter$.next(loading);\n }\n\n public setLoadingSearchFields(loading: boolean): void {\n this._loadingSearchFields$.next(loading);\n }\n\n public updateNoResultsMessage(isSearchResult: boolean, activeTab: CaseListTab | null): void {\n this.noResultsMessage$.next(\n isSearchResult\n ? {\n description: 'case.noResults.search.description',\n isSearchResult,\n title: 'case.noResults.search.title',\n }\n : {\n description: `case.noResults.${activeTab ?? 'ALL'}.description`,\n isSearchResult,\n title: `case.noResults.${activeTab ?? 'ALL'}.title`,\n }\n );\n }\n\n public saveHiddenColumns(hiddenColumns: ListHiddenColumn[]): void {\n this.caseDefinitionKey$\n .pipe(\n take(1),\n switchMap((caseDefinitionKey: string) =>\n this.caseListHiddenColumnsService.saveHiddenColumns(caseDefinitionKey, hiddenColumns)\n )\n )\n .subscribe(() => this._refreshHiddenColumns$.next(null));\n }\n\n // --- Private helpers for the document items pipeline ---\n\n private areDocumentRequestsEqual(\n [\n prevSearchRequest,\n prevAssigneeFilter,\n prevSearchFieldValues,\n prevSelectedStatuses,\n prevCaseTagKeys,\n prevForceRefresh,\n ]: any[],\n [\n currSearchRequest,\n currAssigneeFilter,\n currSearchFieldValues,\n currSelectedStatuses,\n currCaseTagKeys,\n currForceRefresh,\n ]: any[]\n ): boolean {\n return isEqual(\n {\n ...prevSearchRequest,\n assignee: prevAssigneeFilter,\n ...prevSearchFieldValues,\n ...prevSelectedStatuses,\n ...prevCaseTagKeys,\n forceRefresh: prevForceRefresh,\n },\n {\n ...currSearchRequest,\n assignee: currAssigneeFilter,\n ...currSearchFieldValues,\n ...currSelectedStatuses,\n ...currCaseTagKeys,\n forceRefresh: currForceRefresh,\n }\n );\n }\n\n private fetchDocuments(\n documentSearchRequest: AdvancedDocumentSearchRequest,\n assigneeFilter: AssigneeFilter,\n searchValues: SearchFieldValues,\n selectedStatuses: string[],\n selectedCaseTagKeys: string[],\n hasApiColumnConfig: boolean,\n allStatuses: InternalCaseStatus[]\n ): Observable<{\n documents: Documents | SpecifiedDocuments;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n allStatuses: InternalCaseStatus[];\n assigneeFilter: AssigneeFilter;\n }> {\n const statusKeys: (string | null)[] =\n allStatuses.length === 1\n ? []\n : selectedStatuses.map((statusKey: string) =>\n statusKey === CASES_WITHOUT_STATUS_KEY ? null : statusKey\n );\n\n const searchFilters =\n (Object.keys(searchValues) || []).length > 0\n ? this.searchService.mapSearchValuesToFilters(searchValues)\n : undefined;\n\n const documentsObs = !hasApiColumnConfig\n ? this.documentService.getDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n searchFilters,\n statusKeys,\n selectedCaseTagKeys\n )\n : this.documentService.getSpecifiedDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n searchFilters,\n statusKeys,\n selectedCaseTagKeys\n );\n\n return forkJoin({\n documents: documentsObs,\n hasApiColumnConfig: of(hasApiColumnConfig),\n isSearchResult: of(!!searchFilters),\n allStatuses: of(allStatuses),\n assigneeFilter: of(assigneeFilter),\n });\n }\n\n private checkDocumentPermissions(res: {\n documents: Documents | SpecifiedDocuments;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n allStatuses: InternalCaseStatus[];\n assigneeFilter: AssigneeFilter;\n }): Observable<[typeof res, boolean[], string[], string[]]> {\n return combineLatest([\n of(res),\n forkJoin(\n res.documents.content.map(document =>\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: document.id,\n })\n .pipe(take(1))\n )\n ).pipe(defaultIfEmpty([] as boolean[])),\n this._internalStatusKeys$,\n this._caseTagsKeys$,\n ]);\n }\n\n private mapDocumentsToItems([res, documentsAuthorization, statusColumnKeys, caseTagsKeys]: [\n {\n documents: Documents | SpecifiedDocuments;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n allStatuses: InternalCaseStatus[];\n assigneeFilter: AssigneeFilter;\n },\n boolean[],\n string[],\n string[],\n ]): {\n data: any[];\n statuses: InternalCaseStatus[];\n statusColumnKeys: string[];\n caseTagsKeys: string[];\n isSearchResult: boolean;\n assigneeFilter: AssigneeFilter;\n } {\n const documentsWithLock = {\n ...res.documents,\n content: res.documents.content.map((document, index) => ({\n ...document,\n locked: !documentsAuthorization[index],\n })),\n };\n\n this.paginationService.setCollectionSize(documentsWithLock);\n this.paginationService.checkPage(documentsWithLock);\n\n return {\n data: this.listService.mapDocuments(documentsWithLock, res.hasApiColumnConfig),\n statuses: res.allStatuses,\n statusColumnKeys,\n caseTagsKeys,\n isSearchResult: res.isSearchResult,\n assigneeFilter: res.assigneeFilter,\n };\n }\n\n private mapStatusAndTagColumns(res: {\n data: any[];\n statuses: InternalCaseStatus[];\n statusColumnKeys: string[];\n caseTagsKeys: string[];\n isSearchResult: boolean;\n assigneeFilter: AssigneeFilter;\n }): any[] {\n if (!Array.isArray(res.data)) return res.data;\n\n this.updateNoResultsMessage(res.isSearchResult, res.assigneeFilter as CaseListTab);\n this.disableExportButton$.next(res.data.length === 0);\n\n return res.data.map(item => {\n const mappedInternalStatusColumns = res.statusColumnKeys.reduce((acc, curr) => {\n const status = res.statuses.find(\n (s: InternalCaseStatus) => s.key === item[curr] || s.key === item.status\n );\n return !status\n ? acc\n : {\n ...acc,\n [curr]: {\n content: status.title,\n type: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n },\n };\n }, {});\n\n const mappedTagColumns = res.caseTagsKeys.reduce((acc, curr) => {\n if (item[curr]) {\n return {\n ...acc,\n [curr]: item[curr].map(tag => ({\n content: tag.title,\n type: CaseTagsUtils.getTagTypeFromCaseTagColor(tag.color),\n })),\n };\n }\n return acc;\n }, {});\n\n return {\n ...item,\n ...mappedInternalStatusColumns,\n ...mappedTagColumns,\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\nexport * from './case-bulk-assign.service';\nexport * from './case-column.service';\nexport * from './case-parameter.service';\nexport * from './case-list.service';\nexport * from './case-list-assignee.service';\nexport * from './case-list-pagination.service';\nexport * from './case-list-search.service';\nexport * from './case-tab.service';\nexport * from './case.service';\nexport * from './case-tab-api.service';\nexport * from './case-list-status.service';\nexport * from './start-modal.service';\nexport * from './case-widgets-api.service';\nexport * from './case-detail-layout.service';\nexport * from './case-list-case-tag.service';\nexport * from './case-export.service';\nexport * from './case-menu.service';\nexport * from './case-header-widget-api.service';\nexport * from './case-list-hidden-columns.service';\nexport * from './case-list-quick-search.service';\nexport * from './case-list-orchestration.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 ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, forkJoin, map, Observable, take, switchMap, catchError, of} from 'rxjs';\nimport {CandidateUser, BulkAssign} from '../../models';\nimport {CaseBulkAssignService} from '../../services';\nimport {CAN_ASSIGN_CASE_PERMISSION, CASE_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {PermissionService} from '@valtimo/access-control';\nimport {TeamsApiService} from '@valtimo/teams';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-bulk-assign-modal',\n templateUrl: './case-bulk-assign-modal.component.html',\n styleUrls: ['./case-bulk-assign-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseBulkAssignModalComponent {\n @HostBinding('class') public modalClass = 'valtimo-case-bulk-assign-modal';\n\n @Input() public set documentIds(value: string[]) {\n if (value) {\n this.documentIds$.next(value);\n }\n }\n @Input() open = false;\n\n @Output() closeEvent = new EventEmitter<BulkAssign | null>();\n\n private readonly documentIds$ = new BehaviorSubject<string[]>([]);\n\n public readonly permittedDocumentIds$ = new BehaviorSubject<string[]>([]);\n public readonly canAssignAllDocuments$ = new BehaviorSubject<boolean>(false);\n public readonly canAssignAnyDocuments$ = new BehaviorSubject<boolean>(false);\n\n public readonly candidateUsers$: Observable<CandidateUser[]> = this.documentIds$.pipe(\n switchMap(documentIds => {\n if (!documentIds?.length) {\n this.permittedDocumentIds$.next([]);\n this.canAssignAllDocuments$.next(false);\n this.canAssignAnyDocuments$.next(false);\n return of([] as CandidateUser[]);\n }\n\n return forkJoin(\n documentIds.map(documentId =>\n this.permissionService\n .requestPermission(CAN_ASSIGN_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: documentId,\n })\n .pipe(take(1))\n )\n ).pipe(\n take(1),\n map(permissions => {\n const canAssignAll = permissions.every(p => p);\n const canAssignAny = permissions.some(p => p);\n const permittedDocumentIds = documentIds.filter((_, index) => permissions[index]);\n\n this.canAssignAllDocuments$.next(canAssignAll);\n this.canAssignAnyDocuments$.next(canAssignAny);\n this.permittedDocumentIds$.next(permittedDocumentIds);\n\n return {canAssignAny, permittedDocumentIds};\n }),\n switchMap(({canAssignAny, permittedDocumentIds}) => {\n if (canAssignAny) {\n return this.bulkAssignService.loadCandidateUsers(permittedDocumentIds).pipe(\n take(1),\n catchError(error => {\n console.error(error);\n return of([] as CandidateUser[]);\n })\n );\n }\n return of([] as CandidateUser[]);\n }),\n catchError(() => {\n this.permittedDocumentIds$.next([]);\n this.canAssignAllDocuments$.next(false);\n this.canAssignAnyDocuments$.next(false);\n return of([] as CandidateUser[]);\n })\n );\n })\n );\n\n public candidateUserItems$: Observable<ListItem[]> = this.candidateUsers$.pipe(\n map((candidateUsers: CandidateUser[]) =>\n candidateUsers.map((candidateUser: CandidateUser) => ({\n id: candidateUser.id,\n content: `${candidateUser.firstName} ${candidateUser.lastName}`,\n selected: this.formGroup.get('assignee')?.value?.id === candidateUser.id,\n }))\n )\n );\n\n public readonly teamItems$: Observable<ListItem[]> = this.teamsApiService.getTeams({size: 1000}).pipe(\n map(page =>\n page.content.map(team => ({\n id: team.key,\n content: team.title,\n selected: this.formGroup.get('team')?.value?.id === team.key,\n }))\n ),\n catchError(() => of([] as ListItem[]))\n );\n\n public formGroup: FormGroup = this.fb.group({\n assignee: this.fb.control(null),\n team: this.fb.control(null),\n });\n\n public get isFormValid(): boolean {\n return !!this.formGroup.get('assignee')?.value || !!this.formGroup.get('team')?.value;\n }\n\n constructor(\n private bulkAssignService: CaseBulkAssignService,\n private fb: FormBuilder,\n private permissionService: PermissionService,\n private teamsApiService: TeamsApiService\n ) {}\n\n public closeModal(confirm?: boolean): void {\n const assignee: ListItem | null = this.formGroup.get('assignee')?.value ?? null;\n const team: ListItem | null = this.formGroup.get('team')?.value ?? null;\n\n if (!confirm || (!assignee?.id && !team?.id)) {\n this.closeEvent.emit(null);\n this.formGroup.reset();\n return;\n }\n\n this.permittedDocumentIds$.pipe(take(1)).subscribe((permittedDocumentIds: string[]) => {\n this.closeEvent.emit({\n ids: permittedDocumentIds,\n assigneeId: assignee?.id ?? undefined,\n assignedTeamKey: team?.id ?? undefined,\n });\n this.formGroup.reset();\n });\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'case.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container\n *ngIf=\"{\n candidateUserItems: candidateUserItems$ | async,\n teamItems: teamItems$ | async,\n canAssignAllDocuments: canAssignAllDocuments$ | async,\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <cds-inline-notification\n *ngIf=\"!obs.canAssignAnyDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignAnyWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-inline-notification\n *ngIf=\"obs.canAssignAnyDocuments && !obs.canAssignAllDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignSomeWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <form *ngIf=\"obs.canAssignAnyDocuments && obs.candidateUserItems\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"obs.candidateUserItems\"\n [label]=\"'case.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n *ngIf=\"obs.teamItems?.length\"\n formControlName=\"team\"\n [dropUp]=\"false\"\n [items]=\"obs.teamItems\"\n [label]=\"'case.bulkAssign.modal.selectTeamLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container\n *ngIf=\"{\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isFormValid || !obs.canAssignAnyDocuments\"\n (click)=\"closeModal(true)\"\n >\n {{ 'case.bulkAssign.modal.confirm' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</cds-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, EventEmitter, Input, Output, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n IconModule,\n IconService,\n LayerModule,\n LoadingModule,\n TagModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailModalComponent,\n TaskModule,\n TaskUpdateSseEvent,\n} from '@valtimo/task';\nimport {SseService} from '@valtimo/sse';\nimport {DocumentService} from '@valtimo/document';\nimport {ActivatedRoute} from '@angular/router';\nimport {PermissionService} from '@valtimo/access-control';\nimport moment from 'moment';\nimport {CaseDetailLayoutService} from '../../services';\nimport {ProcessLinkService, TaskWithProcessLink} from '@valtimo/process-link';\nimport {UserFilled20, Group20} from '@carbon/icons';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-case-detail-task-list',\n templateUrl: './case-detail-task-list.component.html',\n styleUrls: ['./case-detail-task-list.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NgbTooltipModule,\n TranslateModule,\n WidgetModule,\n LoadingModule,\n TaskModule,\n TilesModule,\n LayerModule,\n TagModule,\n CarbonListModule,\n IconModule,\n ],\n})\nexport class CaseDetailTaskListComponent {\n @ViewChild('taskDetail') private readonly _taskDetailModal: TaskDetailModalComponent;\n\n @Input() public set openTaskAndProcessLinkInModal(value: TaskWithProcessLink) {\n if (value) this._taskDetailModal.openTaskAndProcessLinkDetails(value);\n }\n\n @Output() public readonly taskClickEvent = new EventEmitter<TaskWithProcessLink>();\n @Output() public readonly formSubmitEvent = new EventEmitter();\n\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n private readonly _taskUpdateSseEvent$: Observable<TaskUpdateSseEvent | null> = combineLatest([\n this.sseService.getSseEventObservable<TaskUpdateSseEvent>('TASK_UPDATE'),\n this._documentId$,\n ]).pipe(\n filter(([event, documentId]) => event.documentId === documentId),\n map(([event]) => event),\n startWith(null)\n );\n\n public readonly processInstanceTasks$: Observable<{\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n }> = combineLatest([this.caseDetailLayoutService.refreshTasks$, this._taskUpdateSseEvent$]).pipe(\n switchMap(() => this._documentId$),\n switchMap(documentId => this.documentService.findProcessDocumentInstances(documentId)),\n switchMap(processDocumentInstances =>\n combineLatest([\n ...processDocumentInstances.map(processDocumentInstance =>\n this.processLinkService.getTasksWithProcessLinks(\n processDocumentInstance.id.processInstanceId\n )\n ),\n ])\n ),\n map(res => res.reduce((acc, curr) => [...acc, ...curr], [])),\n switchMap(tasksWithProcessLinks =>\n combineLatest([\n of(tasksWithProcessLinks),\n ...(tasksWithProcessLinks || []).map(taskWithProcessLink =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: taskWithProcessLink.task.id,\n })\n ),\n ])\n ),\n map(res => {\n const tasksWithProcessLinks = res[0] || [];\n const permissions = res?.filter((_, index) => index !== 0) as boolean[];\n const mappedTasksWithProcessLinks = this.mapTasksWithProcessLinks(\n tasksWithProcessLinks,\n permissions\n );\n const uniqueTasksWithProcessLinks = this.getUniqueTasksWithProcessLinks(\n mappedTasksWithProcessLinks\n );\n\n return this.getSortedTasksWithProcessLinks(uniqueTasksWithProcessLinks);\n }),\n map(tasksWithProcessLinks => this.sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks)),\n tap(() => this.loadingTasks$.next(false))\n );\n\n public readonly formSize$ = this.caseDetailLayoutService.formDisplaySize$;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly route: ActivatedRoute,\n private readonly permissionService: PermissionService,\n private readonly sseService: SseService,\n private readonly caseDetailLayoutService: CaseDetailLayoutService,\n private readonly processLinkService: ProcessLinkService\n ) {\n this.iconService.registerAll([UserFilled20, Group20]);\n }\n\n public getAssigneeTooltip(task: TaskWithProcessLink['task']): string {\n const name = task.valtimoAssignee?.fullName;\n const team = task.assignedTeam?.title;\n if (name && team) return `${name} & ${team}`;\n return name || team || '';\n }\n\n public rowTaskClick(tasWithProcessLink: TaskWithProcessLink): void {\n if (tasWithProcessLink.task.isLocked) return;\n\n this.taskClickEvent.emit(tasWithProcessLink);\n }\n\n public onFormSubmit(): void {\n this.formSubmitEvent.emit();\n this.refresh();\n }\n\n public refresh(): void {\n this.caseDetailLayoutService.refreshTasks();\n }\n\n private mapTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[],\n permissions: boolean[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.map((taskWithProcessLink, index) => ({\n ...taskWithProcessLink,\n task: {\n ...taskWithProcessLink.task,\n createdUnix: moment(taskWithProcessLink.task.created).unix(),\n created: moment(taskWithProcessLink.task.created).format('DD MMM YYYY HH:mm'),\n ...(taskWithProcessLink.task.due && {dueUnix: moment(taskWithProcessLink.task.due).unix()}),\n isLocked: !permissions[index],\n },\n }));\n }\n\n private getUniqueTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.reduce((acc, curr) => {\n if (!acc.find(taskWithProcessLink => taskWithProcessLink.task.id === curr.task.id)) {\n return [...acc, curr];\n }\n return acc;\n }, [] as TaskWithProcessLink[]);\n }\n\n private getSortedTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.sort((t1, t2) => {\n // high priority tasks on top\n if (t2.task.priority !== t1.task.priority) {\n return t2.task.priority - t1.task.priority;\n }\n\n // task with approaching due date on top\n const due1 = t1?.task.dueUnix || Number.MAX_VALUE;\n const due2 = t2?.task.dueUnix || Number.MAX_VALUE;\n if (due1 !== due2) {\n return due1 - due2;\n }\n\n // new task on top\n const createdCompare = t2.task.createdUnix / 5000 - t1.task.createdUnix / 5000;\n if (createdCompare !== 0) {\n return createdCompare;\n }\n\n // task with approximately the same age, are sorted by name\n return t1.task.name.localeCompare(t2.task.name);\n });\n }\n\n private sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks: TaskWithProcessLink[]): {\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n } {\n return tasksWithProcessLinks.reduce(\n (acc, curr) =>\n !curr.task.isLocked\n ? {...acc, myTasks: [...acc.myTasks, curr]}\n : {...acc, otherTasks: [...acc.otherTasks, curr]},\n {myTasks: [] as TaskWithProcessLink[], otherTasks: [] as TaskWithProcessLink[]}\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 class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n (dueDateChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignedTeam || !!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"getAssigneeTooltip(taskWithProcessLink.task) || ('summary.taskIsAssigned' | translate)\"\n [type]=\"'cool-gray'\"\n >\n @if (!!taskWithProcessLink.task.assignedTeam) {\n <svg cdsIcon=\"group\" size=\"20\"></svg>\n } @else {\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n }\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {AssignmentChangeEvent, AssignmentComponent, PageHeaderService} from '@valtimo/components';\nimport {ConfigService, NamedUser, TeamResponseDto} from '@valtimo/shared';\nimport {ProcessInstanceTask} from '@valtimo/process';\nimport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n IntermediateSubmission,\n SetTaskDueDateComponent,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n TaskService,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, shareReplay, switchMap, take} from 'rxjs';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\n\n@Component({\n selector: 'valtimo-case-detail-task-detail',\n templateUrl: './case-detail-task-detail.component.html',\n styleUrl: './case-detail-task-detail.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n ButtonModule,\n IconModule,\n AssignmentComponent,\n SetTaskDueDateComponent,\n ],\n})\nexport class CaseDetailsTaskDetailComponent implements OnDestroy {\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.taskAndProcessLink$.next(value);\n this.task$.next(value.task);\n this.pageValue.set({\n title: value?.task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.task?.created}`,\n });\n }\n @Output() public readonly closeEvent = new EventEmitter();\n @Output() public readonly assignmentOfTaskChanged = new EventEmitter();\n @Output() public readonly dueDateChanged = new EventEmitter();\n @Output() public readonly activeChange = new EventEmitter<boolean>();\n @Output() public readonly formSubmit = new EventEmitter();\n\n public readonly compactMode$: Observable<boolean> = this.pageHeaderService.compactMode$;\n public readonly taskAndProcessLink$ = new BehaviorSubject<TaskWithProcessLink | null>(null);\n public readonly task$ = new BehaviorSubject<ProcessInstanceTask | null>(null);\n public readonly canAssignUserToTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly canModifyTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_MODIFY_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly intermediateSaveValue$ = new BehaviorSubject<IntermediateSubmission | null>(null);\n public readonly pageValue = signal<{title: string; subtitle: string}>({\n title: '',\n subtitle: '',\n });\n public readonly candidateUsers$: Observable<NamedUser[]> = combineLatest([\n this.task$.pipe(filter(task => !!task)),\n this.canAssignUserToTask$,\n ]).pipe(\n switchMap(([task, canAssign]) => (canAssign ? this.taskService.getCandidateUsers(task.id) : of([]))),\n shareReplay(1)\n );\n\n public readonly candidateTeams$: Observable<TeamResponseDto[]> = combineLatest([\n this.task$.pipe(filter(task => !!task)),\n this.canAssignUserToTask$,\n ]).pipe(\n switchMap(([task, canAssign]) =>\n canAssign ? this.taskService.getCandidateTeams(task.id).pipe(map(page => page.content)) : of([])\n ),\n shareReplay(1)\n );\n\n public readonly enableIntermediateSave$ =\n this.configService.getFeatureToggleObservable('enableIntermediateSave');\n\n constructor(\n private readonly configService: ConfigService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService,\n private readonly taskService: TaskService\n ) {}\n\n public ngOnDestroy(): void {\n this.closeEvent.emit();\n }\n\n public onClose(): void {\n this.closeEvent.emit();\n this.onActiveChangeEvent(false);\n }\n\n public onCurrentIntermediateSaveEvent(value: IntermediateSubmission | null): void {\n this.intermediateSaveValue$.next(value);\n this.onActiveChangeEvent(false);\n }\n\n public onActiveChangeEvent(activeChange: boolean): void {\n this.activeChange.emit(activeChange);\n }\n\n public onAssignmentChanged(event: AssignmentChangeEvent): void {\n this.task$.pipe(take(1)).subscribe(task => {\n if (!task) return;\n\n const assignRequest: {assignee?: string; assignedTeamKey?: string} = {};\n if (event.userId !== undefined) assignRequest.assignee = event.userId ?? '';\n if (event.teamKey !== undefined) assignRequest.assignedTeamKey = event.teamKey ?? '';\n\n this.taskService\n .assignTask(task.id, assignRequest)\n .pipe(\n switchMap(() => this.taskService.getTask(task.id)),\n take(1)\n )\n .subscribe(response => {\n this.refreshTask(response);\n this.assignmentOfTaskChanged.emit();\n });\n });\n }\n\n public onUnassigned(): void {\n this.task$.pipe(take(1)).subscribe(task => {\n if (!task) return;\n this.taskService\n .unassignTask(task.id)\n .pipe(\n switchMap(() => this.taskService.getTask(task.id)),\n take(1)\n )\n .subscribe(response => {\n this.refreshTask(response);\n this.assignmentOfTaskChanged.emit();\n });\n });\n }\n\n private refreshTask(response: any): void {\n const currentTask = this.task$.getValue();\n if (!currentTask) return;\n\n const fetchedTask = response.task as Partial<ProcessInstanceTask>;\n if (!fetchedTask) return;\n\n const mergedTask: ProcessInstanceTask = {...currentTask};\n for (const [key, value] of Object.entries(fetchedTask)) {\n if (value !== undefined) {\n (mergedTask as any)[key] = value;\n }\n }\n this.task$.next(mergedTask);\n }\n\n public onDueDateChanged(): void {\n this.dueDateChanged.emit();\n }\n\n public onFormSubmitEvent(): void {\n this.formSubmit.emit();\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 canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-case-detail-task-detail\"\n>\n <section class=\"valtimo-case-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave$ | async\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-case-detail-task-detail__body\"\n [class.valtimo-case-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-case-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assignment\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"onDueDateChanged()\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\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 {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CaseHeaderWidgetApiService} from '../../services';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CAN_VIEW_CASE_PERMISSION, CASE_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {WidgetFieldComponent} from '@valtimo/layout';\nimport {InputModule, LayerModule, LoadingModule} from 'carbon-components-angular';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {DocumentUpdatedSseEvent} from '../../models';\nimport {SseService} from '@valtimo/sse';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-detail-header-widget',\n templateUrl: './case-detail-header-widget.component.html',\n styleUrls: ['./case-detail-header-widget.component.scss'],\n imports: [CommonModule, WidgetFieldComponent, LoadingModule, LayerModule, InputModule],\n})\nexport class CaseDetailHeaderWidgetComponent implements OnInit, OnDestroy {\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId),\n distinctUntilChanged()\n );\n\n public readonly canViewCaseHeaderWidget$ = this._documentId$.pipe(\n switchMap(documentId =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: documentId,\n })\n )\n );\n\n private readonly _fetchData$ = new Subject<null>();\n\n public readonly headerWidget$ = this._documentId$.pipe(\n switchMap(documentId => this.caseHeaderWidgetApiService.getHeaderWidget(documentId)),\n tap(widget => {\n if (!!widget) {\n this._fetchData$.next(null);\n }\n })\n );\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map(theme => {\n const isLight = theme === CurrentCarbonTheme.WHITE || theme === CurrentCarbonTheme.G10;\n return isLight ? CARBON_THEME.G10 : CARBON_THEME.G90;\n })\n );\n\n public readonly headerWidgetData$ = this._fetchData$.pipe(\n switchMap(() => this._documentId$),\n switchMap(documentId => this.caseHeaderWidgetApiService.getHeaderWidgetData(documentId))\n );\n\n private readonly _documentUpdates$ = combineLatest([\n this.sseService.getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED'),\n this._documentId$,\n ]).pipe(\n filter(([event, documentId]) => event.documentId === documentId),\n map(([event]) => event),\n startWith<DocumentUpdatedSseEvent | null>(null)\n );\n\n private readonly _subscriptions = new Subscription();\n\n public readonly $noVisibleFields = signal<boolean>(false);\n\n constructor(\n private readonly caseHeaderWidgetApiService: CaseHeaderWidgetApiService,\n private readonly route: ActivatedRoute,\n private readonly permissionService: PermissionService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly sseService: SseService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(this._documentUpdates$.subscribe(() => this._fetchData$.next(null)));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onNoVisibleFields(noVisibleFields: boolean): void {\n this.$noVisibleFields.set(noVisibleFields);\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 (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n class=\"valtimo-widget-field--compact\"\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\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 {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {FormioBeforeSubmit, FormioForm} from '@formio/angular';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {StartableItem} from '@valtimo/document';\nimport {ProcessService, StartProcessLinkType} from '@valtimo/process';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n ProcessLinkService,\n} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, Subscription, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-supporting-process-start-modal',\n templateUrl: './case-supporting-process-start-modal.component.html',\n styleUrls: ['./case-supporting-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseSupportingProcessStartModalComponent implements OnDestroy {\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n\n @Input() isAdmin: boolean;\n @Output() formSubmit = new EventEmitter();\n\n public readonly startProcessLinkType$ = new BehaviorSubject<StartProcessLinkType | null>(null);\n public readonly processDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly processName$ = new BehaviorSubject<string>('');\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(undefined);\n public readonly formioSubmission$ = new BehaviorSubject<FormioSubmission>(undefined);\n public readonly processLinkId$ = new BehaviorSubject<string>('');\n public readonly options$ = new BehaviorSubject<ValtimoFormioOptions>(undefined);\n public readonly submission$ = new BehaviorSubject<object>(undefined);\n public readonly processDefinitionId$ = new BehaviorSubject<string>(undefined);\n public readonly formFlowInstanceId$ = new BehaviorSubject<string>(undefined);\n public readonly documentId$ = new BehaviorSubject<string>(undefined);\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly isLoading$ = new BehaviorSubject<boolean>(true);\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n private _caseDefinitionVersionTag: string;\n private _buildingBlockDefinitionKey: string | null = null;\n private _buildingBlockDefinitionVersionTag: string | null = null;\n\n public readonly closeModalEvent = new EventEmitter();\n\n private _formViewModelSubscription!: Subscription;\n\n constructor(\n private readonly router: Router,\n private readonly processService: ProcessService,\n private readonly processLinkService: ProcessLinkService,\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 ) {\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n public ngOnDestroy(): void {\n this._formViewModelSubscription?.unsubscribe();\n }\n\n private loadProcessLink(): void {\n this.startProcessLinkType$.next(null);\n\n combineLatest([this.processDefinitionId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processDefinitionId, documentId]) =>\n this.processService.getProcessDefinitionStartProcessLink(\n processDefinitionId,\n documentId,\n null\n )\n )\n )\n .subscribe(startProcessResult => {\n this.isLoading$.next(false);\n\n if (startProcessResult) {\n this.startProcessLinkType$.next(startProcessResult.type);\n\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition$.next(startProcessResult.properties.prefilledForm);\n this.processLinkId$.next(startProcessResult.processLinkId);\n break;\n case 'form-flow':\n this.formFlowInstanceId$.next(startProcessResult.properties.formFlowInstanceId);\n break;\n case 'form-view-model':\n this.formDefinition$.next(startProcessResult.properties.formDefinition);\n this.setFormViewModelComponent(startProcessResult.properties.formName);\n this.openCdsModal();\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.openCdsModal();\n break;\n }\n this.openCdsModal();\n }\n });\n }\n\n public openModalForStartableItem(\n item: StartableItem,\n documentId: string,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): void {\n this.isLoading$.next(true);\n this.documentId$.next(documentId);\n this.caseDefinitionKey$.next(caseDefinitionKey);\n this._caseDefinitionVersionTag = caseDefinitionVersionTag;\n this.processDefinitionId$.next(item.processDefinitionId);\n this.processName$.next(item.name || item.key);\n\n if (item.type === 'BUILDING_BLOCK') {\n this._buildingBlockDefinitionKey = item.key;\n this._buildingBlockDefinitionVersionTag = item.versionTag;\n } else {\n this._buildingBlockDefinitionKey = null;\n this._buildingBlockDefinitionVersionTag = null;\n this.processDefinitionKey$.next(item.key);\n }\n\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n options.setHooks(formioBeforeSubmit);\n\n this.options$.next(options);\n\n this.loadProcessLink();\n this.openCdsModal();\n }\n\n public onSubmit(submission: FormioSubmission): void {\n this.formioSubmission$.next(submission);\n\n if (this.processLinkId$.getValue()) {\n combineLatest([this.processLinkId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processLinkId, documentId]) =>\n this.processLinkService.submitForm(processLinkId, submission.data, documentId)\n )\n )\n .subscribe({\n next: () => {\n this.formSubmitted();\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n }\n\n public formSubmitted(): void {\n this.closeCdsModal();\n this.formSubmit.emit();\n this.isLoading$.next(true);\n this.formDefinition$.next(null);\n }\n\n public gotoFormLinkScreen(): void {\n this.closeCdsModal();\n\n if (this._buildingBlockDefinitionKey && this._buildingBlockDefinitionVersionTag) {\n this.router.navigate([\n `/building-block-management/building-block/${this._buildingBlockDefinitionKey}/version/${this._buildingBlockDefinitionVersionTag}/process-definition/${this.processDefinitionId$.getValue()}`,\n ]);\n } else {\n this.router.navigate([\n `/case-management/case/${this.caseDefinitionKey$.getValue()}/version/${this._caseDefinitionVersionTag}/processes/${this.processDefinitionKey$.getValue()}`,\n ]);\n }\n }\n\n public onCloseSelect(): void {\n this.closeCdsModal();\n }\n\n private setFormViewModelComponent(formName: string): void {\n if (!this.formViewModel.component) return;\n\n this.formViewModelDynamicContainer.clear();\n\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n\n combineLatest([\n this.formDefinition$,\n this.processDefinitionKey$,\n this.caseDefinitionKey$,\n this.options$,\n this.documentId$,\n ])\n .pipe(take(1))\n .subscribe(([form, processDefinitionKey, caseDefinitionKey, options, documentId]) => {\n formViewModelComponent.instance.formName = formName;\n formViewModelComponent.instance.form = form;\n formViewModelComponent.instance.processDefinitionKey = processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = caseDefinitionKey;\n formViewModelComponent.instance.options = options;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.documentId = documentId;\n });\n\n formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {\n this.formSubmitted();\n });\n\n this._formViewModelSubscription?.unsubscribe();\n this._formViewModelSubscription = this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n });\n\n this.isLoading$.next(true);\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n combineLatest([this.processDefinitionKey$, this.caseDefinitionKey$])\n .pipe(take(1))\n .subscribe(([processDefinitionKey, caseDefinitionKey]) => {\n renderedComponent.instance.processDefinitionKey = processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = caseDefinitionKey;\n });\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.formSubmitted();\n });\n });\n }\n\n private closeCdsModal(): void {\n this.modalOpen$.next(false);\n }\n\n private openCdsModal(): void {\n this.modalOpen$.next(true);\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 [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\" [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-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 {Pipe, PipeTransform} from '@angular/core';\nimport {map, Observable, of} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TabImpl} from '../../models';\n\n@Pipe({\n standalone: false,\n name: 'tabTranslate',\n})\nexport class TabTranslatePipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n transform(tab: TabImpl): Observable<string> {\n const translationId = 'case.tabs.' + tab.name;\n\n return tab.title\n ? of(tab.title)\n : this.translateService\n .stream(translationId)\n .pipe(map(translation => (translationId !== translation ? translation : tab.name)));\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 {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n Inject,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationStart, ParamMap, Params, Router} from '@angular/router';\nimport {ChevronDown16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n AssignmentChangeEvent,\n BreadcrumbService,\n CdsThemeService,\n CurrentCarbonTheme,\n ObserveSizeDirective,\n PageHeaderService,\n PageTitleService,\n} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {\n CaseStatusService,\n CaseTag,\n CaseTagsUtils,\n Document as ValtimoDocument,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n StartableItem,\n} from '@valtimo/document';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\nimport {UserProviderService} from '@valtimo/security';\nimport {IntermediateSubmission} from '@valtimo/task';\nimport {IconService} from 'carbon-components-angular';\nimport {KeycloakService} from 'keycloak-angular';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE,\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE,\n CASE_DETAIL_GUTTER_SIZE,\n CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\n} from '../../constants';\nimport {TabImpl, TabLoaderImpl} from '../../models';\nimport {\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n} from '../../permissions';\nimport {CaseDetailLayoutService, CaseService, CaseTabService} from '../../services';\nimport {CaseSupportingProcessStartModalComponent} from '../case-supporting-process-start-modal/case-supporting-process-start-modal.component';\nimport {WidgetsService} from './tab/widgets/widgets.service';\n\n@Component({\n standalone: false,\n templateUrl: './case-detail.component.html',\n styleUrls: ['./case-detail.component.scss'],\n providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective],\n})\nexport class CaseDetailComponent implements AfterViewInit, OnDestroy {\n @ViewChild('supportingProcessStartModal')\n supportingProcessStart: CaseSupportingProcessStartModalComponent;\n\n @ViewChild('tabContainer', {read: ViewContainerRef})\n viewContainerRef: ViewContainerRef;\n\n @ViewChild('tabContentContainer')\n private readonly _tabContentContainer!: ElementRef<HTMLDivElement>;\n\n public document: ValtimoDocument | null = null;\n public caseDefinitionKey: string;\n public caseDefinitionVersionTag: string;\n public documentDefinitionTitle: string;\n public documentId: string;\n public processDefinitionListFields: Array<any> = [];\n public startableItems: (StartableItem & {displayName?: string})[] = [];\n public tabLoader: TabLoaderImpl | null = null;\n\n public readonly assigneeId$ = new BehaviorSubject<string>('');\n public readonly currentIntermediateSave$ = new BehaviorSubject<IntermediateSubmission | null>(\n null\n );\n public readonly isAdmin$: Observable<boolean> = this.userProviderService\n .getUserSubject()\n .pipe(map(userIdentity => userIdentity?.roles?.includes('ROLE_ADMIN')));\n\n public readonly taskAndProcessLinkOpenedInPanel$ =\n this.caseDetailLayoutService.taskAndProcessLinkOpenedInPanel$;\n\n private readonly _caseStatusKey$ = new BehaviorSubject<string | null | 'NOT_AVAILABLE'>(null);\n\n public readonly dropdownWidth$ = new BehaviorSubject<number>(\n CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n );\n public readonly caseStatusKey$: Observable<string | 'NOT_AVAILABLE'> = this._caseStatusKey$.pipe(\n filter(key => !!key)\n );\n\n public readonly _caseTags$ = new BehaviorSubject<CaseTag[] | null>(null);\n\n public readonly showDeleteModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n public readonly canView$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly document$: Observable<ValtimoDocument | null> = combineLatest([\n this.caseService.refreshDocument$,\n this.canView$,\n ]).pipe(\n filter(([_, canView]) => canView),\n switchMap(() => this.route.params),\n map((params: Params) => params?.documentId),\n switchMap((documentId: string) =>\n documentId ? this.documentService.getDocument(this.documentId) : of(null)\n ),\n tap((document: ValtimoDocument | null) => {\n if (document) {\n this.assigneeId$.next(document.assigneeId);\n this.document = document;\n this._caseStatusKey$.next(document?.internalStatus || 'NOT_AVAILABLE');\n this._caseTags$.next(document?.caseTags || null);\n }\n })\n );\n\n public readonly caseDefinitionKey$: Observable<string> = this.route.params.pipe(\n map(params => params.caseDefinitionKey || '')\n );\n\n public readonly caseStatus$: Observable<InternalCaseStatus | undefined> =\n this.caseDefinitionKey$.pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey =>\n combineLatest([\n this.caseStatusService.getInternalCaseStatuses(caseDefinitionKey),\n this.caseStatusKey$,\n ])\n ),\n map(\n ([statuses, key]) => key !== 'NOT_AVAILABLE' && statuses.find(status => status?.key === key)\n ),\n map(\n status =>\n status && {\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }\n )\n );\n\n public readonly caseTags$: Observable<CaseTag[] | undefined> = this.caseDefinitionKey$.pipe(\n filter(documentDefinitionName => !!documentDefinitionName),\n switchMap(documentDefinitionName => this._caseTags$),\n map(\n tag =>\n tag &&\n tag.map(caseTag => ({\n ...caseTag,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),\n }))\n )\n );\n\n public readonly hasCaseTags$: Observable<boolean> = this._caseTags$.pipe(\n map(caseTags => Array.isArray(caseTags) && caseTags.length > 0),\n tap((hasCaseTags: boolean) => this.caseDetailLayoutService.setHasCaseTags(hasCaseTags))\n );\n\n public readonly userId$: Observable<string | undefined> = of(\n this.keyCloakService.isLoggedIn()\n ).pipe(\n switchMap(() => this.keyCloakService.loadUserProfile()),\n map(profile => profile?.id)\n );\n\n public readonly isAssigning$ = new BehaviorSubject<boolean>(false);\n public readonly isAssignedToCurrentUser$: Observable<boolean> = combineLatest([\n this.assigneeId$,\n this.userId$,\n ]).pipe(\n map(([assigneeId, userId]) => !!assigneeId && !!userId && assigneeId === userId),\n startWith(true)\n );\n\n public readonly canHaveAssignee$: Observable<boolean> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey => this.documentService.getCaseSettings(caseDefinitionKey)),\n map(caseSettings => caseSettings?.canHaveAssignee)\n );\n\n public readonly canAssignLoaded$ = new BehaviorSubject<boolean>(false);\n public readonly canAssign$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_ASSIGN_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n ),\n tap(() => {\n this.canAssignLoaded$.next(true);\n })\n );\n\n public readonly candidateUsers$ = combineLatest([\n this.caseService.refreshDocument$,\n this.canAssign$,\n ]).pipe(\n switchMap(([_, canAssign]) =>\n canAssign ? this.documentService.getCandidateUsers(this.documentId) : of([])\n ),\n shareReplay(1)\n );\n\n public readonly candidateTeams$ = combineLatest([\n this.caseService.refreshDocument$,\n this.canAssign$,\n ]).pipe(\n switchMap(([_, canAssign]) =>\n canAssign\n ? this.documentService.getCandidateTeams(this.documentId).pipe(map(page => page.content))\n : of([])\n ),\n shareReplay(1)\n );\n\n public readonly canClaim$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_CLAIM_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly isDeleting$ = new BehaviorSubject<boolean>(false);\n public readonly canDelete$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_DELETE_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly loadingTabs$ = new BehaviorSubject<boolean>(true);\n public readonly noTabsConfigured$ = new BehaviorSubject<boolean>(false);\n public readonly showNoAccess$ = new BehaviorSubject<boolean>(false);\n public activeTab$: Observable<TabImpl>;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly $tabHorizontalOverflowDisabled =\n this.caseTabService.$tabHorizontalOverflowDisabled;\n public readonly smallTitle$ = this.pageHeaderService.smallTitle$;\n\n public readonly showTaskList$ = this.caseTabService.showTaskList$;\n\n private readonly _activeTabName$ = new BehaviorSubject<string | null>(null);\n public get activeTabName$(): Observable<string | null> {\n return combineLatest([this.route.paramMap, this._activeTabName$]).pipe(\n map(([paramMap, activeTabName]) =>\n !activeTabName ? (paramMap.get('tab') ?? null) : activeTabName\n )\n );\n }\n\n public readonly CASE_DETAIL_GUTTER_SIZE = CASE_DETAIL_GUTTER_SIZE;\n\n public readonly caseDetailLayout$ = this.caseDetailLayoutService.caseDetailLayout$;\n\n public readonly openTaskAndProcessLinkInModal$ = new Subject<TaskWithProcessLink>();\n\n public readonly isDarkMode$ = this.cdsThemeService.currentTheme$.pipe(\n map(currentTheme => currentTheme === CurrentCarbonTheme.G90)\n );\n\n public readonly tabContentContainerMaxHeight$ =\n this.caseDetailLayoutService.tabContentContainerMaxHeight$;\n\n private _snapshot: ParamMap;\n private _initialTabName: string;\n private _activeChange = false;\n private _oldTabName: string;\n private _pendingTab: TabImpl;\n private _observer!: ResizeObserver;\n private _tabsInit = false;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly caseStatusService: CaseStatusService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly documentService: DocumentService,\n private readonly caseDetailLayoutService: CaseDetailLayoutService,\n private readonly caseService: CaseService,\n private readonly caseTabService: CaseTabService,\n private readonly iconService: IconService,\n private readonly keyCloakService: KeycloakService,\n private readonly logger: NGXLogger,\n private readonly notificationService: GlobalNotificationService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly pageTitleService: PageTitleService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService,\n private readonly renderer: Renderer2,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly widgetsService: WidgetsService,\n private readonly userProviderService: UserProviderService,\n @Inject(DOCUMENT) private readonly htmlDocument: Document\n ) {\n this._snapshot = this.route.snapshot.paramMap;\n this.caseDefinitionKey = this._snapshot.get('caseDefinitionKey') || '';\n this.documentId = this._snapshot.get('documentId') || '';\n this.widgetsService.documentId = this.documentId;\n }\n\n public ngAfterViewInit(): void {\n this.initTabLoader();\n this.initBreadcrumb();\n this.openWidthObserver();\n this.pageTitleService.disableReset();\n this.iconService.registerAll([ChevronDown16]);\n this.setDocumentStyle();\n this.enableResetOnBackNavigation();\n this.openWidgetProcessSubscription();\n this.openSmallTitleSubscription();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n this.pageTitleService.enableReset();\n this.removeDocumentStyle();\n this._subscriptions.unsubscribe();\n this.pageHeaderService.disableSmallTitle();\n }\n\n public getAllAssociatedProcessDefinitions(): void {\n this._subscriptions.add(\n combineLatest([\n this.documentService.getStartableItems({caseDocumentId: this.documentId}),\n this.translateService.stream('key'),\n ]).subscribe(([startableItems]) => {\n this.startableItems = this.mapStartableItems(startableItems);\n this.setProcessDropdownWidth();\n\n this.processDefinitionListFields = [\n {\n key: 'processName',\n label: 'Proces',\n },\n ];\n })\n );\n }\n\n public startItem(item: StartableItem): void {\n this.supportingProcessStart.openModalForStartableItem(\n item,\n this.documentId,\n this.caseDefinitionKey,\n this.caseDefinitionVersionTag\n );\n }\n\n public openWidgetProcessSubscription(): void {\n this._subscriptions.add(\n this.widgetsService.startProcessEvent\n .pipe(\n switchMap(() => this.widgetsService.activeProcess$),\n filter((item): item is StartableItem => !!item)\n )\n .subscribe(item => {\n this.startItem(item);\n })\n );\n }\n\n public claimAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.assignHandlerToDocument(this.documentId, userId ?? '')\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.caseService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while assigning user to case');\n },\n });\n }\n\n public unassignAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.unassignHandlerFromDocument(this.documentId)\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.caseService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while unassigning user from case');\n },\n });\n }\n\n public deleteDocument(): void {\n this.showDeleteModal$.next(true);\n }\n\n public onConfirmDelete(): void {\n this.isDeleting$.next(true);\n this.documentService.deleteDocument(this.documentId).subscribe({\n next: (): void => {\n this.isDeleting$.next(false);\n this.showDeleteModal$.next(false);\n this.router.navigate([`/cases/${this.caseDefinitionKey}`]);\n },\n error: (): void => {\n this.isDeleting$.next(false);\n this.logger.debug('Something went wrong while deleting the case');\n },\n });\n }\n\n public onTaskClickEvent(taskProcessLinkResult: TaskWithProcessLink): void {\n if (!taskProcessLinkResult.processLinkActivityResult) {\n this.isAdmin$.pipe(take(1)).subscribe(isAdmin => {\n this.handleNoTaskProcessLink(isAdmin);\n });\n return;\n }\n\n const displayType =\n taskProcessLinkResult.processLinkActivityResult.properties.formDisplayType ||\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE;\n const size =\n taskProcessLinkResult.processLinkActivityResult.properties.formSize ||\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE;\n\n this.caseDetailLayoutService.setFormDisplaySize(size);\n this.caseDetailLayoutService.setFormDisplayType(displayType);\n\n if (displayType === 'panel') {\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(taskProcessLinkResult);\n } else {\n this.openTaskAndProcessLinkInModal$.next({...taskProcessLinkResult});\n }\n }\n\n public onTaskDetailsClose(): void {\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n public onActiveChangeEvent(event: boolean): void {\n this._activeChange = event;\n }\n\n public onTabSelected(tab: TabImpl, activeTab: TabImpl): void {\n if (!this.tabLoader) return;\n\n if (!this._tabsInit) {\n this._tabsInit = true;\n return;\n }\n\n this._oldTabName = activeTab.name;\n this._pendingTab = tab;\n this._activeTabName$.next(tab.name);\n\n // to do: re-introduce when pending changes is implemented again\n // this.pendingChanges =\n // tab.contentKey === 'summary' ? false : !tab.showTasks && this._activeChange;\n //\n // if (this.pendingChanges) {\n // this.tabLoader.replaceUrlState(tab);\n // return;\n // }\n\n if (!tab.showTasks) this.openTaskAndProcessLinkInModal$.next(null);\n this.tabLoader.load(tab);\n this.setDocumentStyle();\n }\n\n public onFormSubmitEvent(): void {\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n this.caseDetailLayoutService.refreshTasks();\n this.tabLoader?.refreshView();\n }\n\n public onDueDateChanged(): void {\n this.caseDetailLayoutService.refreshTasks();\n }\n\n public onMainContentHeaderHeightChange(height: number): void {\n this.caseDetailLayoutService.setMainContentHeaderHeight(height);\n }\n\n protected onConfirmRedirect(): void {\n if (!this.tabLoader || !this._pendingTab) return;\n this._activeChange = false;\n this._activeTabName$.next(this._pendingTab.name);\n this.tabLoader.load(this._pendingTab);\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n protected onCancelRedirect(): void {\n if (!this.tabLoader) return;\n this._activeTabName$.next(this._oldTabName);\n }\n\n private initBreadcrumb(): void {\n this.documentService.getDocumentDefinition(this.caseDefinitionKey).subscribe(definition => {\n this.documentDefinitionTitle = definition.schema.title;\n this.caseDefinitionVersionTag = definition.id.blueprintId.blueprintVersionTag;\n this.setBreadcrumb();\n });\n }\n\n private initTabLoader(): void {\n combineLatest([this.caseTabService.tabs$, this.canView$])\n .pipe(take(1))\n .subscribe(([tabs, canView]) => {\n if (canView) {\n if (tabs?.length > 0) {\n this._initialTabName = this._snapshot.get('tab') ?? '';\n this.tabLoader = new TabLoaderImpl(\n tabs,\n this.componentFactoryResolver,\n this.viewContainerRef,\n this.router,\n this.route\n );\n this.tabLoader.initial(this._initialTabName);\n this.caseTabService.setTabLoader(this.tabLoader);\n this.loadingTabs$.next(false);\n this.activeTab$ = this.tabLoader.activeTab$;\n } else {\n this.noTabsConfigured$.next(true);\n this.loadingTabs$.next(false);\n }\n\n this.getAllAssociatedProcessDefinitions();\n } else {\n this.showNoAccess$.next(true);\n this.loadingTabs$.next(false);\n }\n });\n }\n\n public assignmentOfDocumentChanged(): void {\n this.caseService.refresh();\n }\n\n public onAssignmentChanged(event: AssignmentChangeEvent): void {\n const assigneeId = event.userId !== undefined ? (event.userId ?? '') : undefined;\n const assignedTeamKey = event.teamKey !== undefined ? (event.teamKey ?? '') : undefined;\n\n this.documentService\n .assignHandlerToDocument(this.documentId, assigneeId, assignedTeamKey)\n .subscribe(() => {\n this.caseService.refresh();\n });\n }\n\n public onUnassigned(): void {\n this.documentService.unassignHandlerFromDocument(this.documentId).subscribe(() => {\n this.caseService.refresh();\n });\n }\n\n private getNestedProperty(obj: any, path: string, defaultValue: any): any {\n return (\n path.split('.').reduce((currentObject, key) => currentObject?.[key], obj) || defaultValue\n );\n }\n\n private setBreadcrumb(): void {\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/cases/${this.caseDefinitionKey}`],\n content: this.documentDefinitionTitle,\n href: `/cases/${this.caseDefinitionKey}`,\n });\n }\n\n private openWidthObserver(): void {\n if (!this._tabContentContainer.nativeElement) return;\n\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._tabContentContainer.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n this.caseDetailLayoutService.setTabContentContainerWidth(elementWidth);\n }\n }\n\n private setDocumentStyle(): void {\n this.renderer.addClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private removeDocumentStyle(): void {\n this.renderer.removeClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private enableResetOnBackNavigation(): void {\n this._subscriptions.add(\n this.router.events\n .pipe(\n filter(\n event => event instanceof NavigationStart && event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n this.pageTitleService.enableReset();\n })\n );\n }\n\n private handleNoTaskProcessLink(isAdmin: boolean): void {\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('case.noLinkedProcessNotification'),\n ...(isAdmin && {\n actions: [\n {\n text: this.translateService.instant('dossier.configure'),\n click: () => this.router.navigate(['/process-links']),\n },\n ],\n }),\n });\n }\n\n private mapStartableItems(items: StartableItem[]): (StartableItem & {displayName: string})[] {\n return items.map(item => ({\n ...item,\n displayName:\n this.translateService.instant(item.key) !== item.key\n ? this.translateService.instant(item.key)\n : item.name || item.key,\n }));\n }\n\n private setProcessDropdownWidth(): void {\n const longestName = this.startableItems.reduce(\n (acc, curr) =>\n !!curr.displayName && curr.displayName.length > acc ? curr.displayName.length : acc,\n 0\n );\n\n this.dropdownWidth$.next(\n longestName < 20\n ? CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n : longestName < 40\n ? CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.medium\n : CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.large\n );\n }\n\n private openSmallTitleSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.hasCaseTags$, this.compactMode$]).subscribe(\n ([hasCaseTags, compactMode]) => {\n if (!compactMode && hasCaseTags) {\n this.pageHeaderService.enableSmallTitle();\n } else {\n this.pageHeaderService.disableSmallTitle();\n }\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n (dueDateChanged)=\"onDueDateChanged()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-assignment\n *ngIf=\"canAssignLoaded$ | async\"\n mode=\"case\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [assignedTeamKey]=\"document.assignedTeamKey\"\n [assignedTeamTitle]=\"document.assignedTeamTitle\"\n [hasPermission]=\"canAssign\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <v-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (selected)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template\n #unassignButton\n let-canAssign=\"canAssign\"\n let-canHaveAssignee=\"canHaveAssignee\"\n let-assigneeId=\"assigneeId\"\n>\n <v-overflow-menu-option\n *ngIf=\"canHaveAssignee && canAssign\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <v-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (selected)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"startableItems.length === 0\"\n [ngbTooltip]=\"startableItems.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <v-overflow-menu\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n placement=\"bottom-end\"\n class=\"overflow-button assign-overflow\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <v-overflow-menu-trigger\n overflowTrigger\n [compact]=\"compactMode$ | async\"\n ></v-overflow-menu-trigger>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {\n canAssign: obs.canAssign,\n canHaveAssignee: obs.canHaveAssignee,\n assigneeId: obs.assigneeId,\n }\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </v-overflow-menu>\n\n <v-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [menuWidth]=\"dropdownWidth$ | async\"\n placement=\"bottom-end\"\n class=\"overflow-button case-detail-overflow\"\n >\n <ng-container overflowTrigger>\n <ng-container *ngTemplateOutlet=\"customStartTrigger\"></ng-container>\n </ng-container>\n <v-overflow-menu-option\n *ngFor=\"let startableItem of startableItems\"\n [attr.title]=\"startableItem.displayName\"\n (selected)=\"startItem(startableItem)\"\n >\n {{ startableItem.displayName }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </div>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {FormioBeforeSubmit, FormioForm} from '@formio/angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n FormioComponent,\n FormIoModule,\n FormioOptionsImpl,\n FormioSubmission,\n RenderInBodyComponent,\n ValtimoCdsModalDirective,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {ProcessDefinitionCaseDefinition} from '@valtimo/document';\nimport {ProcessService} from '@valtimo/process';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormSubmissionResult,\n ProcessLinkModule,\n ProcessLinkService,\n UrlResolverService,\n} from '@valtimo/process-link';\nimport {UserProviderService} from '@valtimo/security';\nimport {ConfigService, FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/shared';\nimport {DialogModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {CAN_VIEW_CASE_PERMISSION, CASE_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {CaseListService, StartModalService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-process-start-modal',\n templateUrl: './case-process-start-modal.component.html',\n styleUrls: ['./case-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n TranslateModule,\n ProcessLinkModule,\n FormIoModule,\n ValtimoCdsModalDirective,\n DialogModule,\n ModalModule,\n LayerModule,\n RenderInBodyComponent,\n ],\n})\nexport class CaseProcessStartModalComponent implements OnInit, OnDestroy {\n public processDefinitionKey: string;\n public processDefinitionId: string;\n public caseDefinitionKey: string;\n public processName: string;\n private _startEventName: string;\n private get _useStartEventNameAsStartFormTitle(): boolean {\n return !!this.configService.featureToggles?.useStartEventNameAsStartFormTitle;\n }\n public formDefinition: FormioForm;\n public formName: string;\n public formFlowInstanceId: string;\n public formioSubmission: FormioSubmission;\n private processLinkId: string;\n public options: ValtimoFormioOptions;\n public isAdmin: boolean;\n public isFormViewModel = false;\n public isUIComponent = false;\n @Input() navigateAfterSubmit = true;\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n @Output() formFlowComplete = new EventEmitter();\n @Output() noProcessLinked = new EventEmitter<string>();\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n private _subscriptions = new Subscription();\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n public readonly closeModalEvent = new EventEmitter();\n\n constructor(\n private router: Router,\n private processService: ProcessService,\n private processLinkService: ProcessLinkService,\n private userProviderService: UserProviderService,\n private permissionService: PermissionService,\n private listService: CaseListService,\n private startModalService: StartModalService,\n private configService: ConfigService,\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 urlResolverService: UrlResolverService\n ) {\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n public ngOnInit(): void {\n this.isUserAdmin();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private loadProcessLink(): void {\n this.processLinkId = null;\n this.formDefinition = null;\n this.formFlowInstanceId = null;\n if (this._useStartEventNameAsStartFormTitle) {\n this.processService.getProcessDefinitionXml(this.processDefinitionId).subscribe(result => {\n this._startEventName = this.startModalService.getStandardStartEventTitle(result.bpmn20Xml);\n });\n }\n this.processService\n .getProcessDefinitionStartProcessLink(this.processDefinitionId, null, this.caseDefinitionKey)\n .pipe(take(1))\n .subscribe(startProcessResult => {\n if (startProcessResult) {\n this.isUIComponent = false;\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition = startProcessResult.properties.prefilledForm;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = false;\n this.openCdsModal();\n break;\n case 'form-flow':\n this.formFlowInstanceId = startProcessResult.properties.formFlowInstanceId;\n this.isFormViewModel = false;\n this.openCdsModal();\n break;\n case 'form-view-model':\n this.formDefinition = startProcessResult.properties.formDefinition;\n this.formName = startProcessResult.properties.formName;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = true;\n this.setFormViewModelComponent();\n this.openCdsModal();\n break;\n case 'url':\n this.processLinkId = startProcessResult.processLinkId;\n this.processLinkService\n .getVariables()\n .pipe(take(1))\n .subscribe(variables => {\n let url = this.urlResolverService.resolveUrlVariables(\n startProcessResult.properties.url,\n variables.variables\n );\n window.open(url, '_blank').focus();\n this.processLinkService\n .submitURLProcessLink(this.processLinkId)\n .subscribe(result => {\n this.submitCompleted(result);\n });\n });\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.isUIComponent = true;\n this.openCdsModal();\n break;\n }\n } else {\n this.noProcessLinked.emit(this.processDefinitionKey);\n }\n });\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeCdsModal();\n this.router.navigate(['case-management']);\n }\n\n public get modalTitle() {\n const fallbackTitle = `Start - ${this.processName}`;\n return this._useStartEventNameAsStartFormTitle\n ? this._startEventName || fallbackTitle\n : fallbackTitle;\n }\n\n openModal(processDefinitionCaseDefinition: ProcessDefinitionCaseDefinition) {\n this.processDefinitionKey = processDefinitionCaseDefinition.processDefinitionKey;\n this.caseDefinitionKey = processDefinitionCaseDefinition.id.caseDefinitionId.key;\n this.processDefinitionId = processDefinitionCaseDefinition.id.processDefinitionId;\n this.processName = processDefinitionCaseDefinition.processDefinitionName;\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n this.options.setHooks(formioBeforeSubmit);\n this.loadProcessLink();\n }\n\n public onSubmit(submission: FormioSubmission) {\n this.formioSubmission = submission;\n\n this.processLinkService.submitForm(this.processLinkId, submission.data).subscribe({\n next: (formSubmissionResult: FormSubmissionResult) => {\n this.submitCompleted(formSubmissionResult);\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n\n public formFlowSubmitted(result?: any[]): void {\n const documentId = result\n ?.filter(item => item?.documentId)\n ?.map(item => item.documentId)?.[0];\n if (documentId) {\n this.submitCompleted({documentId, errors: []});\n } else {\n this.formFlowComplete.emit(null);\n this.closeCdsModal();\n }\n }\n\n public isUserAdmin(): void {\n this.userProviderService.getUserSubject().subscribe(\n userIdentity => {\n this.isAdmin = userIdentity.roles.includes('ROLE_ADMIN');\n },\n error => {\n this.isAdmin = false;\n }\n );\n }\n\n public onCloseSelect(): void {\n this.closeCdsModal();\n }\n\n private submitCompleted(formSubmissionResult: FormSubmissionResult): void {\n this.closeCdsModal();\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: formSubmissionResult.documentId,\n })\n .subscribe(canViewCase => {\n if (canViewCase && this.navigateAfterSubmit) {\n this.router.navigate([\n 'cases',\n this.caseDefinitionKey,\n 'document',\n formSubmissionResult.documentId,\n ]);\n } else {\n this.listService.forceRefresh();\n }\n });\n }\n\n private setFormViewModelComponent() {\n if (!this.formViewModel.component) return;\n this.formViewModelDynamicContainer.clear();\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition;\n formViewModelComponent.instance.formName = this.formName;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.processDefinitionKey = this.processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = this.caseDefinitionKey;\n this._subscriptions.add(\n formViewModelComponent.instance.formSubmit.subscribe(() => {\n this.listService.forceRefresh();\n this.closeCdsModal();\n })\n );\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n })\n );\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = this.caseDefinitionKey;\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.closeCdsModal();\n });\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n renderedComponent.destroy();\n })\n );\n });\n }\n\n private openCdsModal(): void {\n this.modalOpen$.next(false);\n setTimeout(() => this.modalOpen$.next(true));\n }\n\n private closeCdsModal(): void {\n this.modalOpen$.next(true);\n setTimeout(() => this.modalOpen$.next(false));\n this.closeModalEvent.emit();\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<valtimo-render-in-body>\n <cds-modal [open]=\"modalOpen$ | async\" size=\"sm\" valtimoCdsModal [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted($event)\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n </cds-modal>\n</valtimo-render-in-body>\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 {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {RenderInBodyComponent, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {CaseSettings, DocumentService, ProcessDefinitionCaseDefinition} from '@valtimo/document';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {DialogModule, ModalModule, TilesModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n} from 'rxjs';\n\nimport {CaseListService} from '../../services';\nimport {CaseProcessStartModalComponent} from '../case-process-start-modal/case-process-start-modal.component';\n\ndeclare const $;\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-list-actions',\n templateUrl: './case-list-actions.component.html',\n styleUrls: ['./case-list-actions.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n DialogModule,\n ModalModule,\n ValtimoCdsModalDirective,\n TilesModule,\n CaseProcessStartModalComponent,\n RenderInBodyComponent,\n ],\n})\nexport class CaseListActionsComponent implements OnInit {\n @ViewChild('processStartModal') processStart: CaseProcessStartModalComponent;\n\n private readonly _loading$ = new BehaviorSubject<boolean>(true);\n @Input() set loading(value: boolean) {\n this._loading$.next(value);\n }\n @Input() navigateAfterSubmit = true;\n\n @Output() public readonly formFlowComplete = new EventEmitter();\n @Output() public readonly startButtonDisableEvent = new EventEmitter<boolean>();\n\n private readonly _caseSettings$ = new BehaviorSubject<CaseSettings | null>(null);\n\n public readonly caseSettings$ = this._caseSettings$.pipe(filter(settings => !!settings));\n\n private get _caseSettings(): CaseSettings | null {\n return this._caseSettings$.getValue();\n }\n\n public readonly associatedProcessDocumentDefinitions$: Observable<\n Array<ProcessDefinitionCaseDefinition>\n > = this.listService.caseDefinitionKey$.pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey =>\n combineLatest([\n caseDefinitionKey\n ? this.documentService.findProcessDefinitionCaseDefinitionsByCanInitializeDocument(\n caseDefinitionKey,\n true\n )\n : of([]),\n this._loading$,\n this.caseSettings$,\n ])\n ),\n map(([processDocumentDefinitions, loading, caseSettings]) => {\n this._cachedAssociatedProcessDocumentDefinitions = processDocumentDefinitions;\n this.startButtonDisableEvent.emit(\n loading || (processDocumentDefinitions.length === 0 && !caseSettings?.hasExternalStartForm)\n );\n return processDocumentDefinitions.filter(definition => definition.canInitializeDocument);\n })\n );\n\n private selectedProcessDefinitionCaseDefinition: ProcessDefinitionCaseDefinition | null = null;\n public readonly startSelectionModalOpen$ = new BehaviorSubject<boolean>(false);\n\n private _cachedAssociatedProcessDocumentDefinitions: Array<ProcessDefinitionCaseDefinition> = [];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly listService: CaseListService,\n private readonly notificationService: GlobalNotificationService,\n private readonly router: Router,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.listService.caseDefinitionKey$\n .pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey => this.documentService.getCaseSettings(caseDefinitionKey))\n )\n .subscribe(caseSettings => {\n this._caseSettings$.next(caseSettings);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public startCase(): void {\n const associatedProcessDocumentDefinitions = this._cachedAssociatedProcessDocumentDefinitions;\n const hasExternalStartForm = this._caseSettings?.hasExternalStartForm;\n\n if (hasExternalStartForm && associatedProcessDocumentDefinitions.length === 0) {\n this.openExternalCaseStartForm();\n } else if (associatedProcessDocumentDefinitions.length === 1 && !hasExternalStartForm) {\n this.selectProcess(associatedProcessDocumentDefinitions[0]);\n } else {\n this.startSelectionModalOpen$.next(true);\n }\n }\n\n public selectProcess(processDefinitionCaseDefinition: ProcessDefinitionCaseDefinition): void {\n this.selectedProcessDefinitionCaseDefinition = processDefinitionCaseDefinition;\n this.startSelectionModalOpen$.next(false);\n this.showStartProcessModal();\n }\n\n public onFormFlowComplete(): void {\n this.formFlowComplete.emit(null);\n }\n\n public onNoProcessLinked(processDefinitionKey: string): void {\n this.notificationService.ngOnDestroy();\n\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('case.noLinkedStartProcessNotification'),\n actions: [\n {\n text: this.translateService.instant('case.configure'),\n click: () =>\n this.router.navigate([\n `/case-management/case/${this._caseSettings?.caseDefinitionKey}/version/${this._caseSettings?.caseDefinitionVersionTag}/processes/${processDefinitionKey}`,\n ]),\n },\n ],\n });\n }\n\n public onCloseSelect(): void {\n this.startSelectionModalOpen$.next(false);\n }\n\n public openExternalCaseStartForm(closeModal = false): void {\n window.open(this._caseSettings?.externalStartFormUrl, '_blank');\n\n if (closeModal) this.startSelectionModalOpen$.next(false);\n }\n\n private showStartProcessModal(): void {\n if (this.selectedProcessDefinitionCaseDefinition !== null) {\n this.processStart.openModal(this.selectedProcessDefinitionCaseDefinition);\n this.selectedProcessDefinitionCaseDefinition = null;\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<valtimo-render-in-body>\n <cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processDefinitionName }}\n </cds-clickable-tile>\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n\n<valtimo-case-process-start-modal\n #processStartModal\n [navigateAfterSubmit]=\"navigateAfterSubmit\"\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked($event)\"\n></valtimo-case-process-start-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {AssigneeFilter, CaseListTab} from '@valtimo/shared';\nimport {Tab, Tabs} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {DEFAULT_CASE_LIST_TABS} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-list-tabs',\n templateUrl: './case-list-tabs.component.html',\n styleUrls: ['./case-list-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseListTabsComponent {\n @ViewChild(Tabs) tabsComponent: Tabs;\n\n @Input() public assigneeFilter: AssigneeFilter | null = null;\n @Input() public selectedRowCount = 0;\n @Input() public visibleTabs: Array<CaseListTab> | null = null;\n\n @Output() public tabChangeEvent = new EventEmitter<CaseListTab>();\n\n public activeTab: CaseListTab | null = null;\n public readonly defaultTabs = DEFAULT_CASE_LIST_TABS;\n public readonly showChangeTabModal$ = new BehaviorSubject<boolean>(false);\n public readonly tabChange$ = new BehaviorSubject<CaseListTab | null>(null);\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public tabChange(tab: CaseListTab): void {\n if (!this.activeTab) {\n this.activeTab = tab;\n return;\n }\n\n if (this.activeTab.toLowerCase() === tab.toLowerCase()) return;\n\n if (this.selectedRowCount > 0) {\n this.showChangeTabModal$.next(true);\n this.tabChange$.next(tab);\n return;\n }\n\n this.confirmTabChange(tab);\n }\n\n public onChangeTabCancel(): void {\n if (!this.tabsComponent) return;\n\n const prevTab: Tab | undefined = this.tabsComponent.tabs.find(\n (tab: Tab) => tab.id === this.activeTab\n );\n\n if (!prevTab) return;\n\n const tab = this.tabsComponent.tabs.find((tab: Tab) => tab.active);\n if (!tab) return;\n\n tab.active = false;\n prevTab.active = true;\n }\n\n public onChangeTabConfirm(tab: CaseListTab): void {\n this.confirmTabChange(tab);\n }\n\n private confirmTabChange(tab: CaseListTab): void {\n this.activeTab = tab;\n this.tabChangeEvent.emit(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"!visibleTabs; else configuredTabs\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-container>\n\n<ng-template #configuredTabs>\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ListField, ListHiddenColumn} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-list-toolbar',\n templateUrl: './case-list-toolbar.component.html',\n styleUrls: ['./case-list-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseListToolbarComponent {\n @Input() public availableFields: ListField[] | null = null;\n @Input() public canCreate = false;\n @Input() public canExport = false;\n @Input() public disableExport = false;\n @Input() public disableStart = false;\n @Input() public hasApiColumnConfig = false;\n @Input() public hiddenColumns: ListField[] | null = null;\n @Input() public loadingExport = false;\n\n @Output() public exportEvent = new EventEmitter<void>();\n @Output() public startCaseEvent = new EventEmitter<void>();\n @Output() public viewUpdateEvent = new EventEmitter<ListHiddenColumn[]>();\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"case-list-toolbar\">\n <valtimo-list-column-view\n [availableFields]=\"availableFields\"\n [disabled]=\"!hasApiColumnConfig\"\n [hiddenColumns]=\"hiddenColumns\"\n (viewUpdateEvent)=\"viewUpdateEvent.emit($event)\"\n ></valtimo-list-column-view>\n\n <cds-tooltip *ngIf=\"canExport\" [description]=\"'case.exportButtonTooltip' | translate\">\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"exportEvent.emit()\"\n [disabled]=\"disableExport\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreate\"\n cdsButton=\"primary\"\n [disabled]=\"disableStart\"\n (click)=\"startCaseEvent.emit()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</div>\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 {Component, inject, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListComponent,\n CarbonPaginationSelection,\n IQuickSearchService,\n ListHiddenColumn,\n PageTitleService,\n Pagination,\n QUICK_SEARCH_SERVICE,\n QuickSearchStateService,\n} from '@valtimo/components';\nimport {CaseListTab, ConfigService, SearchFieldValues, SortState} from '@valtimo/shared';\nimport {TeamsApiService} from '@valtimo/teams';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Subscription,\n take,\n} from 'rxjs';\nimport {CASE_LIST_TABLE_TRANSLATIONS, DEFAULT_CASE_LIST_TABS} from '../../constants';\nimport {BulkAssign, CaseListQuickSearchParams} from '../../models';\nimport {\n CaseBulkAssignService,\n CaseColumnService,\n CaseExportService,\n CaseListAssigneeService,\n CaseListCaseTagService,\n CaseListOrchestrationService,\n CaseListPaginationService,\n CaseListQuickSearchService,\n CaseListSearchService,\n CaseListService,\n CaseListStatusService,\n CaseParameterService,\n} from '../../services';\nimport {CaseListActionsComponent} from '../case-list-actions/case-list-actions.component';\nimport {CaseListTabsComponent} from '../case-list-tabs/case-list-tabs.component';\n\n@Component({\n standalone: false,\n templateUrl: './case-list.component.html',\n styleUrls: ['./case-list.component.scss'],\n providers: [\n CaseListService,\n CaseColumnService,\n CaseListAssigneeService,\n CaseParameterService,\n CaseListPaginationService,\n CaseListSearchService,\n CaseListStatusService,\n CaseListCaseTagService,\n CaseExportService,\n CaseListOrchestrationService,\n {\n provide: QUICK_SEARCH_SERVICE,\n useClass: CaseListQuickSearchService,\n },\n ],\n})\nexport class CaseListComponent implements OnInit, OnDestroy {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n @ViewChild(CaseListActionsComponent) listActionsComponent: CaseListActionsComponent;\n @ViewChild(CaseListTabsComponent) tabsComponent: CaseListTabsComponent;\n\n public pagination!: Pagination;\n public canHaveAssignee!: boolean;\n public loadingExport = false;\n public visibleCaseTabs: CaseListTab[] | null = null;\n\n public readonly orchestration = inject(CaseListOrchestrationService);\n\n public readonly tableTranslations = CASE_LIST_TABLE_TRANSLATIONS;\n\n public readonly showAssignModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangePageModal$ = new BehaviorSubject<boolean>(false);\n public readonly disableStartButton$ = new BehaviorSubject<boolean>(false);\n public readonly selectedCaseIds$ = new BehaviorSubject<string[]>([]);\n public readonly paginationChange$ = new BehaviorSubject<CarbonPaginationSelection | null>(null);\n\n private _previousCaseDefinitionKey!: string;\n private _caseDefinitionKeySubscription!: Subscription;\n private _paginationSubscription!: Subscription;\n private _canHaveAssigneeSubscription!: Subscription;\n private _searchFieldsSubscription!: Subscription;\n\n constructor(\n private readonly assigneeService: CaseListAssigneeService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly bulkAssignService: CaseBulkAssignService,\n private readonly caseExportService: CaseExportService,\n private readonly caseListCaseTagService: CaseListCaseTagService,\n private readonly listService: CaseListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: CaseListPaginationService,\n private readonly parameterService: CaseParameterService,\n private readonly quickSearchStateService: QuickSearchStateService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly searchService: CaseListSearchService,\n private readonly statusService: CaseListStatusService,\n @Inject(QUICK_SEARCH_SERVICE)\n private readonly caseListQuickSearchService: IQuickSearchService<CaseListQuickSearchParams>,\n private readonly configService: ConfigService,\n private readonly teamsApiService: TeamsApiService\n ) {}\n\n public ngOnInit(): void {\n this.openCaseDefinitionKeySubscription();\n this.subscribeToPagination();\n this.subscribeToCanHaveAssignee();\n this.subscribeToSearchFields();\n this.resolveVisibleCaseTabs();\n\n if (!this.configService.config?.featureToggles?.enableGenericCaseList) {\n this.breadcrumbService.suppressSecondBreadcrumb();\n }\n }\n\n public ngOnDestroy(): void {\n this._caseDefinitionKeySubscription?.unsubscribe();\n this._paginationSubscription?.unsubscribe();\n this._canHaveAssigneeSubscription?.unsubscribe();\n this._searchFieldsSubscription?.unsubscribe();\n this.pageTitleService.enableReset();\n this.breadcrumbService.unsuppressSecondBreadcrumb();\n }\n\n // --- Search ---\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.searchService.search(searchFieldValues);\n }\n\n // --- Row click ---\n\n public rowClick(item: any): void {\n this.listService.caseDefinitionKey$.pipe(take(1)).subscribe(caseDefinitionKey => {\n this.breadcrumbService.cacheQueryParams(\n `/cases/${caseDefinitionKey}`,\n this.route.snapshot.queryParams\n );\n\n if (item.ctrlClick) {\n window.open(`/cases/${caseDefinitionKey}/document/${item.id}`, '_blank');\n } else {\n this.router.navigate([`/cases/${caseDefinitionKey}/document/${item.id}`]);\n }\n });\n }\n\n // --- Tab change ---\n\n public onTabChange(tab: CaseListTab): void {\n this.orchestration.setLoadingAssigneeFilter(true);\n this.orchestration.updateNoResultsMessage(false, tab);\n this.paginationService.setPage(1);\n this.assigneeService.setAssigneeFilter(tab);\n }\n\n // --- Pagination ---\n\n public pageChange(page: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page, size: this.pagination.size});\n return;\n }\n this.paginationService.pageChange(page);\n }\n\n public pageSizeChange(size: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page: this.pagination.page, size});\n return;\n }\n this.paginationService.pageSizeChange(size);\n }\n\n public sortChanged(newSortState: SortState): void {\n this.paginationService.sortChanged(newSortState);\n }\n\n public onChangePageConfirm(pagination: CarbonPaginationSelection): void {\n if (pagination.size !== this.pagination.size) {\n this.paginationService.pageSizeChange(pagination.size);\n return;\n }\n this.paginationService.pageChange(pagination.page);\n }\n\n // --- Bulk assign ---\n\n public showAssignModal(): void {\n this.selectedCaseIds$.next(\n this.carbonList.selectedItems.map(document => document.id)\n );\n this.showAssignModal$.next(true);\n }\n\n public onCloseEvent(bulkAssign: null | BulkAssign): void {\n this.showAssignModal$.next(false);\n if (!bulkAssign?.assigneeId && !bulkAssign?.assignedTeamKey) return;\n\n this.bulkAssignService.bulkAssign(bulkAssign.ids, bulkAssign.assigneeId, bulkAssign.assignedTeamKey).subscribe(() => {\n this.carbonList.model.selectAll(false);\n this.forceRefresh();\n });\n }\n\n // --- Actions ---\n\n public startCase(): void {\n this.listActionsComponent.startCase();\n }\n\n public export(): void {\n this.caseExportService\n .downloadExport()\n .subscribe(data => (this.loadingExport = data.isLoading));\n }\n\n public forceRefresh(): void {\n this.listService.forceRefresh();\n }\n\n // --- Filters ---\n\n public onSelectedStatusesChange(statusKeys: string[]): void {\n this.statusService.setSelectedStatuses(statusKeys);\n }\n\n public onSelectedCaseTagsChange(caseTagKeys: string[]): void {\n this.caseListCaseTagService.setSelectedCaseTags(caseTagKeys);\n }\n\n public onStartButtonDisableEvent(disabled: boolean): void {\n this.disableStartButton$.next(disabled);\n }\n\n public onViewUpdateEvent(hiddenColumns: ListHiddenColumn[]): void {\n this.orchestration.saveHiddenColumns(hiddenColumns);\n }\n\n // --- Quick search ---\n\n public onSaveSearchEvent(event: any): void {\n combineLatest([\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n ])\n .pipe(take(1))\n .subscribe(([statusKeys, tags]) => {\n this.quickSearchStateService.openModal({\n ...this.parameterService.getSearchParameter('casetags', tags),\n ...this.parameterService.getSearchParameter('status', statusKeys),\n ...this.parameterService.getSearchParameter('search', event),\n });\n });\n }\n\n public onQuickSearchEvent(queryPath: string): void {\n combineLatest([this.route.queryParams, this.orchestration.caseDefinitionKey$])\n .pipe(take(1))\n .subscribe(([urlParams, caseDefinitionKey]) => {\n const queryParams = {...urlParams, ...Object.fromEntries(new URLSearchParams(queryPath))};\n this.router.navigate([`/cases/${caseDefinitionKey}`], {\n queryParams,\n replaceUrl: true,\n queryParamsHandling: 'replace',\n });\n this.statusService.setSelectedStatuses(\n this.parameterService.getSearchObject(queryParams['status']) as string[]\n );\n this.caseListCaseTagService.setSelectedCaseTags(\n this.parameterService.getSearchObject(queryParams['casetags']) as string[]\n );\n this.parameterService.setSearchFieldValues(\n this.parameterService.getSearchObject(queryParams['search']) as SearchFieldValues\n );\n });\n }\n\n public onClearEvent(): void {\n this.statusService.setSelectedStatuses([]);\n this.caseListCaseTagService.setSelectedCaseTags([]);\n }\n\n // --- Private ---\n\n private openCaseDefinitionKeySubscription(): void {\n this._caseDefinitionKeySubscription = this.route.params\n .pipe(\n map((params: Params) => params?.caseDefinitionKey),\n filter(docDefName => !!docDefName),\n distinctUntilChanged()\n )\n .subscribe(caseDefinitionKey => {\n if (this._previousCaseDefinitionKey) {\n this.parameterService.clearParameters();\n this.parameterService.clearSearchFieldValues();\n }\n this._previousCaseDefinitionKey = caseDefinitionKey;\n this.paginationService.clearPagination();\n this.assigneeService.resetAssigneeFilter();\n this.listService.setCaseDefinitionKey(caseDefinitionKey);\n this.orchestration.setLoading();\n });\n }\n\n private subscribeToPagination(): void {\n this._paginationSubscription = this.orchestration.pagination$.subscribe(pagination => {\n this.pagination = pagination;\n });\n }\n\n private subscribeToCanHaveAssignee(): void {\n this._canHaveAssigneeSubscription = this.assigneeService.canHaveAssignee$.subscribe(\n canHaveAssignee => {\n this.canHaveAssignee = canHaveAssignee;\n }\n );\n }\n\n private subscribeToSearchFields(): void {\n this._searchFieldsSubscription = this.orchestration.searchFields$.subscribe(() => {\n this.orchestration.setLoadingSearchFields(false);\n });\n }\n\n private resolveVisibleCaseTabs(): void {\n const tabs = this.configService.config?.visibleCaseListTabs || DEFAULT_CASE_LIST_TABS;\n\n this.teamsApiService.getCurrentUserTeams().subscribe(teams => {\n this.visibleCaseTabs =\n teams.length > 0 ? tabs : tabs.filter(tab => tab !== CaseListTab.TEAM);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n schema: orchestration.schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search (quickSearchEvent)=\"onQuickSearchEvent($event)\"></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\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 */\nimport {Location} from '@angular/common';\nimport {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {TaskService} from '@valtimo/task';\nimport moment from 'moment';\nimport {CaseService} from '../../services/case.service';\nimport {TranslateService} from '@ngx-translate/core';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n templateUrl: './case-update.component.html',\n styleUrls: ['./case-update.component.scss'],\n})\nexport class CaseUpdateComponent implements OnInit {\n public task: any;\n public taskId: string;\n public schema: any;\n public documentId: string;\n public document: any;\n public page: any;\n public documentDefinitionName: string;\n public implementationDefinitions: any;\n public customDefinitions: any = {};\n\n constructor(\n private readonly caseService: CaseService,\n private readonly documentService: DocumentService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly location: Location,\n private readonly route: ActivatedRoute,\n private readonly taskService: TaskService,\n private readonly translateService: TranslateService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';\n this.documentId = snapshot.get('documentId') || '';\n this.taskId = snapshot.get('taskId') || '';\n this.implementationDefinitions = this.caseService.getImplementationEnvironmentDefinitions(\n this.documentDefinitionName\n );\n this.loadDocumentDefinition(this.documentDefinitionName);\n this.loadDocument(this.documentId);\n }\n\n ngOnInit() {\n this.getTask(this.taskId);\n if (this.implementationDefinitions.definitions.detail.summary) {\n this.customDefinitions = this.implementationDefinitions.definitions.detail.summary;\n }\n }\n\n private loadDocumentDefinition(name: string) {\n this.documentService.getDocumentDefinition(name).subscribe(definition => {\n this.schema = definition.schema;\n });\n }\n\n private loadDocument(id: string) {\n this.documentService.getDocument(id).subscribe(document => {\n this.document = document;\n });\n }\n\n public getTask(id: string) {\n this.taskService.getTask(id).subscribe(task => {\n this.task = task;\n this.task.task.created = moment(this.task.task.created).format('DD MMM YYYY HH:mm');\n this.page = {\n title: this.task.task.name,\n subtitle: `Created ${moment(this.task.task.created).fromNow()}`,\n };\n });\n }\n\n public reset() {\n this.loadDocument(this.documentId);\n }\n\n public back() {\n this.location.back();\n }\n\n public save() {\n const document = {\n documentId: this.document.id,\n content: this.document.content,\n versionBasedOn: this.document.version,\n };\n this.documentService.modifyDocument(document).subscribe(result => {\n this.document = result.document;\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.caseUpdated'),\n type: 'success',\n });\n this.location.back();\n });\n }\n\n public submit(data: object) {\n // merge document content with formdata\n const mergedData = Object.assign({}, this.document.content, data);\n const documentData = {\n request: {\n documentId: this.document.id,\n content: mergedData,\n versionBasedOn: this.document.version,\n },\n taskId: this.task.task.id,\n };\n\n this.documentService.modifyDocumentAndCompleteTask(documentData).subscribe(() => {\n this.globalNotificationService.showToast({\n title: `${this.task.task.name} ${this.translateService.instant('taskDetail.taskCompleted')}`,\n type: 'success',\n });\n this.location.back();\n });\n }\n\n public returnZero() {\n return 0;\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 class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget [title]=\"page?.title\" [subtitle]=\"page?.subtitle\" [divider]=\"true\">\n <div class=\"card-body\">\n <!--view with custom definitions-->\n <div *ngIf=\"this.customDefinitions\">\n <div\n class=\"mb-4\"\n *ngFor=\"let definition of this.customDefinitions | keyvalue: returnZero\"\n ></div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-sm-12\">\n <div class=\"text-right\">\n <button\n class=\"btn btn-space btn-default float-left\"\n type=\"button\"\n (click)=\"back()\"\n id=\"back-button\"\n >\n Back\n </button>\n <button\n class=\"btn btn-space btn-secondary\"\n type=\"button\"\n (click)=\"reset()\"\n id=\"reset-button\"\n >\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"button\"\n (click)=\"save()\"\n id=\"save-button\"\n >\n Save\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n (click)=\"submit({})\"\n id=\"submit-button\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <valtimo-camunda-form\n *ngIf=\"task?.formFields && !this.customDefinitions\"\n (submitted)=\"submit($event)\"\n [formFields]=\"task.formFields\"\n [componentName]=\"task.formLocation\"\n ></valtimo-camunda-form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, inject, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListComponent,\n CarbonPaginationSelection,\n IQuickSearchService,\n ListField,\n ListHiddenColumn,\n PageTitleService,\n Pagination,\n QUICK_SEARCH_SERVICE,\n QuickSearchStateService,\n ViewType,\n} from '@valtimo/components';\nimport {\n AssigneeFilter,\n CaseListTab,\n ConfigService,\n DefinitionColumn,\n SearchFieldValues,\n SortState,\n} from '@valtimo/shared';\nimport {DocumentService, Documents, DocumentSearchRequestImpl} from '@valtimo/document';\nimport {TeamsApiService} from '@valtimo/teams';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n of,\n shareReplay,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CASE_LIST_TABLE_TRANSLATIONS, DEFAULT_CASE_LIST_TABS} from '../../constants';\nimport {BulkAssign, CaseListQuickSearchParams} from '../../models';\nimport {\n CaseBulkAssignService,\n CaseColumnService,\n CaseExportService,\n CaseListAssigneeService,\n CaseListCaseTagService,\n CaseListOrchestrationService,\n CaseListPaginationService,\n CaseListQuickSearchService,\n CaseListSearchService,\n CaseListService,\n CaseListStatusService,\n CaseParameterService,\n} from '../../services';\nimport {CaseListActionsComponent} from '../case-list-actions/case-list-actions.component';\nimport {CaseListTabsComponent} from '../case-list-tabs/case-list-tabs.component';\nimport {ListItem} from 'carbon-components-angular';\n\nconst ALL_CASES_ID = 'ALL_CASES';\n\n@Component({\n standalone: false,\n templateUrl: './generic-case-list.component.html',\n styleUrls: ['./generic-case-list.component.scss'],\n providers: [\n CaseListService,\n CaseColumnService,\n CaseListAssigneeService,\n CaseParameterService,\n CaseListPaginationService,\n CaseListSearchService,\n CaseListStatusService,\n CaseListCaseTagService,\n CaseExportService,\n CaseListOrchestrationService,\n {\n provide: QUICK_SEARCH_SERVICE,\n useClass: CaseListQuickSearchService,\n },\n ],\n})\nexport class GenericCaseListComponent implements OnInit, OnDestroy {\n @ViewChild('specificCaseList') carbonList: CarbonListComponent;\n @ViewChild(CaseListActionsComponent) listActionsComponent: CaseListActionsComponent;\n @ViewChild(CaseListTabsComponent) tabsComponent: CaseListTabsComponent;\n\n public readonly ALL_CASES_ID = ALL_CASES_ID;\n public readonly tableTranslations = CASE_LIST_TABLE_TRANSLATIONS;\n\n public pagination!: Pagination;\n public canHaveAssignee!: boolean;\n public loadingExport = false;\n public visibleCaseTabs: CaseListTab[] | null = null;\n\n public readonly orchestration = inject(CaseListOrchestrationService);\n\n public readonly showAssignModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangePageModal$ = new BehaviorSubject<boolean>(false);\n public readonly disableStartButton$ = new BehaviorSubject<boolean>(false);\n public readonly selectedCaseIds$ = new BehaviorSubject<string[]>([]);\n public readonly paginationChange$ = new BehaviorSubject<CarbonPaginationSelection | null>(null);\n\n // --- Case definition dropdown ---\n public readonly loadingCaseListItems$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedCaseDefinitionId$ = new BehaviorSubject<string>(ALL_CASES_ID);\n public readonly selectedCaseDefinitionId$ = this._selectedCaseDefinitionId$.asObservable();\n\n public readonly isAllCases$: Observable<boolean> = this._selectedCaseDefinitionId$.pipe(\n map(id => id === ALL_CASES_ID)\n );\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, selectedId]) => [\n {\n content: this.translateService.instant('case.allCases'),\n id: ALL_CASES_ID,\n selected: selectedId === ALL_CASES_ID,\n },\n ...documentDefinitionRes.content.map(documentDefinition => ({\n id: documentDefinition.id.name,\n content: documentDefinition?.schema?.title,\n selected: documentDefinition.id.name === selectedId,\n })),\n ]),\n tap(() => this.loadingCaseListItems$.next(false))\n );\n\n // --- \"All Cases\" data pipeline ---\n private readonly _allCasesPage$ = new BehaviorSubject<number>(1);\n private readonly _allCasesSize$ = new BehaviorSubject<number>(10);\n private readonly _allCasesSort$ = new BehaviorSubject<SortState | null>(null);\n private readonly _allCasesReload$ = new BehaviorSubject<boolean>(false);\n private readonly _allCasesAssigneeFilter$ = new BehaviorSubject<AssigneeFilter>('ALL');\n public readonly allCasesAssigneeFilter$ = this._allCasesAssigneeFilter$.asObservable();\n\n public readonly allCasesFields$: Observable<ListField[]> = this.translateService\n .stream('fieldLabels')\n .pipe(\n map(() =>\n this.mapDefaultColumnsToListFields(\n this.configService.config?.defaultDefinitionTable || []\n )\n )\n );\n\n public readonly allCasesLoading$ = new BehaviorSubject<boolean>(true);\n\n public readonly allCasesData$: Observable<{items: any[]; pagination: Pagination}> = combineLatest([\n this._allCasesPage$,\n this._allCasesSize$,\n this._allCasesSort$,\n this._allCasesReload$,\n this._allCasesAssigneeFilter$,\n ]).pipe(\n tap(() => this.allCasesLoading$.next(true)),\n switchMap(([page, size, sort, _, assigneeFilter]) => {\n const request = new DocumentSearchRequestImpl(\n '',\n page - 1,\n size,\n undefined,\n undefined,\n undefined,\n sort,\n undefined,\n assigneeFilter !== 'ALL' ? assigneeFilter : undefined\n );\n return this.documentService.getDocuments(request).pipe(\n map((documents: Documents) => ({\n items: documents.content.map(document => {\n const {content, ...others} = document;\n return {...content, ...others};\n }),\n pagination: {\n collectionSize: documents.totalElements,\n page,\n size,\n sort,\n } as Pagination,\n }))\n );\n }),\n tap(() => this.allCasesLoading$.next(false)),\n shareReplay(1)\n );\n\n private _subscriptions = new Subscription();\n private _paginationSubscription!: Subscription;\n private _canHaveAssigneeSubscription!: Subscription;\n private _searchFieldsSubscription!: Subscription;\n\n constructor(\n private readonly assigneeService: CaseListAssigneeService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly bulkAssignService: CaseBulkAssignService,\n private readonly caseExportService: CaseExportService,\n private readonly caseListCaseTagService: CaseListCaseTagService,\n private readonly listService: CaseListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: CaseListPaginationService,\n private readonly parameterService: CaseParameterService,\n private readonly quickSearchStateService: QuickSearchStateService,\n private readonly router: Router,\n private readonly searchService: CaseListSearchService,\n private readonly statusService: CaseListStatusService,\n @Inject(QUICK_SEARCH_SERVICE)\n private readonly caseListQuickSearchService: IQuickSearchService<CaseListQuickSearchParams>,\n private readonly configService: ConfigService,\n private readonly teamsApiService: TeamsApiService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n this.pageTitleService.setCustomPageTitle(\n this.translateService.instant('Cases'),\n true\n );\n this.resolveVisibleCaseTabs();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._paginationSubscription?.unsubscribe();\n this._canHaveAssigneeSubscription?.unsubscribe();\n this._searchFieldsSubscription?.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n // --- Case definition switching ---\n\n public setCaseDefinition(definition: {item: {id: string}}): void {\n const newId = definition.item.id;\n if (newId === this._selectedCaseDefinitionId$.getValue()) return;\n\n this._selectedCaseDefinitionId$.next(newId);\n\n if (newId !== ALL_CASES_ID) {\n this.parameterService.clearParameters();\n this.parameterService.clearSearchFieldValues();\n this.paginationService.clearPagination();\n this.assigneeService.resetAssigneeFilter();\n this.listService.setCaseDefinitionKey(newId);\n this.orchestration.setLoading();\n this.subscribeToPagination();\n this.subscribeToCanHaveAssignee();\n this.subscribeToSearchFields();\n } else {\n this._allCasesPage$.next(1);\n this._allCasesReload$.next(!this._allCasesReload$.getValue());\n }\n }\n\n // --- Delegated to existing case list services when a specific definition is selected ---\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.searchService.search(searchFieldValues);\n }\n\n public rowClick(item: any): void {\n this._selectedCaseDefinitionId$.pipe(take(1)).subscribe(selectedId => {\n const caseDefinitionKey =\n selectedId !== ALL_CASES_ID ? selectedId : item.definitionName || item.definitionId?.name;\n\n if (caseDefinitionKey) {\n if (item.ctrlClick) {\n window.open(`/cases/${caseDefinitionKey}/document/${item.id}`, '_blank');\n } else {\n this.router.navigate([`/cases/${caseDefinitionKey}/document/${item.id}`]);\n }\n }\n });\n }\n\n public onTabChange(tab: CaseListTab): void {\n this.orchestration.setLoadingAssigneeFilter(true);\n this.orchestration.updateNoResultsMessage(false, tab);\n this.paginationService.setPage(1);\n this.assigneeService.setAssigneeFilter(tab);\n }\n\n public pageChange(page: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page, size: this.pagination.size});\n return;\n }\n this.paginationService.pageChange(page);\n }\n\n public pageSizeChange(size: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page: this.pagination.page, size});\n return;\n }\n this.paginationService.pageSizeChange(size);\n }\n\n public sortChanged(newSortState: SortState): void {\n this.paginationService.sortChanged(newSortState);\n }\n\n public onChangePageConfirm(pagination: CarbonPaginationSelection): void {\n if (pagination.size !== this.pagination.size) {\n this.paginationService.pageSizeChange(pagination.size);\n return;\n }\n this.paginationService.pageChange(pagination.page);\n }\n\n public showAssignModal(): void {\n this.selectedCaseIds$.next(\n this.carbonList.selectedItems.map(document => document.id)\n );\n this.showAssignModal$.next(true);\n }\n\n public onCloseEvent(bulkAssign: null | BulkAssign): void {\n this.showAssignModal$.next(false);\n if (!bulkAssign?.assigneeId && !bulkAssign?.assignedTeamKey) return;\n\n this.bulkAssignService\n .bulkAssign(bulkAssign.ids, bulkAssign.assigneeId, bulkAssign.assignedTeamKey)\n .subscribe(() => {\n this.carbonList.model.selectAll(false);\n this.forceRefresh();\n });\n }\n\n public startCase(): void {\n this.listActionsComponent.startCase();\n }\n\n public export(): void {\n this.caseExportService\n .downloadExport()\n .subscribe(data => (this.loadingExport = data.isLoading));\n }\n\n public forceRefresh(): void {\n this.listService.forceRefresh();\n }\n\n public onSelectedStatusesChange(statusKeys: string[]): void {\n this.statusService.setSelectedStatuses(statusKeys);\n }\n\n public onSelectedCaseTagsChange(caseTagKeys: string[]): void {\n this.caseListCaseTagService.setSelectedCaseTags(caseTagKeys);\n }\n\n public onStartButtonDisableEvent(disabled: boolean): void {\n this.disableStartButton$.next(disabled);\n }\n\n public onViewUpdateEvent(hiddenColumns: ListHiddenColumn[]): void {\n this.orchestration.saveHiddenColumns(hiddenColumns);\n }\n\n public onSaveSearchEvent(event: any): void {\n combineLatest([\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n ])\n .pipe(take(1))\n .subscribe(([statusKeys, tags]) => {\n this.quickSearchStateService.openModal({\n ...this.parameterService.getSearchParameter('casetags', tags),\n ...this.parameterService.getSearchParameter('status', statusKeys),\n ...this.parameterService.getSearchParameter('search', event),\n });\n });\n }\n\n public onQuickSearchEvent(queryPath: string): void {\n combineLatest([this.orchestration.caseDefinitionKey$])\n .pipe(take(1))\n .subscribe(([caseDefinitionKey]) => {\n const queryParams = Object.fromEntries(new URLSearchParams(queryPath));\n this.router.navigate(['/cases'], {\n queryParams,\n replaceUrl: true,\n queryParamsHandling: 'replace',\n });\n this.statusService.setSelectedStatuses(\n this.parameterService.getSearchObject(queryParams['status']) as string[]\n );\n this.caseListCaseTagService.setSelectedCaseTags(\n this.parameterService.getSearchObject(queryParams['casetags']) as string[]\n );\n this.parameterService.setSearchFieldValues(\n this.parameterService.getSearchObject(queryParams['search']) as SearchFieldValues\n );\n });\n }\n\n public onClearEvent(): void {\n this.statusService.setSelectedStatuses([]);\n this.caseListCaseTagService.setSelectedCaseTags([]);\n }\n\n // --- All Cases pagination ---\n\n public allCasesPageChange(page: number): void {\n this._allCasesPage$.next(page);\n }\n\n public allCasesPageSizeChange(size: number): void {\n this._allCasesSize$.next(size);\n this._allCasesPage$.next(1);\n }\n\n public allCasesSortChanged(newSortState: SortState): void {\n this._allCasesSort$.next(newSortState);\n }\n\n public allCasesTabChange(tab: CaseListTab): void {\n this._allCasesAssigneeFilter$.next(tab as AssigneeFilter);\n this._allCasesPage$.next(1);\n }\n\n // --- Private ---\n\n private subscribeToPagination(): void {\n this._paginationSubscription?.unsubscribe();\n this._paginationSubscription = this.orchestration.pagination$.subscribe(pagination => {\n this.pagination = pagination;\n });\n }\n\n private subscribeToCanHaveAssignee(): void {\n this._canHaveAssigneeSubscription?.unsubscribe();\n this._canHaveAssigneeSubscription = this.assigneeService.canHaveAssignee$.subscribe(\n canHaveAssignee => {\n this.canHaveAssignee = canHaveAssignee;\n }\n );\n }\n\n private subscribeToSearchFields(): void {\n this._searchFieldsSubscription?.unsubscribe();\n this._searchFieldsSubscription = this.orchestration.searchFields$.subscribe(() => {\n this.orchestration.setLoadingSearchFields(false);\n });\n }\n\n private resolveVisibleCaseTabs(): void {\n const tabs = this.configService.config?.visibleCaseListTabs || DEFAULT_CASE_LIST_TABS;\n\n this.teamsApiService.getCurrentUserTeams().subscribe(teams => {\n this.visibleCaseTabs =\n teams.length > 0 ? tabs : tabs.filter(tab => tab !== CaseListTab.TEAM);\n });\n }\n\n private mapDefaultColumnsToListFields(columns: DefinitionColumn[]): ListField[] {\n return columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key: column.propertyName,\n label: validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType as ViewType}),\n ...(column.default && {default: column.default}),\n };\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{isAllCases: isAllCases$ | async} as mode\">\n <!-- All Cases mode -->\n <ng-container *ngIf=\"mode.isAllCases\">\n <valtimo-carbon-list\n [fields]=\"allCasesFields$ | async\"\n [header]=\"false\"\n [items]=\"(allCasesData$ | async)?.items\"\n [loading]=\"allCasesLoading$ | async\"\n [pagination]=\"(allCasesData$ | async)?.pagination\"\n paginationIdentifier=\"genericCaseList\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"allCasesPageChange($event)\"\n (paginationSet)=\"allCasesPageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"allCasesSortChanged($event)\"\n >\n <valtimo-no-results\n [description]=\"'case.noResults.ALL.description' | translate\"\n [title]=\"'case.noResults.ALL.title' | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"visibleCaseTabs\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"allCasesAssigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"allCasesTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <!-- Specific case definition mode -->\n <ng-container *ngIf=\"!mode.isAllCases\">\n <ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n >\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search\n (quickSearchEvent)=\"onQuickSearchEvent($event)\"\n ></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else specificLoading\">\n <valtimo-carbon-list\n #specificCaseList\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination?.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"genericCaseListSpecific\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage?.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage?.description | translate\"\n [title]=\"obs.noResultsMessage?.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <ng-template #specificLoading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-template>\n\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\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 dropdownObs\"\n [attr.data-testid]=\"'generic-case-list-dropdown'\"\n [disabled]=\"dropdownObs.loadingCaseListItems || (dropdownObs.caseListItems || []).length === 1\"\n [skeleton]=\"dropdownObs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"dropdownObs.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 {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {CaseDetailComponent} from './components/case-detail/case-detail.component';\nimport {CaseUpdateComponent} from './components/case-update/case-update.component';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {CaseListComponent} from './components/case-list/case-list.component';\nimport {GenericCaseListComponent} from './components/generic-case-list/generic-case-list.component';\nimport {pendingChangesGuard} from '@valtimo/components';\n\nconst routes: Routes = [\n {\n path: 'cases',\n component: GenericCaseListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Cases', roles: [ROLE_USER], customPageTitle: true},\n pathMatch: 'full',\n },\n {\n path: 'cases/:caseDefinitionKey',\n component: CaseListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Cases', roles: [ROLE_USER], customPageTitle: true},\n },\n {\n path: 'cases/:caseDefinitionKey/document/:documentId/:tab',\n component: CaseDetailComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Case details',\n parentPath: 'cases/:caseDefinitionKey',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'cases/:caseDefinitionKey/document/:documentId',\n component: CaseDetailComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Case details',\n parentPath: 'cases/:caseDefinitionKey',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'cases/:caseDefinitionKey/document/:documentId/:tab/tasks/:taskId',\n component: CaseUpdateComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Task details',\n parentPath: 'cases/:caseDefinitionKey/document/:documentId/:tab',\n roles: [ROLE_USER],\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class CaseRoutingModule {}\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 {TabTranslatePipe} from './tab-translate.pipe';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [TranslateModule],\n declarations: [TabTranslatePipe],\n exports: [TabTranslatePipe],\n})\nexport class TabTranslatePipeModule {}\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 './tab-translate.pipe';\nexport * from './tab-translate-pipe.module';\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 './tab-translate';\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 {ModuleWithProviders, NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n NgbButtonsModule,\n NgbModule,\n NgbPaginationModule,\n NgbTooltipModule,\n} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n AssignmentComponent,\n BpmnJsDiagramModule,\n CamundaFormModule,\n CarbonListModule,\n CaseTagsSelectorComponent,\n ConfirmationModalModule,\n DataListModule,\n DropzoneModule,\n FilterSidebarModule,\n FormIoModule,\n FormModule as VFormModule,\n InputLabelModule,\n InputModule,\n IsArrayPipe,\n ListColumnViewComponent,\n MenuService,\n ModalModule,\n ObserveSizeDirective,\n ParagraphModule,\n QuickSearchComponent,\n RemoveClassnamesDirective,\n RenderInPageHeaderDirective,\n SearchFieldsModule,\n SelectModule,\n SpinnerModule,\n StatusSelectorComponent,\n TableModule,\n TimelineModule,\n UploaderModule,\n ValtimoCdsModalDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n VModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule, HttpLoaderFactory} from '@valtimo/shared';\nimport {FormModule} from '@valtimo/form';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {ProcessModule} from '@valtimo/process';\nimport {TaskModule} from '@valtimo/task';\nimport {\n ButtonModule as CarbonButtonModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule as CarbonInputModule,\n LayerModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n SelectModule as CarbonSelectModule,\n SkeletonModule,\n TabsModule,\n TagModule,\n TilesModule,\n ToggletipModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {NoteModalComponent} from './components/note-modal/note-modal.component';\nimport {CaseRoutingModule} from './case-routing.module';\nimport {CaseBulkAssignModalComponent} from './components/case-bulk-assign-modal/case-bulk-assign-modal.component';\nimport {CaseDetailComponent} from './components/case-detail/case-detail.component';\nimport {CaseDetailTabAuditComponent} from './components/case-detail/tab/audit/audit.component';\nimport {CaseDetailTabDocumentsComponent} from './components/case-detail/tab/documents/documents.component';\nimport {CaseDetailTabNotesComponent} from './components/case-detail/tab/notes/notes.component';\nimport {CaseDetailTabProgressComponent} from './components/case-detail/tab/progress/progress.component';\nimport {CaseDetailTabS3DocumentsComponent} from './components/case-detail/tab/s3-documents/s3-documents.component';\nimport {CaseDetailTabSummaryComponent} from './components/case-detail/tab/summary/summary.component';\nimport {CaseListActionsComponent} from './components/case-list-actions/case-list-actions.component';\nimport {CaseListComponent} from './components/case-list/case-list.component';\nimport {CaseProcessStartModalComponent} from './components/case-process-start-modal/case-process-start-modal.component';\nimport {CaseSupportingProcessStartModalComponent} from './components/case-supporting-process-start-modal/case-supporting-process-start-modal.component';\nimport {CaseUpdateComponent} from './components/case-update/case-update.component';\nimport {TAB_MAP} from './constants';\nimport {CaseBulkAssignService, CaseMenuService, CaseService} from './services';\nimport {CaseDetailTabFormioComponent} from './components/case-detail/tab/formio/formio.component';\nimport {TabTranslatePipeModule} from './pipes';\nimport {CaseDetailTabNotFoundComponent} from './components/case-detail/tab/not-found/not-found.component';\nimport {CaseDetailWidgetsComponent} from './components/case-detail/tab/widgets/widgets.component';\nimport {CaseDetailTaskListComponent} from './components/case-detail-task-list/case-detail-task-list.component';\nimport {CaseDetailsTaskDetailComponent} from './components/case-detail-task-detail/case-detail-task-detail.component';\nimport {AngularSplitModule} from 'angular-split';\nimport {CaseDetailHeaderWidgetComponent} from './components/case-detail-header-widget/case-detail-header-widget.component';\nimport {CaseListTabsComponent} from './components/case-list-tabs/case-list-tabs.component';\nimport {CaseListToolbarComponent} from './components/case-list-toolbar/case-list-toolbar.component';\nimport {GenericCaseListComponent} from './components/generic-case-list/generic-case-list.component';\n\nexport type TabsFactory = () => Map<string, object>;\n\n@NgModule({\n declarations: [\n CaseBulkAssignModalComponent,\n CaseListComponent,\n CaseDetailComponent,\n CaseDetailTabSummaryComponent,\n CaseDetailTabProgressComponent,\n CaseDetailTabAuditComponent,\n CaseDetailTabDocumentsComponent,\n CaseDetailTabNotesComponent,\n CaseUpdateComponent,\n CaseSupportingProcessStartModalComponent,\n CaseDetailTabS3DocumentsComponent,\n CaseDetailTabNotFoundComponent,\n NoteModalComponent,\n CaseDetailTabFormioComponent,\n CaseListTabsComponent,\n CaseListToolbarComponent,\n GenericCaseListComponent,\n ],\n imports: [\n CommonModule,\n CaseRoutingModule,\n WidgetModule,\n BpmnJsDiagramModule,\n TimelineModule,\n CamundaFormModule,\n ProcessModule,\n FilterSidebarModule,\n NgbButtonsModule,\n DataListModule,\n FormsModule,\n ReactiveFormsModule,\n FormModule,\n FormIoModule,\n ModalModule,\n SpinnerModule,\n TranslateModule.forRoot({\n loader: {provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient]},\n }),\n TaskModule,\n ModalModule,\n NgbTooltipModule,\n UploaderModule,\n DropzoneModule,\n NgbPaginationModule,\n ConfigModule,\n SelectModule,\n InputLabelModule,\n ParagraphModule,\n TableModule,\n VModalModule,\n SearchFieldsModule,\n FormModule,\n InputModule,\n VFormModule,\n NgbModule,\n LoadingModule,\n CarbonButtonModule,\n IconModule,\n ProcessLinkModule,\n CarbonModalModule,\n CarbonSelectModule,\n ConfirmationModalModule,\n DropdownModule,\n TabsModule,\n ComboBoxModule,\n TabTranslatePipeModule,\n CarbonListModule,\n IsArrayPipe,\n SkeletonModule,\n StatusSelectorComponent,\n RenderInPageHeaderDirective,\n TagModule,\n DialogModule,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n CaseDetailWidgetsComponent,\n CaseDetailTaskListComponent,\n CaseDetailsTaskDetailComponent,\n AngularSplitModule,\n CaseTagsSelectorComponent,\n ValtimoCdsModalDirective,\n TilesModule,\n LayerModule,\n NotificationModule,\n CarbonInputModule,\n ToggletipModule,\n TooltipModule,\n RemoveClassnamesDirective,\n ListColumnViewComponent,\n CaseDetailHeaderWidgetComponent,\n ObserveSizeDirective,\n QuickSearchComponent,\n CaseProcessStartModalComponent,\n CaseListActionsComponent,\n AssignmentComponent,\n ],\n exports: [CaseListComponent, CaseDetailComponent, CaseSupportingProcessStartModalComponent],\n})\nexport class CaseModule {\n static forRoot(tabsFactory: TabsFactory): ModuleWithProviders<CaseModule> {\n return {\n ngModule: CaseModule,\n providers: [CaseService, CaseBulkAssignService, {provide: TAB_MAP, useFactory: tabsFactory}],\n };\n }\n\n constructor(\n private readonly caseMenuService: CaseMenuService,\n private readonly menuService: MenuService\n ) {\n this.menuService.registerAppendMenuItemsFunction(this.caseMenuService.appendCaseMenuItems);\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/*\n * Public API Surface of dossier\n */\n\nexport * from './lib/components/case-bulk-assign-modal/case-bulk-assign-modal.component';\nexport * from './lib/components/case-detail/case-detail.component';\nexport * from './lib/components/case-detail/tab/audit/audit.component';\nexport * from './lib/components/case-detail/tab/documents/documents.component';\nexport * from './lib/components/case-detail/tab/notes/notes.component';\nexport * from './lib/components/case-detail/tab/progress/progress.component';\nexport * from './lib/components/case-detail/tab/summary/summary.component';\nexport * from './lib/components/case-list/case-list.component';\nexport * from './lib/components/case-process-start-modal/case-process-start-modal.component';\nexport * from './lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component';\nexport * from './lib/components/case-list-actions/case-list-actions.component';\nexport * from './lib/constants';\nexport * from './lib/case.module';\nexport * from './lib/services/case.service';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["PERMISSION_ACTION","i2","i3","i1","i2.CaseListService","i5.CaseParameterService","i2.CaseParameterService","i3.CaseService","i4","i1.CaseListService","i3.CaseParameterService","i7","i8","i5","i6","switchMap","map","i3.CaseDetailTabS3DocumentsComponent","tap","take","i2.NotesService","i9","i10.NoteModalComponent","i1.CaseTabService","catchError","i3.WidgetsService","i4.CaseTabService","i4.CaseWidgetsApiService","i1.WidgetsService","i3.CaseWidgetsApiService","i4.WidgetsService","i3.CaseTabService","i2.CaseTabService","i2.CaseWidgetsApiService","i3.CaseTabApiService","i4.CaseListSearchService","filter","isEqual","i1.CaseBulkAssignService","i6.CaseDetailLayoutService","i10","i11","i12","i1.CaseHeaderWidgetApiService","i13","i14","i15.CaseDetailTaskListComponent","i16.CaseDetailsTaskDetailComponent","i18.CaseDetailHeaderWidgetComponent","i19.CaseSupportingProcessStartModalComponent","i20.TabTranslatePipe","i6.CaseListService","i6.StartModalService","i8.CaseListActionsComponent","i9.CaseBulkAssignModalComponent","i10.CaseListTabsComponent","i11.CaseListToolbarComponent","i1.CaseService","i10.CaseListActionsComponent","i11.CaseBulkAssignModalComponent","i12.CaseListTabsComponent","i13.CaseListToolbarComponent","i1.CaseMenuService","ModalModule","InputModule","VFormModule","CarbonButtonModule","CarbonModalModule","CarbonSelectModule","CarbonInputModule"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-case.mjs","sources":["../../../../projects/valtimo/case/src/lib/permissions/case-detail.permissions.ts","../../../../projects/valtimo/case/src/lib/permissions/index.ts","../../../../projects/valtimo/case/src/lib/services/case-bulk-assign.service.ts","../../../../projects/valtimo/case/src/lib/services/case-column.service.ts","../../../../projects/valtimo/case/src/lib/services/case-parameter.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-assignee.service.ts","../../../../projects/valtimo/case/src/lib/services/case.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-pagination.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-search.service.ts","../../../../projects/valtimo/case/src/lib/models/candidate-user.model.ts","../../../../projects/valtimo/case/src/lib/models/case-detail-tab.model.ts","../../../../projects/valtimo/case/src/lib/models/case-parameters.model.ts","../../../../projects/valtimo/case/src/lib/models/search.model.ts","../../../../projects/valtimo/case/src/lib/models/tab-api.model.ts","../../../../projects/valtimo/case/src/lib/models/tabs.model.ts","../../../../projects/valtimo/case/src/lib/models/case-detail-layout.model.ts","../../../../projects/valtimo/case/src/lib/models/case-sse-event.model.ts","../../../../projects/valtimo/case/src/lib/models/index.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/summary/summary.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/summary/summary.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/progress/progress.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/progress/progress.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/audit/audit.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/audit/audit.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/not-found/not-found.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/not-found/not-found.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/s3-documents/s3-documents.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/s3-documents/s3-documents.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/documents/documents.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/documents/documents.component.html","../../../../projects/valtimo/case/src/lib/services/notes.service.ts","../../../../projects/valtimo/case/src/lib/components/note-modal/note-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/note-modal/note-modal.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/notes/notes.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/notes/notes.component.html","../../../../projects/valtimo/case/src/lib/constants/tab.ts","../../../../projects/valtimo/case/src/lib/constants/case-tab-token.ts","../../../../projects/valtimo/case/src/lib/constants/case-list.constants.ts","../../../../projects/valtimo/case/src/lib/constants/case-status.constants.ts","../../../../projects/valtimo/case/src/lib/constants/case-widget.constants.ts","../../../../projects/valtimo/case/src/lib/constants/case-detail-layout.constants.ts","../../../../projects/valtimo/case/src/lib/constants/index.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/formio/formio.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/formio/formio.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.permissions.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/widget-process/widget-process.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.service.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/field/case-widget-field.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/field/case-widget-field.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/custom/case-widget-custom.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/custom/case-widget-custom.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/formio/case-widget-formio.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/formio/case-widget-formio.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/table/case-widget-table.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/table/case-widget-table.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/map/case-widget-map.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/map/case-widget-map.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/person-card/case-widget-person-card.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/person-card/case-widget-person-card.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/metroline/case-widget-metroline.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/metroline/case-widget-metroline.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/highlight/case-widget-highlight.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/components/highlight/case-widget-highlight.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/tab/widgets/widgets.component.html","../../../../projects/valtimo/case/src/lib/services/case-tab-api.service.ts","../../../../projects/valtimo/case/src/lib/services/case-tab.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-status.service.ts","../../../../projects/valtimo/case/src/lib/services/start-modal.service.ts","../../../../projects/valtimo/case/src/lib/services/case-widgets-api.service.ts","../../../../projects/valtimo/case/src/lib/services/case-detail-layout.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-case-tag.service.ts","../../../../projects/valtimo/case/src/lib/services/case-export.service.ts","../../../../projects/valtimo/case/src/lib/services/case-menu.service.ts","../../../../projects/valtimo/case/src/lib/services/case-header-widget-api.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-hidden-columns.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-quick-search.service.ts","../../../../projects/valtimo/case/src/lib/services/case-list-orchestration.service.ts","../../../../projects/valtimo/case/src/lib/services/index.ts","../../../../projects/valtimo/case/src/lib/components/case-bulk-assign-modal/case-bulk-assign-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/case-bulk-assign-modal/case-bulk-assign-modal.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail-task-list/case-detail-task-list.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail-task-list/case-detail-task-list.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail-task-detail/case-detail-task-detail.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail-task-detail/case-detail-task-detail.component.html","../../../../projects/valtimo/case/src/lib/components/case-detail-header-widget/case-detail-header-widget.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail-header-widget/case-detail-header-widget.component.html","../../../../projects/valtimo/case/src/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.html","../../../../projects/valtimo/case/src/lib/pipes/tab-translate/tab-translate.pipe.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/case-detail.component.ts","../../../../projects/valtimo/case/src/lib/components/case-detail/case-detail.component.html","../../../../projects/valtimo/case/src/lib/components/case-process-start-modal/case-process-start-modal.component.ts","../../../../projects/valtimo/case/src/lib/components/case-process-start-modal/case-process-start-modal.component.html","../../../../projects/valtimo/case/src/lib/components/case-list-actions/case-list-actions.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list-actions/case-list-actions.component.html","../../../../projects/valtimo/case/src/lib/components/case-list-tabs/case-list-tabs.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list-tabs/case-list-tabs.component.html","../../../../projects/valtimo/case/src/lib/components/case-list-toolbar/case-list-toolbar.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list-toolbar/case-list-toolbar.component.html","../../../../projects/valtimo/case/src/lib/components/case-list/case-list.component.ts","../../../../projects/valtimo/case/src/lib/components/case-list/case-list.component.html","../../../../projects/valtimo/case/src/lib/components/case-update/case-update.component.ts","../../../../projects/valtimo/case/src/lib/components/case-update/case-update.component.html","../../../../projects/valtimo/case/src/lib/components/generic-case-list/generic-case-list.component.ts","../../../../projects/valtimo/case/src/lib/components/generic-case-list/generic-case-list.component.html","../../../../projects/valtimo/case/src/lib/case-routing.module.ts","../../../../projects/valtimo/case/src/lib/pipes/tab-translate/tab-translate-pipe.module.ts","../../../../projects/valtimo/case/src/lib/pipes/tab-translate/index.ts","../../../../projects/valtimo/case/src/lib/pipes/index.ts","../../../../projects/valtimo/case/src/lib/case.module.ts","../../../../projects/valtimo/case/src/public_api.ts","../../../../projects/valtimo/case/src/valtimo-case.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 {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n add = 'create',\n assign = 'assign',\n claim = 'claim',\n delete = 'delete',\n edit = 'modify',\n view = 'view',\n export = 'export',\n}\n\nenum CASE_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n note = 'com.ritense.note.domain.Note',\n jsonSchemaDocumentDefinition = 'com.ritense.document.domain.impl.JsonSchemaDocumentDefinition',\n}\n\nconst CAN_CLAIM_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.claim,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_ADD_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_DELETE_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_EDIT_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.edit,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_ASSIGN_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_CREATE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_DELETE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_EXPORT_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.export,\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nexport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n CAN_VIEW_CASE_PERMISSION,\n CAN_CREATE_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n CAN_EXPORT_CASE_PERMISSION,\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 './case-detail.permissions';\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 {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {CandidateUser} from '../models';\n\n@Injectable()\nexport class CaseBulkAssignService {\n private _valtimoEndpointUri: string;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}v1/document/`;\n }\n\n public bulkAssign(documentIds: string[], assigneeId?: string, assignedTeamKey?: string): Observable<void> {\n return this.http.post<void>(`${this._valtimoEndpointUri}assign`, {assigneeId, assignedTeamKey, documentIds});\n }\n\n public loadCandidateUsers(documentIds: string[]): Observable<CandidateUser[]> {\n return this.http.post<CandidateUser[]>(`${this._valtimoEndpointUri}candidate-user`, {\n documentIds: documentIds,\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 {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport {CaseListColumn, DocumentService} from '@valtimo/document';\nimport {ListField} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Injectable()\nexport class CaseColumnService {\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public getDefinitionColumns(\n caseDefinitionKey: string\n ): Observable<{columns: Array<DefinitionColumn>; hasApiConfig: boolean}> {\n const defaultDefinitionTable = this.configService.config.defaultDefinitionTable;\n\n return combineLatest([\n this.documentService.getCaseList(caseDefinitionKey),\n this.configService.getFeatureToggleObservable('caseListColumn', true),\n ]).pipe(\n map(([caseListColumns, caseListColumnEnabled]) => {\n const apiCaseListColumns =\n caseListColumnEnabled &&\n caseListColumns &&\n Array.isArray(caseListColumns) &&\n caseListColumns.length > 0 &&\n this.mapCaseListColumnsToDefinitionColumns(caseListColumns);\n\n return {\n columns: apiCaseListColumns || defaultDefinitionTable,\n hasApiConfig: !!apiCaseListColumns,\n };\n })\n );\n }\n\n public mapDefinitionColumnsToListFields(\n columns: Array<DefinitionColumn>,\n hasApiColumnConfig: boolean\n ): Array<ListField> {\n return columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key: !hasApiColumnConfig ? column.propertyName : column.translationKey,\n label: column.title || validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n ...(column.format && {format: column.format}),\n ...(column.tagAmount && {tagAmount: column.tagAmount}),\n ...(column.default && {default: column.default}),\n };\n });\n }\n\n private mapCaseListColumnsToDefinitionColumns(\n caseListColumns: Array<CaseListColumn>\n ): Array<DefinitionColumn> {\n return caseListColumns.map(caseListColumn => ({\n translationKey: caseListColumn.key,\n sortable: caseListColumn.sortable,\n default: caseListColumn.defaultSort,\n viewType: this.getViewType(caseListColumn.displayType.type),\n propertyName: this.getPropertyName(caseListColumn.path),\n ...(caseListColumn.title && {title: caseListColumn.title}),\n ...(caseListColumn?.displayType?.displayTypeParameters?.enum && {\n enum: caseListColumn.displayType.displayTypeParameters.enum as any,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.dateFormat && {\n format: caseListColumn.displayType?.displayTypeParameters?.dateFormat,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.tagAmount && {\n tagAmount: caseListColumn.displayType?.displayTypeParameters?.tagAmount,\n }),\n }));\n }\n\n private getViewType(caseListColumnDisplayType: string): string {\n switch (caseListColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return caseListColumnDisplayType;\n }\n }\n\n private getPropertyName(caseListColumnPath: string): string {\n return caseListColumnPath.replace('doc:', '$.').replace('case:', '');\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, OnDestroy} from '@angular/core';\nimport {CaseParameters} from '../models';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n Subscription,\n take,\n} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AssigneeFilter, Direction, SearchFieldValues} from '@valtimo/shared';\nimport {Pagination} from '@valtimo/components';\n\n@Injectable()\nexport class CaseParameterService implements OnDestroy {\n private readonly _caseParameters$ = new BehaviorSubject<CaseParameters>(undefined);\n private readonly _searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n\n public get caseParameters$(): Observable<CaseParameters> {\n return this._caseParameters$.asObservable();\n }\n\n public get searchFieldValues$(): Observable<SearchFieldValues> {\n return this._searchFieldValues$.asObservable();\n }\n\n public get querySearchParams$(): Observable<SearchFieldValues> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params.search) return JSON.parse(atob(params.search)) as SearchFieldValues;\n\n return {};\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryPaginationParams$(): Observable<Pagination | null> {\n return this.route.queryParams.pipe(\n map(params => {\n const paramsCopy = {...params} as any as CaseParameters;\n\n return paramsCopy.collectionSize\n ? {\n collectionSize: Number(paramsCopy.collectionSize),\n page: Number(paramsCopy.page),\n size: Number(paramsCopy.size),\n ...(paramsCopy.isSorting === 'true' && {\n sort: {\n isSorting: !!(paramsCopy.isSorting === 'true'),\n state: {\n name: paramsCopy.sortStateName,\n direction: paramsCopy.sortStateDirection as Direction,\n },\n },\n }),\n }\n : null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryAssigneeParam$(): Observable<AssigneeFilter> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.assignee) {\n return params?.assignee?.toUpperCase();\n }\n return '';\n }),\n distinctUntilChanged((prevParams, currParams) => prevParams === currParams)\n );\n }\n\n public get queryStatusParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.status) {\n return JSON.parse(atob(params.status)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryCaseTagsParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.casetags) {\n return JSON.parse(atob(params.casetags)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n private _caseParametersSubscription!: Subscription;\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {\n this.setCaseParameters();\n }\n\n public ngOnDestroy(): void {\n this._caseParametersSubscription?.unsubscribe();\n }\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._searchFieldValues$.next(searchFieldValues);\n }\n\n public setSearchParameters(searchParameters: SearchFieldValues): void {\n this._caseParameters$.pipe(take(1)).subscribe(caseParameters => {\n if (Object.keys(searchParameters || {}).length > 0) {\n this._caseParameters$.next({\n ...caseParameters,\n ...this.getSearchParameter('search', searchParameters),\n });\n } else {\n if (caseParameters?.search) {\n delete caseParameters.search;\n }\n this._caseParameters$.next(caseParameters);\n }\n });\n }\n\n public setPaginationParameters(pagination: Pagination): void {\n if (pagination) {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._caseParameters$.next({\n ...dossierParameters,\n size: `${pagination.size}`,\n collectionSize: `${pagination.collectionSize}`,\n page: `${pagination.page}`,\n isSorting: pagination.sort?.isSorting ? 'true' : 'false',\n ...(pagination.sort?.state?.name && {sortStateName: `${pagination.sort?.state.name}`}),\n ...(pagination.sort?.state?.direction && {\n sortStateDirection: `${pagination.sort?.state.direction}`,\n }),\n });\n });\n }\n }\n\n public setAssigneeParameter(assigneeFilter: AssigneeFilter): void {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._caseParameters$.next({\n ...dossierParameters,\n assignee: assigneeFilter.toLowerCase(),\n });\n });\n }\n\n public setStatusParameter(statusKeyParameters: string[]): void {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((statusKeyParameters || []).length > 0) {\n this._caseParameters$.next({\n ...dossierParameters,\n ...this.getSearchParameter('status', statusKeyParameters),\n });\n } else {\n if (dossierParameters?.status) {\n delete dossierParameters.status;\n }\n this._caseParameters$.next(dossierParameters);\n }\n });\n }\n\n public setCaseTagParameter(caseTagKeyParameters: string[]): void {\n this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((caseTagKeyParameters || []).length > 0) {\n this._caseParameters$.next({\n ...dossierParameters,\n ...this.getSearchParameter('casetags', caseTagKeyParameters),\n });\n } else {\n if (dossierParameters?.casetags) {\n delete dossierParameters.casetags;\n }\n this._caseParameters$.next(dossierParameters);\n }\n });\n }\n\n public clearSearchFieldValues(): void {\n this._searchFieldValues$.next({});\n }\n\n public clearParameters(): void {\n this._caseParameters$.next(undefined);\n this.router.navigate([this.getUrlWithoutParams()], {replaceUrl: true});\n }\n\n public getSearchParameter(\n searchParamKey: string,\n parameters: string[] | SearchFieldValues\n ): {[key: string]: string} {\n return {[searchParamKey]: this.objectToBase64(parameters)};\n }\n\n public getSearchObject(searchQuery: string): object {\n return this.base64ToObject(searchQuery);\n }\n\n private openDossierParametersSubscription(): void {\n this._caseParametersSubscription = this.caseParameters$.subscribe(dossierParams => {\n this.router.navigate([this.getUrlWithoutParams()], {\n queryParams: dossierParams,\n replaceUrl: true,\n });\n });\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private base64ToObject(string: string): object {\n return JSON.parse(atob(string));\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 public setCaseParameters(): void {\n combineLatest([\n this.queryPaginationParams$,\n this.querySearchParams$,\n this.queryAssigneeParam$,\n this.queryStatusParams$,\n this.queryCaseTagsParams$,\n ])\n .pipe(take(1))\n .subscribe(\n ([paginationParams, searchParams, assigneeParams, statusParams, caseTagParams]) => {\n if (paginationParams) this.setPaginationParameters(paginationParams);\n if (assigneeParams) this.setAssigneeParameter(assigneeParams);\n if (statusParams) this.setStatusParameter(statusParams);\n if (caseTagParams) this.setCaseTagParameter(caseTagParams);\n if (searchParams) {\n this.setSearchParameters(searchParams);\n this.setSearchFieldValues(searchParams);\n }\n\n this.openDossierParametersSubscription();\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 */\nimport {Injectable} from '@angular/core';\nimport {Documents, SpecifiedDocuments} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, take} from 'rxjs';\n\n@Injectable()\nexport class CaseListService {\n private readonly _caseDefinitionKey$ = new BehaviorSubject<string>('');\n\n private readonly _checkRefresh$ = new BehaviorSubject<boolean>(false);\n private readonly _forceRefresh$ = new BehaviorSubject<boolean>(false);\n\n public get caseDefinitionKey$(): Observable<string> {\n return this._caseDefinitionKey$.asObservable();\n }\n\n get checkRefresh$(): Observable<boolean> {\n return this._checkRefresh$.asObservable();\n }\n\n get forceRefresh$(): Observable<boolean> {\n return this._forceRefresh$.asObservable();\n }\n\n public setCaseDefinitionKey(caseDefinitionKey: string): void {\n this._caseDefinitionKey$.next(caseDefinitionKey);\n }\n\n public mapDocuments(documents: Documents | SpecifiedDocuments, hasApiColumnConfig: boolean) {\n if (!hasApiColumnConfig) {\n return (documents as Documents).content.map(document => {\n const {content, ...others} = document;\n return {...content, ...others};\n });\n }\n\n return (documents as SpecifiedDocuments).content.reduce((acc, curr) => {\n const propsObject = {id: curr.id, locked: curr.locked};\n curr.items?.forEach(item => {\n propsObject[item.key] = item.value;\n });\n return [...acc, propsObject];\n }, []);\n }\n\n public forceRefresh(): void {\n this._forceRefresh$.pipe(take(1)).subscribe(forceRefresh => {\n this._forceRefresh$.next(!forceRefresh);\n });\n }\n\n public checkRefresh(): void {\n this._checkRefresh$.pipe(take(1)).subscribe(checkRefresh => {\n this._checkRefresh$.next(!checkRefresh);\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 {BehaviorSubject, Subject, map, Observable, of, switchMap, take, tap, combineLatest} from 'rxjs';\nimport {CaseListService} from './case-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {AssigneeFilter, ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField} from '@valtimo/components';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListAssigneeService {\n private readonly ASSIGNEE_KEY = 'assigneeFullName';\n private readonly _defaultAssigneeFilter$ = new Subject<AssigneeFilter>();\n private readonly _assigneeFilter$ = new BehaviorSubject<AssigneeFilter | null>(null);\n\n public readonly canHaveAssignee$: Observable<boolean> =\n this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.documentService.getCaseSettings(caseDefinitionKey)\n : of({canHaveAssignee: false})\n ),\n map(caseSettings => caseSettings?.canHaveAssignee),\n tap(canHaveAssignee => {\n const visibleTabs: AssigneeFilter[] = this.configService.config.visibleCaseListTabs ?? [];\n\n this._defaultAssigneeFilter$.next(\n !!visibleTabs && canHaveAssignee ? visibleTabs[0] : 'ALL'\n );\n })\n );\n\n public get assigneeFilter$(): Observable<AssigneeFilter | null> {\n return this._assigneeFilter$.asObservable();\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly caseListService: CaseListService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public resetAssigneeFilter(): void {\n combineLatest([this.caseParameterService.queryAssigneeParam$, this._defaultAssigneeFilter$])\n .pipe(take(1))\n .subscribe(([assigneeParam, defaultAssigneeFilter]) => {\n if (assigneeParam) {\n this._assigneeFilter$.next(assigneeParam);\n this.caseParameterService.setAssigneeParameter(assigneeParam);\n } else {\n this._assigneeFilter$.next(defaultAssigneeFilter);\n this.caseParameterService.setAssigneeParameter(defaultAssigneeFilter);\n }\n });\n }\n\n public setAssigneeFilter(assigneeFilter: AssigneeFilter): void {\n this._assigneeFilter$.next(assigneeFilter);\n this.caseParameterService.setAssigneeParameter(assigneeFilter);\n }\n\n public filterAssigneeColumns(\n columns: Array<DefinitionColumn>,\n canHaveAssignee: boolean\n ): Array<DefinitionColumn> {\n return columns.filter(column => {\n if (column?.key === this.ASSIGNEE_KEY && !canHaveAssignee) {\n return false;\n }\n return true;\n });\n }\n\n public addAssigneeListField(\n columns: Array<DefinitionColumn>,\n listFields: Array<ListField>,\n canHaveAssignee: boolean\n ): Array<ListField> {\n return [\n ...listFields,\n ...(canHaveAssignee && !columns.find(column => column.propertyName === this.ASSIGNEE_KEY)\n ? [\n {\n key: this.ASSIGNEE_KEY,\n label: this.translateService.instant(`fieldLabels.${this.ASSIGNEE_KEY}`),\n sortable: true,\n viewType: 'string',\n },\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 */\nimport {Injectable} from '@angular/core';\nimport {Direction, SortState} from '@valtimo/components';\nimport {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseService {\n private readonly definitions: any;\n private readonly _refreshDocument$ = new BehaviorSubject<null>(null);\n\n constructor(private readonly configService: ConfigService) {\n this.definitions = this.configService.config.definitions;\n }\n\n public getImplementationEnvironmentDefinitions(name: string) {\n return this.definitions.cases.find(definition => definition.name === name);\n }\n\n public getInitialSortState(columns: Array<DefinitionColumn>): SortState {\n const defaultColumn = columns.find(column => column.default);\n const isSorting = defaultColumn?.default === 'ASC' || defaultColumn?.default === 'DESC';\n const direction: Direction =\n typeof !defaultColumn || defaultColumn.default === 'boolean'\n ? 'DESC'\n : (defaultColumn.default as any as Direction);\n\n return {\n isSorting,\n state: {\n name: defaultColumn ? defaultColumn.propertyName : columns[0].propertyName,\n direction,\n },\n };\n }\n\n public get refreshDocument$(): Observable<any> {\n return this._refreshDocument$.asObservable();\n }\n\n public refresh(): void {\n this._refreshDocument$.next(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, combineLatest, filter, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {Pagination} from '@valtimo/components';\nimport {NGXLogger} from 'ngx-logger';\nimport {CaseParameterService} from './case-parameter.service';\nimport {DefinitionColumn, UserSettingsService} from '@valtimo/shared';\nimport {CaseService} from './case.service';\nimport {Documents, SortState, SpecifiedDocuments} from '@valtimo/document';\n\n@Injectable()\nexport class CaseListPaginationService {\n private readonly DEFAULT_PAGINATION: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n sort: undefined,\n };\n\n private _caseDefinitionKey: string;\n\n private readonly _pagination$ = new BehaviorSubject<Pagination | undefined>(undefined);\n\n private readonly _paginationCopy$ = this._pagination$.pipe(\n filter(pagination => !!pagination),\n map(pagination => pagination && JSON.parse(JSON.stringify(pagination))),\n tap(pagination => this.caseParameterService.setPaginationParameters(pagination))\n );\n\n public get pagination$(): Observable<Pagination> {\n return this._paginationCopy$;\n }\n\n constructor(\n private readonly logger: NGXLogger,\n private readonly caseParameterService: CaseParameterService,\n private readonly caseService: CaseService,\n private readonly userSettingsService: UserSettingsService\n ) {}\n\n public pageChange(newPage: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.page !== newPage) {\n this.logger.debug(`Page change: ${newPage}`);\n this._pagination$.next({...pagination, page: newPage});\n }\n });\n }\n\n public pageSizeChange(newPageSize: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.size !== newPageSize) {\n const amountOfAvailablePages = Math.ceil(+pagination.collectionSize / newPageSize);\n const newPage =\n amountOfAvailablePages < pagination.page ? amountOfAvailablePages : pagination.page;\n\n this.logger.debug(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);\n this._pagination$.next({...pagination, size: newPageSize, page: newPage});\n this.savePageSizePreference(newPageSize);\n }\n });\n }\n\n public sortChanged(newSortState: SortState): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && JSON.stringify(pagination.sort) !== JSON.stringify(newSortState)) {\n this.logger.debug(`Sort state change: ${JSON.stringify(newSortState)}`);\n this._pagination$.next({...pagination, sort: newSortState});\n }\n });\n }\n\n public setPage(newPageNumber: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (!pagination) return;\n this._pagination$.next({...pagination, page: newPageNumber});\n });\n }\n\n public setCollectionSize(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.collectionSize !== documents.totalElements) {\n this._pagination$.next({...pagination, collectionSize: documents.totalElements});\n }\n });\n }\n\n public checkPage(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination) {\n const amountOfItems = documents.totalElements;\n const amountOfPages = Math.ceil(amountOfItems / pagination.size);\n const currentPage = pagination.page;\n\n if (!!amountOfItems && !currentPage) {\n this._pagination$.next({...pagination, page: 1});\n return;\n }\n\n if (currentPage > amountOfPages) {\n this._pagination$.next({...pagination, page: amountOfPages});\n }\n }\n });\n }\n\n public clearPagination(): void {\n this._pagination$.next(undefined);\n }\n\n public setPagination(columns: Array<DefinitionColumn>, caseDefinitionKey: string): void {\n this._caseDefinitionKey = caseDefinitionKey;\n\n combineLatest([\n this.caseParameterService.queryPaginationParams$.pipe(take(1)),\n this.userSettingsService.getUserSettings().pipe(take(1)),\n ]).subscribe(([queryPaginationParams, userSettings]) => {\n const defaultPagination: Pagination = this.getDefaultPagination(columns);\n\n if (queryPaginationParams) {\n this._pagination$.next(queryPaginationParams);\n } else {\n const savedSize = userSettings?.caseListPageSizes?.[caseDefinitionKey];\n const pagination = savedSize\n ? {...defaultPagination, size: savedSize}\n : defaultPagination;\n this._pagination$.next(pagination);\n }\n\n this.logger.debug(`Set pagination: ${JSON.stringify(this._pagination$.getValue())}`);\n });\n }\n\n private getDefaultPagination(columns: Array<DefinitionColumn>): Pagination {\n const defaultSortState = this.caseService.getInitialSortState(columns);\n\n return {\n ...this.DEFAULT_PAGINATION,\n sort: defaultSortState,\n };\n }\n\n private savePageSizePreference(size: number): void {\n if (!this._caseDefinitionKey) return;\n\n const caseDefinitionKey = this._caseDefinitionKey;\n this.userSettingsService.getUserSettings().pipe(\n take(1),\n switchMap(settings => {\n const pageSizes = {...(settings?.caseListPageSizes || {}), [caseDefinitionKey]: size};\n return this.userSettingsService.saveUserSettings({...settings, caseListPageSizes: pageSizes});\n })\n ).subscribe();\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 {Observable, of, switchMap} from 'rxjs';\nimport {SearchField, SearchFieldValues, SearchFilter, SearchFilterRange} from '@valtimo/shared';\nimport {CaseListService} from './case-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListSearchService {\n private readonly _documentSearchFields$: Observable<Array<SearchField> | null> =\n this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.documentService.getDocumentSearchFields(caseDefinitionKey)\n : of([])\n )\n );\n\n public get documentSearchFields$(): Observable<Array<SearchField> | null> {\n return this._documentSearchFields$;\n }\n\n constructor(\n private readonly caseListService: CaseListService,\n private readonly documentService: DocumentService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.caseParameterService.setSearchFieldValues(searchFieldValues || {});\n this.caseParameterService.setSearchParameters(searchFieldValues);\n this.caseListService.checkRefresh();\n }\n\n public mapSearchValuesToFilters(\n values: SearchFieldValues\n ): Array<SearchFilter | SearchFilterRange> {\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});\n } else {\n filters.push({key: valueKey, values: [searchValue]});\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\ninterface CandidateUser {\n id: string;\n firstName: string;\n lastName: string;\n}\n\ninterface BulkAssign {\n ids: string[];\n assigneeId?: string;\n assignedTeamKey?: string;\n}\n\nexport {CandidateUser, BulkAssign};\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 {Type} from '@angular/core';\n\nenum DefaultTabs {\n summary = 'summary',\n progress = 'progress',\n audit = 'audit',\n documents = 'documents',\n notes = 'notes',\n}\n\ntype DefaultTabComponents = {\n [key in DefaultTabs]: Type<any>;\n};\n\ninterface CaseTabConfig {\n [tabKey: string]: Type<any>;\n}\n\nexport {DefaultTabs, DefaultTabComponents, CaseTabConfig};\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\ninterface PaginationParameters {\n collectionSize: string;\n page: string;\n size: string;\n sortStateName: string;\n sortStateDirection: string;\n isSorting: 'true' | 'false';\n}\n\ninterface CaseParameters extends PaginationParameters {\n search?: string;\n assignee?: string;\n status?: string;\n casetags?: string;\n}\n\nexport {CaseParameters};\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\ntype CaseSearchFieldDataType = 'text' | 'number' | 'date' | 'datetime' | 'boolean';\n\ntype CaseSearchFieldFieldType = 'single' | 'multiple' | 'range';\n\ntype CaseSearchFieldMatchType = 'exact' | 'like';\n\ninterface CaseSearchField {\n key: string;\n datatype: CaseSearchFieldDataType;\n fieldtype: CaseSearchFieldFieldType;\n matchtype: CaseSearchFieldMatchType;\n}\n\nexport {\n CaseSearchFieldDataType,\n CaseSearchFieldFieldType,\n CaseSearchFieldMatchType,\n CaseSearchField,\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 ApiTabType {\n STANDARD = 'standard',\n FORMIO = 'formio',\n CUSTOM = 'custom',\n WIDGETS = 'widgets',\n MAP = 'map',\n}\n\ninterface ApiTabItem {\n name: string | null;\n key: string;\n type: ApiTabType;\n contentKey: string;\n createdOn?: string;\n createdBy?: string;\n showTasks?: boolean;\n}\n\ninterface TabSelectItem {\n icon: string;\n title: string;\n type: ApiTabType;\n disabled: boolean;\n disabledTooltipTranslationKey?: string;\n}\n\nexport {ApiTabType, ApiTabItem, TabSelectItem};\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 {ComponentFactoryResolver, ComponentRef, ViewContainerRef} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {BehaviorSubject, combineLatest, filter, Observable, take} from 'rxjs';\n\nexport interface TabLoader<T_TAB extends Tab> {\n tabs: T_TAB[];\n\n initial(tabName?: string): void;\n\n load(tabToLoad: T_TAB): void;\n}\n\nexport class TabLoaderImpl implements TabLoader<TabImpl> {\n private readonly _activeTab$ = new BehaviorSubject<TabImpl | null>(null);\n private readonly _tabs: TabImpl[] = null;\n private readonly _componentFactoryResolver: ComponentFactoryResolver = null;\n private readonly _viewContainerRef: ViewContainerRef = null;\n private _activeComponent: ComponentRef<any> = null;\n private _activeTab: TabImpl = null;\n private _router: Router;\n private _route: ActivatedRoute;\n\n constructor(\n tabs: TabImpl[],\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n router: Router,\n route: ActivatedRoute\n ) {\n this._tabs = tabs;\n this._componentFactoryResolver = componentFactoryResolver;\n this._viewContainerRef = viewContainerRef;\n this._router = router;\n this._route = route;\n }\n\n public get tabs(): TabImpl[] {\n return this._tabs;\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._activeTab$.pipe(filter(tab => !!tab));\n }\n\n public initial(tabName?: string): void {\n let initialTab!: TabImpl;\n\n if (tabName) {\n initialTab =\n this._tabs.find(tab => tab.name === tabName) ||\n this._tabs.find(tab => tab.contentKey === tabName);\n }\n\n if (!initialTab) {\n initialTab = this._tabs[0] || null;\n }\n\n this.load(initialTab);\n }\n\n public load(newTab: TabImpl): void {\n if (newTab !== this._activeTab) {\n this._tabs.forEach(tab => tab.deactivate());\n this.replaceView(newTab);\n this.replaceUrlState(newTab);\n this.setActive(newTab);\n }\n }\n\n public refreshView() {\n this.replaceView(this._activeTab);\n }\n\n private replaceView(tab: TabImpl): void {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(tab.component);\n this._viewContainerRef.clear();\n if (this._activeTab !== null) {\n this._activeComponent.destroy();\n }\n this._activeComponent = this._viewContainerRef.createComponent(componentFactory);\n }\n\n public replaceUrlState(nextTab: TabImpl): void {\n combineLatest([this._route.params, this._route.queryParams])\n .pipe(take(1))\n .subscribe(([params, queryParams]) => {\n const currentUrl = this._router.url;\n const currentDocumentId = params?.documentId;\n const urlBeforeDocumentId = currentUrl.split(currentDocumentId)[0];\n\n this._router.navigate([`${urlBeforeDocumentId}${currentDocumentId}/${nextTab.name}`], {\n ...(nextTab.name === 'documents' && {\n queryParams,\n }),\n replaceUrl: true,\n });\n });\n }\n\n private setActive(tab: TabImpl): void {\n tab.activate();\n this._activeTab = tab;\n this._activeTab$.next(tab);\n }\n}\n\nexport interface Tab {\n name: string;\n sequence: number;\n component: any;\n title: string;\n contentKey: string;\n\n activate(): void;\n\n deactivate(): void;\n\n isActive(): boolean;\n}\n\nexport class TabImpl implements Tab {\n private readonly _name: string;\n private readonly _sequence: number;\n private readonly _component: any;\n private readonly _contentKey: string;\n private readonly _title: string;\n private _active = false;\n private _showTasks = false;\n\n constructor(\n name: string,\n sequence: number,\n component: any,\n contentKey?: string,\n title?: string,\n showTasks: boolean = false\n ) {\n this._name = name;\n this._sequence = sequence;\n this._component = component;\n\n if (contentKey) this._contentKey = contentKey;\n if (title) this._title = title;\n if (showTasks) this._showTasks = showTasks;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get sequence(): number {\n return this._sequence;\n }\n\n public get component(): any {\n return this._component;\n }\n\n public get contentKey(): string {\n return this._contentKey;\n }\n\n public get title(): string {\n return this._title;\n }\n\n public get showTasks(): boolean {\n return this._showTasks;\n }\n\n public activate(): void {\n this._active = true;\n }\n\n public deactivate(): void {\n this._active = false;\n }\n\n public isActive(): boolean {\n return this._active;\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 {FormSize} from '@valtimo/process-link';\n\ntype CaseDetailLayoutUnit = 'pixel' | 'percent';\n\ninterface CaseDetailLayout {\n unit: CaseDetailLayoutUnit;\n widthAdjustable: boolean;\n showRightPanel?: boolean;\n leftPanelWidth?: number | '*';\n leftPanelMinWidth?: number;\n leftPanelMaxWidth?: number;\n rightPanelWidth?: number | '*';\n rightPanelMinWidth?: number;\n rightPanelMaxWidth?: number;\n}\n\ntype RightPanelMinWidths = {\n [key in FormSize]: number;\n};\n\nexport {CaseDetailLayout, CaseDetailLayoutUnit, RightPanelMinWidths};\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 DocumentUpdatedSseEvent extends BaseSseEvent {\n documentId: string;\n caseDefinitionKey: string;\n}\n\nexport {DocumentUpdatedSseEvent};\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 './candidate-user.model';\nexport * from './case-detail-tab.model';\nexport * from './case-parameters.model';\nexport * from './search.model';\nexport * from './tab-api.model';\nexport * from './tabs.model';\nexport * from './case-detail-layout.model';\nexport * from './case-sse-event.model';\nexport * from './case-list-quick-search.model';\nexport * from './case-widget.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 {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Document, DocumentService} from '@valtimo/document';\nimport {FormService} from '@valtimo/form';\nimport {FormioOptionsImpl, ValtimoFormioOptions} from '@valtimo/components';\nimport moment from 'moment';\nimport {FormioForm} from '@formio/angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n forkJoin,\n map,\n of,\n startWith,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {NotificationContent} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {catchError} from 'rxjs/operators';\nimport {DocumentUpdatedSseEvent} from '../../../../models';\nimport {SseService} from '@valtimo/sse';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n standalone: false,\n templateUrl: './summary.component.html',\n styleUrls: ['./summary.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseDetailTabSummaryComponent implements OnInit, OnDestroy {\n public readonly caseDefinitionKey: string;\n public readonly documentId!: string;\n\n private snapshot: ParamMap;\n public moment!: typeof moment;\n\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(null);\n public readonly document$ = new BehaviorSubject<Document>(null);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public options: ValtimoFormioOptions;\n\n public notificationObj$ = new BehaviorSubject<NotificationContent>(null);\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService,\n private readonly translateService: TranslateService,\n private readonly sseService: SseService\n ) {\n this.snapshot = this.route.snapshot.paramMap;\n this.caseDefinitionKey = this.snapshot.get('caseDefinitionKey') || '';\n this.documentId = this.snapshot.get('documentId') || '';\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n }\n\n public ngOnInit(): void {\n this.moment = moment;\n this.init();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public init(): void {\n this._subscriptions.add(\n this.sseService\n .getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED')\n .pipe(\n startWith(null),\n filter(event => event === null || event.documentId === this.documentId),\n switchMap(() =>\n forkJoin({\n document: this.documentService\n .getDocument(this.documentId)\n .pipe(catchError(() => of(null))),\n formDefinition: this.formService\n .getFormDefinitionByNamePreFilled(\n `${this.caseDefinitionKey}.summary`,\n this.documentId\n )\n .pipe(catchError(() => of(null))),\n })\n ),\n tap(({document, formDefinition}) => {\n this.document$.next(document);\n this.formDefinition$.next(formDefinition);\n\n if (!formDefinition || !document) {\n combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('case.summaryFormNotFound', {\n summary: this.caseDefinitionKey,\n }),\n ]).pipe(\n take(1),\n map(([title, message]) => ({\n type: 'warning' as any,\n title,\n message,\n showClose: false,\n lowContrast: true,\n })),\n tap(notificationObject => this.notificationObj$.next(notificationObject))\n );\n }\n\n this.loading$.next(false);\n })\n )\n .subscribe()\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 formDefinition: formDefinition$ | async,\n document: document$ | async,\n loading: loading$ | async,\n notificationObj: notificationObj$ | async,\n } as obs\"\n>\n @if (!obs.loading && obs.document && obs.formDefinition) {\n <valtimo-form-io\n class=\"valtimo-summary-form\"\n [form]=\"obs.formDefinition\"\n [options]=\"options\"\n ></valtimo-form-io>\n } @else if (obs.notificationObj) {\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n }\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 {Component} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {DocumentService, LoadedValue, ProcessDocumentInstance} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, switchMap, tap} from 'rxjs';\nimport {ListItem} from 'carbon-components-angular/dropdown';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-detail-tab-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.scss'],\n})\nexport class CaseDetailTabProgressComponent {\n private readonly processDocumentInstances$: Observable<Array<ProcessDocumentInstance>> =\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.findProcessDocumentInstances(params.get('documentId'))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.map(processDocumentInstance => ({\n ...processDocumentInstance,\n startedOn: new Date(processDocumentInstance.startedOn),\n }))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.sort((a, b) =>\n a.active === b.active ? b.startedOn.getTime() - a.startedOn.getTime() : a.active ? -1 : 1\n )\n ),\n tap(processDocumentInstances => {\n if (processDocumentInstances.length > 0) {\n this.selectedProcessInstanceId$.next(processDocumentInstances[0].id.processInstanceId);\n }\n })\n );\n\n public readonly processInstanceItems$: Observable<LoadedValue<Array<ListItem>>> =\n this.processDocumentInstances$.pipe(\n map(processDocumentInstances =>\n processDocumentInstances.map((processDocumentInstance, index) => ({\n processInstanceId: processDocumentInstance.id.processInstanceId,\n content: processDocumentInstance.processName || '-',\n selected: index === 0,\n }))\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n public readonly selectedProcessInstanceId$ = new BehaviorSubject<string | null>(null);\n public readonly selectedProcessInstance$: Observable<LoadedValue<ProcessDocumentInstance>> =\n combineLatest([this.processDocumentInstances$, this.selectedProcessInstanceId$]).pipe(\n map(([processDocumentInstances, selectedProcessInstanceId]) =>\n processDocumentInstances.find(\n instance => instance.id.processInstanceId === selectedProcessInstanceId\n )\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService\n ) {}\n\n public loadProcessInstance(processInstanceId: string) {\n if (!!processInstanceId) {\n this.selectedProcessInstanceId$.next(processInstanceId);\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 class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async,\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport moment from 'moment';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, AuditEvent} from '@valtimo/document';\nimport {NgxSpinnerService} from 'ngx-spinner';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n standalone: false,\n templateUrl: './audit.component.html',\n styleUrls: ['./audit.component.scss'],\n})\nexport class CaseDetailTabAuditComponent implements OnInit {\n @Output() paginationClicked: EventEmitter<any> = new EventEmitter();\n\n public timelineItems: TimelineItem[];\n public pagination: any;\n private readonly documentId: string;\n private defaultAuditPage = 0;\n private currentAuditPage: number;\n\n constructor(\n private route: ActivatedRoute,\n private documentService: DocumentService,\n private spinnerService: NgxSpinnerService\n ) {\n this.spinnerService.show('auditSpinner');\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n }\n\n private static getTranslationKey(auditEvent: AuditEvent) {\n const classNameArray = auditEvent.className.split('.');\n const eventName = classNameArray[classNameArray.length - 1];\n return 'events.' + eventName;\n }\n\n public ngOnInit(): void {\n this.loadAuditPage(this.defaultAuditPage);\n }\n\n public loadAuditPage(pageNumber: number): void {\n this.documentService.getAuditLog(this.documentId, pageNumber).subscribe(page => {\n const timelineItems: TimelineItemImpl[] = [];\n page.content.forEach(auditRecord => {\n if (\n auditRecord.auditEvent.className ===\n 'com.ritense.document.event.DocumentRetentionPeriodSetEvent'\n ) {\n const rawRetentionDate = auditRecord.auditEvent['retentionDate'];\n if (rawRetentionDate) {\n const retentionMoment = moment(rawRetentionDate);\n if (retentionMoment.isValid()) {\n auditRecord.auditEvent['retentionDate'] = retentionMoment.format('DD MMM YYYY HH:mm');\n }\n }\n }\n const occurredOn = moment(auditRecord.metaData.occurredOn);\n const fromNow = occurredOn.fromNow();\n timelineItems.push(\n new TimelineItemImpl(\n occurredOn.format('DD MMM YYYY'),\n occurredOn.format('HH:mm'),\n auditRecord.metaData.user,\n fromNow,\n CaseDetailTabAuditComponent.getTranslationKey(auditRecord.auditEvent),\n auditRecord.auditEvent,\n {id: `${auditRecord.metaData.user}-${auditRecord.metaData.occurredOn}`}\n )\n );\n });\n this.timelineItems = timelineItems;\n this.spinnerService.hide('auditSpinner');\n this.pagination = page;\n this.pagination.number += 1;\n });\n }\n\n public onChangePagination(page): void {\n this.paginationClicked.emit(page);\n this.currentAuditPage = page - 1;\n this.loadAuditPage(this.currentAuditPage);\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@if (timelineItems) {\n <valtimo-timeline [items]=\"timelineItems\"></valtimo-timeline>\n}\n\n<valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n>\n</valtimo-spinner>\n\n<div\n class=\"valtimo-audit-pagination\"\n *ngIf=\"pagination && pagination.totalElements > pagination.size\"\n>\n <div>\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.number, total: pagination.totalPages}\n }}</strong>\n\n <br />\n\n {{\n pagination.totalElements === 1\n ? ('list.showingResult' | translate: {number: pagination.content.length})\n : ('list.showingResults'\n | translate: {number: pagination.content.length, total: pagination.totalElements})\n }}\n </div>\n\n <ngb-pagination\n *ngIf=\"pagination.totalElements > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.totalElements\"\n [(page)]=\"pagination.number\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.size\"\n [rotate]=\"true\"\n (pageChange)=\"onChangePagination(pagination.number)\"\n ></ngb-pagination>\n</div>\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} from '@angular/core';\n\n@Component({\n standalone: false,\n templateUrl: './not-found.component.html',\n})\nexport class CaseDetailTabNotFoundComponent {}\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<valtimo-no-results\n [title]=\"'case.tabs.componentNotFound' | translate\"\n [description]=\"'case.tabs.componentNotFoundMessage' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n></valtimo-no-results>\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, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, FileSortService, RelatedFile} from '@valtimo/document';\nimport {DownloadService, ResourceDto, UploadProviderService} from '@valtimo/resource';\nimport {map, switchMap} from 'rxjs/operators';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService, GlobalNotificationService} from '@valtimo/shared';\nimport {PromptService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-detail-tab-s3-documents',\n templateUrl: './s3-documents.component.html',\n})\nexport class CaseDetailTabS3DocumentsComponent implements OnInit {\n public readonly documentId: string;\n public readonly caseDefinitionKey: string;\n public readonly maxFileSize: number = this.configService?.config?.caseFileSizeUploadLimitMB || 5;\n public readonly acceptedFiles: string =\n this.configService?.config?.caseFileUploadAcceptedFiles || null;\n public fields = [\n {key: 'fileName', label: 'File name'},\n {key: 'sizeInBytes', label: 'Size in bytes'},\n {key: 'createdOn', label: 'Created on', viewType: 'date'},\n {key: 'createdBy', label: 'Created by'},\n ];\n public actions = [\n {\n columnName: '',\n iconClass: 'mdi mdi-open-in-new',\n callback: this.downloadDocument.bind(this),\n },\n {\n columnName: '',\n iconClass: 'mdi mdi-delete',\n callback: this.removeRelatedFile.bind(this),\n },\n ];\n readonly uploading$ = new BehaviorSubject<boolean>(false);\n private readonly refetch$ = new BehaviorSubject<null>(null);\n public relatedFiles$: Observable<Array<RelatedFile>> = this.refetch$.pipe(\n switchMap(() =>\n combineLatest([\n this.documentService.getDocument(this.documentId),\n this.translateService.stream('key'),\n ])\n ),\n map(([document]) => {\n const relatedFiles = document?.relatedFiles || [];\n const translatedFiles = relatedFiles.map(file => ({\n ...file,\n createdBy: file.createdBy || this.translateService.instant('list.automaticallyGenerated'),\n }));\n\n return translatedFiles || [];\n }),\n map(relatedFiles => this.fileSortService.sortRelatedFilesByDateDescending(relatedFiles))\n );\n\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly downloadService: DownloadService,\n private readonly fileSortService: FileSortService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly promptService: PromptService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n private readonly uploadProviderService: UploadProviderService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n this.caseDefinitionKey = snapshot.get('caseDefinitionKey') || '';\n }\n\n ngOnInit(): void {\n this.refetchDocuments();\n }\n\n fileSelected(file: File): void {\n this.uploading$.next(true);\n\n this.uploadProviderService\n .uploadFile(file, this.caseDefinitionKey, this.documentId)\n .pipe(\n switchMap(resourceFile =>\n this.documentService.assignResource(this.documentId, resourceFile.data.resourceId)\n )\n )\n .subscribe({\n next: () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.uploadSuccessful'),\n type: 'success',\n });\n this.refetchDocuments();\n this.uploading$.next(false);\n },\n error: () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.uploadFailed'),\n type: 'error',\n });\n this.uploading$.next(false);\n },\n });\n }\n\n downloadDocument(relatedFile: RelatedFile): void {\n this.uploadProviderService\n .getResource(relatedFile.fileId)\n .subscribe((resource: ResourceDto) => {\n this.downloadService.downloadFile(resource.url, resource.resource.name);\n });\n }\n\n removeRelatedFile(relatedFile: RelatedFile) {\n this.promptService.openPrompt({\n headerText: this.translateService.instant('case.deleteConfirmation.title'),\n bodyText: this.translateService.instant('case.deleteConfirmation.description'),\n cancelButtonText: this.translateService.instant('case.deleteConfirmation.cancel'),\n confirmButtonText: this.translateService.instant('case.deleteConfirmation.delete'),\n closeOnConfirm: true,\n closeOnCancel: true,\n confirmCallBackFunction: () => {\n this.documentService.removeResource(this.documentId, relatedFile.fileId).subscribe(\n () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.removeSuccessful'),\n type: 'success',\n });\n this.refetchDocuments();\n },\n () => {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.documenten.removeFailed'),\n type: 'success',\n });\n }\n );\n },\n });\n }\n\n private refetchDocuments(): void {\n this.refetch$.next(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\n<valtimo-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"true\"\n [camera]=\"false\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<valtimo-widget>\n <valtimo-carbon-list\n [fields]=\"fields\"\n [items]=\"relatedFiles$ | async\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [actions]=\"actions\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this case' | translate }}\n </h5>\n </div>\n </valtimo-carbon-list>\n</valtimo-widget>\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 AfterViewInit,\n Component,\n HostBinding,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ConfigService,\n UploadProvider,\n ValtimoConfig,\n ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN,\n} from '@valtimo/shared';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {CaseDetailTabNotFoundComponent} from '../not-found/not-found.component';\n\n@Component({\n standalone: false,\n templateUrl: './documents.component.html',\n})\nexport class CaseDetailTabDocumentsComponent implements OnInit, AfterViewInit, OnDestroy {\n @HostBinding('class.tab--no-margin') noMargin = false;\n @HostBinding('class.tab--no-min-height') noMinHeight = false;\n\n @ViewChild('externalDocumentsTab', {read: ViewContainerRef})\n private _externalDocumentsTab: ViewContainerRef;\n\n public readonly openZaakUploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly s3UploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly documentenApiUploadProvider$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n @Optional()\n @Inject(ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN)\n private readonly zgwDocumentenApiDocumentsComponent: Type<any>\n ) {}\n\n public ngOnInit(): void {\n this.setConfig(this.configService.config);\n }\n\n public ngAfterViewInit(): void {\n this._subscriptions.add(\n this.documentenApiUploadProvider$.subscribe(uploadProviderIsDocumentenApi => {\n this.noMargin = uploadProviderIsDocumentenApi;\n this.noMinHeight = uploadProviderIsDocumentenApi;\n\n if (!uploadProviderIsDocumentenApi) return;\n\n this._externalDocumentsTab.createComponent(\n this.zgwDocumentenApiDocumentsComponent || CaseDetailTabNotFoundComponent\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private setConfig(config: ValtimoConfig): void {\n const uploadProvider = config.uploadProvider;\n this.openZaakUploadProvider$.next(uploadProvider === UploadProvider.OPEN_ZAAK);\n this.s3UploadProvider$.next(config.uploadProvider === UploadProvider.S3);\n this.documentenApiUploadProvider$.next(uploadProvider === UploadProvider.DOCUMENTEN_API);\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<valtimo-case-detail-tab-s3-documents\n *ngIf=\"(s3UploadProvider$ | async) || (openZaakUploadProvider$ | async)\"\n></valtimo-case-detail-tab-s3-documents>\n\n<ng-template #externalDocumentsTab></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 {Injectable} from '@angular/core';\nimport {ConfigService, Page} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {Note, NoteCreateRequest, NoteModal, NoteUpdateRequest} from '../models/notes.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotesService {\n private readonly VALTIMO_API_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {}\n\n public get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n public getDocumentNotes(documentId: string, params?: any): Observable<Page<Note>> {\n return this.http.get<Page<Note>>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n {params}\n );\n }\n\n public createDocumentNote(documentId: string, request: NoteCreateRequest): Observable<Note> {\n return this.http.post<Note>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n request\n );\n }\n\n public updateNote(noteId: string, request: NoteUpdateRequest): Observable<Note> {\n return this.http.put<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`, request);\n }\n\n public deleteNote(noteId: string): Observable<Note> {\n return this.http.delete<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`);\n }\n\n public refresh(): void {\n this._refresh$.next(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 {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {TimelineItem} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-note-modal',\n templateUrl: './note-modal.component.html',\n styleUrl: './note-modal.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NoteModalComponent {\n @Input() modalType: 'add' | 'modify';\n private _customData: TimelineItem | null;\n @Input() public set customData(value: TimelineItem | null) {\n this._customData = value;\n if (!value) {\n this.formGroup.reset();\n return;\n }\n\n this.formGroup.get('content')?.setValue(value.summaryTranslationKey ?? '');\n }\n @Input() public open;\n @Output() public readonly modalClosed = new EventEmitter<null | Partial<{\n id: string;\n content: string;\n }>>();\n\n public readonly formGroup = this.fb.group({\n content: this.fb.control('', Validators.required),\n });\n\n constructor(private readonly fb: FormBuilder) {}\n\n public onCancel(): void {\n this.modalClosed.emit(null);\n this.formGroup.reset();\n }\n\n public onConfirm(): void {\n const content = this.formGroup.get('content')?.value ?? '';\n this.modalClosed.emit({\n content,\n ...(!!this._customData && {id: this._customData?.customData?.['id'] ?? ''}),\n });\n this.formGroup.reset();\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 valtimoCdsModal [open]=\"open\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent>\n <cds-textarea-label>\n {{ 'case.notes.input.content' | translate }}\n\n <textarea\n cdsTextArea\n cdsLayer=\"1\"\n class=\"valtimo-note-modal__textarea\"\n formControlName=\"content\"\n [rows]=\"10\"\n ></textarea>\n </cds-textarea-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"!formGroup.valid\" cdsButton=\"primary\" (click)=\"onConfirm()\">\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </button>\n </cds-modal-footer>\n</cds-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 */\nimport {Component, HostBinding, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {Pagination, TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport {GlobalNotificationService, Page} from '@valtimo/shared';\nimport moment from 'moment';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subject} from 'rxjs';\nimport {switchMap, take, tap} from 'rxjs/operators';\nimport {Note} from '../../../../models/notes.model';\nimport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n} from '../../../../permissions';\nimport {NotesService} from '../../../../services/notes.service';\n\n@Component({\n standalone: false,\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class CaseDetailTabNotesComponent implements OnInit {\n @HostBinding('class.tab--no-margin') noMargin = true;\n\n public timelineItems: TimelineItem[] = [];\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly customData$ = new BehaviorSubject<TimelineItem | null>(null);\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly modalType$ = new Subject<'add' | 'modify'>();\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly idToDelete$ = new BehaviorSubject<string | null>(null);\n\n private readonly documentId$ = this.route.params.pipe(map(params => params.documentId));\n public readonly actions = [\n {id: 'edit', label: 'Edit', icon: 'mdi-pencil', callback: this.editNote.bind(this)},\n {id: 'delete', label: 'Delete', icon: 'mdi-delete', callback: this.deleteNote.bind(this)},\n ];\n\n public readonly canAdd$: Observable<boolean> = this.documentId$.pipe(\n switchMap((identifier: string) =>\n this.permissionService.requestPermission(CAN_ADD_NOTE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier,\n })\n )\n );\n\n public readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n page: 0,\n size: 10,\n });\n\n public readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n collectionSize: 0,\n });\n\n public readonly pagination$: Observable<Pagination> = combineLatest([\n this.currentPageAndSize$,\n this.pageSizes$,\n ]).pipe(\n map(\n ([currentPage, sizes]) =>\n ({...currentPage, ...sizes, page: (currentPage.page ?? 0) + 1}) as Pagination\n )\n );\n\n public readonly notes$: Observable<Array<Note>> = combineLatest([\n this.documentId$,\n this.currentPageAndSize$,\n this.notesService.refresh$,\n this.notesService.refresh$,\n ]).pipe(\n tap(() => (this.timelineItems = [])),\n switchMap(([documentId, currentPage]) =>\n this.notesService.getDocumentNotes(documentId, {\n page: currentPage.page,\n size: currentPage.size,\n })\n ),\n tap((res: Page<Note>) => {\n this.timelineItems = [];\n this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n this.pageSizes$.next({...sizes, collectionSize: res.totalElements});\n });\n }),\n switchMap(res =>\n combineLatest([\n of(res),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_DELETE_NOTE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_EDIT_NOTE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ])\n ),\n map(combinedResults => {\n const permissionResults = combinedResults.filter((curr, index) => index !== 0);\n const halfIndex = Math.ceil(permissionResults.length / 2);\n const deletePermissions = permissionResults.slice(0, halfIndex);\n const editPermissions = permissionResults.slice(halfIndex);\n\n return combinedResults[0].content.map((note: Note, index) => {\n const noteCreatedDate = moment(note.createdDate).locale(this.translateService.currentLang);\n this.timelineItems.push(\n new TimelineItemImpl(\n noteCreatedDate.format('DD MMM YYYY'),\n noteCreatedDate.format('HH:mm'),\n note.createdByUserFullName,\n noteCreatedDate.fromNow(),\n note.content,\n {},\n {id: note.id},\n [\n ...(editPermissions[index] ? ['edit'] : []),\n ...(deletePermissions[index] ? ['delete'] : []),\n ]\n )\n );\n return {\n ...note,\n };\n });\n }),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly notesService: NotesService,\n private readonly permissionService: PermissionService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.translateService.onLangChange.subscribe(() => {\n this.notesService.refresh();\n });\n }\n\n public paginationClicked(newPageNumber): void {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n });\n }\n\n public showAddModal(): void {\n this.customData$.next(null);\n this.modalType$.next('add');\n this.modalOpen$.next(true);\n }\n\n public editNote(data: TimelineItem): void {\n this.customData$.next(data);\n this.modalType$.next('modify');\n this.modalOpen$.next(true);\n }\n\n public onModalClosed(note: Partial<{id: string; content: string}> | null): void {\n this.modalOpen$.next(false);\n\n if (!note || !note.content) return;\n const {id, content} = note;\n\n if (!id) this.createNewNote(content);\n else this.editNoteConfirmed({id, content});\n }\n\n public onDeleteConfirm(noteId: string): void {\n this.notesService.deleteNote(noteId).subscribe(() => {\n this.notesService.refresh();\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.notes.deleteConfirmation.deletedMessage'),\n type: 'success',\n });\n });\n }\n\n private createNewNote(content): void {\n this.documentId$\n .pipe(\n take(1),\n switchMap((documentId: string) =>\n this.notesService.createDocumentNote(documentId, {content})\n )\n )\n .subscribe(() => {\n this.notesService.refresh();\n });\n }\n\n private editNoteConfirmed(note: {id: string; content: string}): void {\n this.notesService.updateNote(note.id, note).subscribe(() => {\n this.notesService.refresh();\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.notes.editedMessage'),\n type: 'success',\n });\n });\n }\n\n private deleteNote(data: TimelineItem): void {\n this.idToDelete$.next(data.customData?.['id'] ?? '');\n this.showDeleteModal$.next(true);\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 canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'case.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'case.notes.noResults.description' | translate\"\n [title]=\"'case.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n [modalType]=\"modalType$ | async\"\n [open]=\"modalOpen$ | async\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-note-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.notes.deleteConfirmation.description\"\n [outputOnConfirm]=\"idToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.notes.deleteConfirmation.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\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 {InjectionToken} from '@angular/core';\nimport {CaseDetailTabSummaryComponent} from '../components/case-detail/tab/summary/summary.component';\nimport {CaseDetailTabProgressComponent} from '../components/case-detail/tab/progress/progress.component';\nimport {CaseDetailTabAuditComponent} from '../components/case-detail/tab/audit/audit.component';\nimport {CaseDetailTabDocumentsComponent} from '../components/case-detail/tab/documents/documents.component';\nimport {DefaultTabComponents, DefaultTabs} from '../models';\nimport {CaseDetailTabNotesComponent} from '../components/case-detail/tab/notes/notes.component';\n\nconst TAB_MAP = new InjectionToken<Map<string, object>>('TabMap');\n\nconst DEFAULT_TABS = new Map<string, object>([\n [DefaultTabs.summary, CaseDetailTabSummaryComponent],\n [DefaultTabs.progress, CaseDetailTabProgressComponent],\n [DefaultTabs.audit, CaseDetailTabAuditComponent],\n [DefaultTabs.documents, CaseDetailTabDocumentsComponent],\n]);\n\nconst DEFAULT_TAB_COMPONENTS: DefaultTabComponents = {\n [DefaultTabs.summary]: CaseDetailTabSummaryComponent,\n [DefaultTabs.progress]: CaseDetailTabProgressComponent,\n [DefaultTabs.audit]: CaseDetailTabAuditComponent,\n [DefaultTabs.documents]: CaseDetailTabDocumentsComponent,\n [DefaultTabs.notes]: CaseDetailTabNotesComponent,\n};\n\nexport {TAB_MAP, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS};\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 {InjectionToken} from '@angular/core';\nimport {CaseTabConfig} from '../models';\n\nconst CASE_TAB_TOKEN = new InjectionToken<CaseTabConfig>(\n 'Specify a component to display per configured tab key.'\n);\n\nexport {CASE_TAB_TOKEN};\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 {CaseListTab} from '@valtimo/shared';\nimport {CarbonListNoResultsMessage, CarbonListTranslations} from '@valtimo/components';\n\nconst DEFAULT_CASE_LIST_TABS: CaseListTab[] = [CaseListTab.ALL, CaseListTab.MINE, CaseListTab.TEAM, CaseListTab.OPEN];\n\nconst CASE_LIST_TABLE_TRANSLATIONS: CarbonListTranslations = {\n select: {\n single: 'case.select.single',\n multiple: 'case.select.multiple',\n },\n pagination: {\n itemsPerPage: 'case.pagination.itemsPerPage',\n totalItem: 'case.pagination.totalItem',\n totalItems: 'case.pagination.totalItems',\n },\n};\n\nconst CASE_LIST_NO_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'case.noResults.ALL.description',\n isSearchResult: false,\n title: 'case.noResults.ALL.title',\n};\n\nexport {DEFAULT_CASE_LIST_TABS, CASE_LIST_TABLE_TRANSLATIONS, CASE_LIST_NO_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\nimport {CASES_WITHOUT_STATUS_KEY} from '@valtimo/components';\nimport {InternalCaseStatus} from '@valtimo/document';\nimport {TagColor} from '@valtimo/shared';\n\nconst CASE_WITHOUT_STATUS_STATUS: InternalCaseStatus = {\n key: CASES_WITHOUT_STATUS_KEY,\n documentDefinitionName: '',\n title: '',\n retentionPeriodInDays: 0,\n color: TagColor.Gray,\n visibleInCaseListByDefault: false,\n};\n\nexport {CASES_WITHOUT_STATUS_KEY, CASE_WITHOUT_STATUS_STATUS};\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\nconst WIDGET_WIDTH_1X = 320;\nconst WIDGET_HEIGHT_1X = 200;\n\nexport {WIDGET_WIDTH_1X, WIDGET_HEIGHT_1X};\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 {FormDisplayType, FormSize} from '@valtimo/process-link';\nimport {RightPanelMinWidths} from '../models';\n\nconst CASE_DETAIL_GUTTER_SIZE = 32;\n\nconst CASE_DETAIL_TASK_LIST_WIDTH = 412;\n\nconst CASE_DETAIL_LEFT_PANEL_MIN_WIDTH = 320;\n\nconst CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS: RightPanelMinWidths = {\n extraSmall: 240,\n small: 320,\n medium: 480,\n large: 640,\n};\n\nconst CASE_DETAIL_DEFAULT_DISPLAY_TYPE: FormDisplayType = 'modal';\nconst CASE_DETAIL_DEFAULT_DISPLAY_SIZE: FormSize = 'medium';\n\nconst CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {\n small: 250,\n medium: 350,\n large: 450,\n};\n\nexport {\n CASE_DETAIL_GUTTER_SIZE,\n CASE_DETAIL_LEFT_PANEL_MIN_WIDTH,\n CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n CASE_DETAIL_TASK_LIST_WIDTH,\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE,\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE,\n CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\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 './tab';\nexport * from './case-tab-token';\nexport * from './case-list.constants';\nexport * from './case-status.constants';\nexport * from './case-widget.constants';\nexport * from './case-detail-layout.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 {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {CaseTabService} from '../../../../services';\nimport {ActivatedRoute} from '@angular/router';\nimport {FormService} from '@valtimo/form';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {FormioForm} from '@formio/angular';\nimport {catchError} from 'rxjs/operators';\nimport {DocumentUpdatedSseEvent} from '../../../../models';\nimport {SseService} from '@valtimo/sse';\n\n@Component({\n standalone: false,\n templateUrl: './formio.component.html',\n styleUrls: ['./formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseDetailTabFormioComponent {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly formNotFound$ = new BehaviorSubject<string>('');\n public readonly noFormSpecified$ = new BehaviorSubject<boolean>(false);\n private _formDefinitionName!: string;\n public readonly prefilledForm$: Observable<FormioForm | null> = combineLatest([\n this.tabService.tabs$,\n this.route.params,\n this.sseService\n .getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED')\n .pipe(startWith(null)),\n ]).pipe(\n filter(([_, params, event]) => event === null || event.documentId === params?.documentId),\n switchMap(([tabs, params]) => {\n const currentTabName = params?.tab;\n const documentId = params?.documentId;\n const currentTab = tabs.find(tab => tab.name === currentTabName);\n\n if (!documentId || !currentTab?.contentKey) {\n this.noFormSpecified$.next(true);\n return of(null);\n }\n\n this._formDefinitionName = currentTab.contentKey;\n return this.formService.getFormDefinitionByNamePreFilled(currentTab.contentKey, documentId);\n }),\n tap(() => this.loading$.next(false)),\n catchError(() => {\n this.formNotFound$.next(this._formDefinitionName);\n this.loading$.next(false);\n return of(null);\n })\n );\n\n constructor(\n private readonly tabService: CaseTabService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService,\n private readonly sseService: SseService\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 prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'case.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'case.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\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 create = 'create',\n}\n\nenum WIDGET_PERMISSION_RESOURCE {\n camundaExecution = 'com.ritense.valtimo.operaton.domain.OperatonExecution',\n camundaProcessDefinition = 'com.ritense.valtimo.operaton.domain.OperatonProcessDefinition',\n}\n\nconst CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.create,\n resource: WIDGET_PERMISSION_RESOURCE.camundaExecution,\n};\n\nexport {CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, WIDGET_PERMISSION_RESOURCE};\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 {BehaviorSubject, combineLatest, Observable, of, switchMap} from 'rxjs';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService, StartableItem} from '@valtimo/document';\nimport {\n CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION,\n WIDGET_PERMISSION_RESOURCE,\n} from '../../widgets.permissions';\nimport {BasicWidget} from '@valtimo/layout';\n\nexport class WidgetProcess {\n private readonly _baseDocumentId$ = new BehaviorSubject<string | null>(null);\n private readonly _baseWidgetConfiguration$ = new BehaviorSubject<BasicWidget | null>(null);\n protected set baseDocumentId(value: string) {\n this._baseDocumentId$.next(value);\n }\n protected set baseWidgetConfiguration(value: BasicWidget) {\n this._baseWidgetConfiguration$.next(value);\n }\n protected get baseDocumentId(): string {\n return this._baseDocumentId$.getValue();\n }\n\n private readonly _startableItems$ = combineLatest([\n this._baseDocumentId$,\n this._baseWidgetConfiguration$,\n ]).pipe(\n switchMap(([documentId, widgetConfiguration]: [string | null, BasicWidget | null]) => {\n if (\n !documentId ||\n !widgetConfiguration ||\n !widgetConfiguration.actions?.[0]?.processDefinitionKey\n ) {\n return of(null);\n }\n return this.documentService.getStartableItems({caseDocumentId: documentId});\n })\n );\n\n public readonly canCreateCamundaExecution$: Observable<boolean> = combineLatest([\n this._startableItems$,\n this._baseWidgetConfiguration$,\n ]).pipe(\n switchMap(\n ([startableItems, widgetConfiguration]: [\n StartableItem[] | null,\n BasicWidget | null,\n ]) => {\n const processDefinitionKey = widgetConfiguration?.actions?.[0]?.processDefinitionKey;\n const requiredProcess = startableItems?.find(\n (item: StartableItem) =>\n item.key === processDefinitionKey && !!item.processDefinitionId\n );\n\n if (!requiredProcess) {\n return of(false);\n }\n\n return this.permissionService.requestPermission(CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, {\n resource: WIDGET_PERMISSION_RESOURCE.camundaProcessDefinition,\n identifier: requiredProcess.processDefinitionId,\n });\n }\n )\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\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 {EventEmitter, Injectable} from '@angular/core';\nimport {DocumentService, StartableItem} from '@valtimo/document';\nimport {\n BehaviorSubject,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n switchMap,\n} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetsService {\n private readonly _documentId$ = new BehaviorSubject<string | null>(null);\n private readonly _activeProcessKey$ = new BehaviorSubject<string | null>(null);\n private readonly _refreshWidgets$ = new Subject<void>();\n public readonly startProcessEvent = new EventEmitter();\n\n public readonly refreshWidgets$ = this._refreshWidgets$.asObservable();\n\n public set documentId(value: string) {\n this._documentId$.next(value);\n }\n\n private readonly startableItems$ = this._documentId$.pipe(\n filter((documentId: string | null) => !!documentId),\n switchMap((documentId: string) => this.documentService.getStartableItems({caseDocumentId: documentId})),\n distinctUntilChanged()\n );\n\n public get activeProcess$(): Observable<StartableItem | undefined> {\n return combineLatest([this._activeProcessKey$, this.startableItems$]).pipe(\n map(([activeProcessKey, items]: [string | null, StartableItem[]]) => {\n return items.find((item: StartableItem) => activeProcessKey === item.key);\n })\n );\n }\n\n constructor(private readonly documentService: DocumentService) {}\n\n public startProcess(processDocumentDefinitionKey: string): void {\n this._activeProcessKey$.next(processDocumentDefinitionKey);\n this.startProcessEvent.emit();\n }\n\n public finishProcess(): void {\n this._activeProcessKey$.next(null);\n }\n\n public refreshWidgets(): void {\n this._refreshWidgets$.next();\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 {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonListModule} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n FieldsWidget,\n WidgetAction,\n WidgetFieldComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\nimport {WidgetProcess} from '../widget-process/widget-process';\n\n@Component({\n selector: 'valtimo-case-widget-field',\n templateUrl: './case-widget-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetFieldComponent,\n ],\n})\nexport class CaseWidgetFieldComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: FieldsWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n if (!process.processDefinitionKey) return;\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {WidgetsService} from '../../widgets.service';\nimport {CustomWidget, WidgetAction, WidgetCustomComponent} from '@valtimo/layout';\n\n@Component({\n selector: 'valtimo-case-widget-custom',\n templateUrl: './case-widget-custom.component.html',\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseWidgetCustomComponent extends WidgetProcess {\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n }\n @Input() public set widgetConfiguration(value: CustomWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this._widgetConfigSubject$.next(value);\n }\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n constructor(\n private readonly widgetsService: WidgetsService,\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\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 EventEmitter,\n Input,\n OnInit,\n DestroyRef,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {FormIoModule} from '@valtimo/components';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService} from '@valtimo/document';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {WidgetsService} from '../../widgets.service';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n FormioWidgetWidgetWithUuid,\n WidgetAction,\n WidgetFormioComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\n\n@Component({\n selector: 'valtimo-case-widget-formio',\n templateUrl: './case-widget-formio.component.html',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseWidgetFormioComponent extends WidgetProcess implements OnInit {\n @Input() public set documentId(value: string) {\n if (value) this._documentIdSubject$.next(value);\n this.baseDocumentId = value;\n }\n @Input() public set widgetConfiguration(value: FormioWidgetWidgetWithUuid) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this._widgetConfigurationSubject$.next(value);\n }\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n public readonly refreshForm = new EventEmitter<void>();\n\n private readonly _documentIdSubject$ = new BehaviorSubject<string>('');\n private readonly _tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public get documentId$(): Observable<string> {\n return this._documentIdSubject$.pipe(filter(id => !!id));\n }\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this._widgetConfigurationSubject$,\n this._tabKey$,\n this._documentIdSubject$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabKey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabKey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly destroyRef: DestroyRef,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public ngOnInit(): void {\n this.widgetsService.refreshWidgets$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.refreshForm.emit());\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\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 {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListItem, CarbonListModule} from '@valtimo/components';\nimport {Page} from '@valtimo/shared';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\nimport {\n TableWidget,\n WidgetAction,\n WidgetLayoutService,\n WidgetTableComponent,\n WidgetTableContent,\n WidgetWithUuid,\n} from '@valtimo/layout';\nimport {HttpErrorResponse} from '@angular/common/http';\n\n@Component({\n selector: 'valtimo-case-widget-table',\n templateUrl: './case-widget-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n WidgetTableComponent,\n ],\n})\nexport class CaseWidgetTableComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n private _widgetConfiguration: TableWidget;\n public readonly widgetConfiguration$ = new BehaviorSubject<TableWidget | null>(null);\n @Input({required: true}) public set widgetConfiguration(value: TableWidget) {\n this._widgetConfiguration = value;\n this.baseWidgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public get widgetConfiguration(): TableWidget {\n return this._widgetConfiguration;\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n private readonly _initialWidgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetsApiService.getWidgetData(\n documentId,\n tabkey,\n widget.key,\n this.getPageSizeParam(widget as WidgetWithUuid)\n )\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n public readonly widgetData$: Observable<Page<CarbonListItem>> = combineLatest([\n this._initialWidgetData$,\n this._queryParams$,\n this.tabKey$,\n ]).pipe(\n switchMap(([initialData, queryParams, tabKey]) =>\n !queryParams\n ? of(initialData as Page<CarbonListItem>)\n : this.caseWidgetsApiService.getWidgetData(\n this.baseDocumentId,\n tabKey,\n this.widgetConfiguration.key,\n queryParams\n )\n ),\n filter(page => !!page)\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly caseWidgetsApiService: CaseWidgetsApiService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private getPageSizeParam(widgetConfiguration: WidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as WidgetTableContent).defaultPageSize}`;\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<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\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 {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Page} from '@valtimo/shared';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\nimport {\n CollectionWidget,\n CollectionWidgetCardData,\n WidgetAction,\n WidgetCollectionComponent,\n WidgetCollectionContent,\n WidgetLayoutService,\n WidgetWithUuid,\n} from '@valtimo/layout';\nimport {HttpErrorResponse} from '@angular/common/http';\n\n@Component({\n selector: 'valtimo-case-widget-collection',\n templateUrl: './case-widget-collection.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n WidgetCollectionComponent,\n ],\n})\nexport class CaseWidgetCollectionComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: CollectionWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionWidget | null>(null);\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n private readonly _initialWidgetData$ = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetsApiService.getWidgetData(\n documentId,\n tabkey,\n widget.key,\n this.getPageSizeParam(widget as WidgetWithUuid)\n )\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n public readonly widgetData$ = combineLatest([\n this._initialWidgetData$,\n this._queryParams$,\n this.widgetConfiguration$,\n this.tabKey$,\n ]).pipe(\n switchMap(([initialData, queryParams, widgetConfiguration, tabKey]) =>\n !queryParams\n ? of(initialData)\n : this.widgetApiService\n .getWidgetData(this.baseDocumentId, tabKey, widgetConfiguration.key, queryParams)\n .pipe(map((res: Page<CollectionWidgetCardData>) => res))\n ),\n filter(page => !!page)\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetApiService: CaseWidgetsApiService,\n private readonly widgetsService: WidgetsService,\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetsApiService: CaseWidgetsApiService\n ) {\n super(documentService, permissionService);\n }\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey ?? '');\n }\n\n private getPageSizeParam(widgetConfiguration: WidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as any as WidgetCollectionContent).defaultPageSize}`;\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<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\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 {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonListModule} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n MapWidget,\n WidgetAction,\n WidgetMapComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\nimport {WidgetProcess} from '../widget-process/widget-process';\n\n@Component({\n selector: 'valtimo-case-widget-map',\n templateUrl: './case-widget-map.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetMapComponent,\n ],\n})\nexport class CaseWidgetMapComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: MapWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<MapWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n if (!process.processDefinitionKey) return;\n this.widgetsService.startProcess(process.processDefinitionKey);\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<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {PersonCardWidget, WidgetLayoutService, WidgetPersonCardComponent} from '@valtimo/layout';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-case-widget-person-card',\n templateUrl: './case-widget-person-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, WidgetPersonCardComponent],\n})\nexport class CaseWidgetPersonCardComponent {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: PersonCardWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<PersonCardWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabKey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabKey, widget!.key, undefined)\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n return of(null);\n })\n );\n\n constructor(\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-person-card\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n></valtimo-widget-person-card>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CarbonListModule} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n MetrolineWidget,\n WidgetAction,\n WidgetLayoutService,\n WidgetMetrolineComponent,\n} from '@valtimo/layout';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\nimport {WidgetProcess} from '../widget-process/widget-process';\n\n@Component({\n selector: 'valtimo-case-widget-metroline',\n templateUrl: './case-widget-metroline.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ButtonModule,\n CarbonListModule,\n CommonModule,\n TranslateModule,\n WidgetMetrolineComponent,\n ],\n})\nexport class CaseWidgetMetrolineComponent extends WidgetProcess {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this.baseDocumentId = value;\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: MetrolineWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<MetrolineWidget | null>(null);\n public readonly tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widgetConfiguration$,\n this.tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n\n return of(null);\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: WidgetAction): void {\n if (!process.processDefinitionKey) return;\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-metroline\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button cdsButton=\"ghost\" (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\">\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-metroline>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n HighlightWidget,\n WidgetHighlightComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {BehaviorSubject, catchError, combineLatest, Observable, of, startWith, switchMap, tap} from 'rxjs';\n\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../../../services';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-case-widget-highlight',\n templateUrl: './case-widget-highlight.component.html',\n styleUrls: ['./case-widget-highlight.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, WidgetHighlightComponent],\n})\nexport class CaseWidgetHighlightComponent {\n private readonly _documentId$ = new BehaviorSubject<string>('');\n\n @Input({required: true}) public set documentId(value: string) {\n this._documentId$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: HighlightWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<HighlightWidget | null>(null);\n\n private readonly _tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n private readonly _refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));\n\n public readonly widgetData$: Observable<object | null> = combineLatest([\n this.widgetConfiguration$,\n this._tabKey$,\n this._documentId$,\n this._refresh$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n return of(null);\n })\n );\n\n constructor(\n private readonly widgetsService: WidgetsService,\n private readonly caseTabService: CaseTabService,\n private readonly caseWidgetApiService: CaseWidgetsApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-highlight\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n></valtimo-widget-highlight>\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 {ChangeDetectionStrategy, Component, HostBinding, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {LoadingModule} from 'carbon-components-angular';\nimport {combineLatest, filter, map, Observable, shareReplay, startWith, switchMap} from 'rxjs';\nimport {CaseTabService, CaseWidgetsApiService} from '../../../../services';\nimport {\n BasicWidget,\n WidgetComponentMap,\n WidgetContainerComponent,\n WidgetType,\n DividerWidget,\n Widget,\n WidgetGroup,\n} from '@valtimo/layout';\nimport {CaseWidgetFieldComponent} from './components/field/case-widget-field.component';\nimport {CaseWidgetCustomComponent} from './components/custom/case-widget-custom.component';\nimport {CaseWidgetFormioComponent} from './components/formio/case-widget-formio.component';\nimport {CaseWidgetTableComponent} from './components/table/case-widget-table.component';\nimport {CaseWidgetCollectionComponent} from './components/collection/case-widget-collection.component';\nimport {CaseWidgetMapComponent} from './components/map/case-widget-map.component';\nimport {CaseWidgetPersonCardComponent} from './components/person-card/case-widget-person-card.component';\nimport {CaseWidgetMetrolineComponent} from './components/metroline/case-widget-metroline.component';\nimport {CaseWidgetHighlightComponent} from './components/highlight/case-widget-highlight.component';\nimport {DocumentUpdatedSseEvent} from '../../../../models';\nimport {SseService} from '@valtimo/sse';\nimport {WidgetsService} from './widgets.service';\nimport {isEqual} from 'lodash-es';\n\n@Component({\n templateUrl: './widgets.component.html',\n styleUrls: ['./widgets.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n LoadingModule,\n WidgetContainerComponent,\n CarbonListModule,\n TranslateModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseDetailWidgetsComponent implements OnInit, OnDestroy {\n @HostBinding('class.tab--no-margin') private readonly _noMargin = true;\n @HostBinding('class.tab--no-background') private readonly _noBackground = true;\n @HostBinding('class.tab--no-min-height') private readonly _noMinHeight = true;\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n private readonly _tabKey$: Observable<string> = this.caseTabService.activeTabKey$;\n\n private readonly _documentUpdates$ = combineLatest([\n this.sseService.getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED'),\n this._documentId$,\n ]).pipe(\n filter(([event, documentId]) => event.documentId === documentId),\n map(([event]) => event),\n startWith<DocumentUpdatedSseEvent | null>(null)\n );\n\n private _previousWidgetConfiguration: BasicWidget[] | null = null;\n\n private readonly _widgetConfiguration$ = combineLatest([\n this._documentId$,\n this._tabKey$,\n this._documentUpdates$,\n ]).pipe(\n switchMap(([documentId, tabKey, documentUpdatedEvent]) => {\n return this.filterDuplicateConfigurations(\n this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey),\n documentUpdatedEvent\n );\n }),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n public readonly widgetGroups$: Observable<WidgetGroup[]> = this._widgetConfiguration$.pipe(\n map(widgets => this.toCaseWidgetGroups(widgets))\n );\n\n public readonly widgetComponentMap: WidgetComponentMap = {\n [WidgetType.FIELDS]: CaseWidgetFieldComponent,\n [WidgetType.CUSTOM]: CaseWidgetCustomComponent,\n [WidgetType.FORMIO]: CaseWidgetFormioComponent,\n [WidgetType.TABLE]: CaseWidgetTableComponent,\n [WidgetType.INTERACTIVE_TABLE]: CaseWidgetTableComponent,\n [WidgetType.COLLECTION]: CaseWidgetCollectionComponent,\n [WidgetType.MAP]: CaseWidgetMapComponent,\n [WidgetType.PERSON_CARD]: CaseWidgetPersonCardComponent,\n [WidgetType.METROLINE]: CaseWidgetMetrolineComponent,\n [WidgetType.HIGHLIGHT]: CaseWidgetHighlightComponent,\n };\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly caseTabService: CaseTabService,\n private readonly widgetsApiService: CaseWidgetsApiService,\n private readonly sseService: SseService,\n private readonly widgetsService: WidgetsService\n ) {}\n\n public ngOnInit(): void {\n this.caseTabService.disableTabHorizontalOverflow();\n }\n\n public ngOnDestroy(): void {\n this.caseTabService.enableTabHorizontalOverflow();\n }\n\n private toCaseWidgetGroups(widgets: BasicWidget[]): WidgetGroup[] {\n const groups = widgets.reduce<WidgetGroup[]>((acc, widget) => {\n if (widget.type === WidgetType.DIVIDER) {\n acc.push({divider: widget as DividerWidget, widgets: []});\n } else {\n if (acc.length === 0) acc.push({divider: null, widgets: []});\n acc[acc.length - 1].widgets.push(widget as Widget);\n }\n return acc;\n }, []);\n\n // if there is more than one group and trailing groups have only a divider and no widgets, don't render these last groups\n for (let i = groups.length - 1; i >= 0; i--) {\n if (groups[i].widgets.length === 0) {\n groups.pop();\n } else {\n break;\n }\n }\n\n return groups;\n }\n\n private filterDuplicateConfigurations(\n widgetConfiguration: Observable<BasicWidget[]>,\n documentUpdatedEvent: DocumentUpdatedSseEvent | null\n ): Observable<BasicWidget[]> {\n return widgetConfiguration.pipe(\n map(configuration => {\n const configurationChanged =\n !this._previousWidgetConfiguration ||\n !isEqual(this._previousWidgetConfiguration, configuration);\n\n if (!configurationChanged && documentUpdatedEvent) {\n this.widgetsService.refreshWidgets();\n return null;\n }\n\n if (configurationChanged) {\n this._previousWidgetConfiguration = configuration;\n return configuration;\n }\n\n return null;\n }),\n filter((configuration): configuration is BasicWidget[] => configuration !== null)\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@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n ></valtimo-widget-container>\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 {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ApiTabItem} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseTabApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getDossierTabs(\n caseDefinitionKey: string,\n documentId: string\n ): Observable<Array<ApiTabItem>> {\n return this.httpClient.get<Array<ApiTabItem>>(this.getApiUrl(`v1/document/${documentId}/tab`));\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 {Inject, Injectable, OnDestroy, Optional, Signal, signal, Type} from '@angular/core';\nimport {\n ApiTabItem,\n ApiTabType,\n CaseTabConfig,\n DefaultTabs,\n TabImpl,\n TabLoaderImpl,\n} from '../models';\nimport {CASE_TAB_TOKEN, DEFAULT_TAB_COMPONENTS, DEFAULT_TABS, TAB_MAP} from '../constants';\nimport {ConfigService, ZGW_OBJECT_TYPE_COMPONENT_TOKEN} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\nimport {CaseTabApiService} from './case-tab-api.service';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {CaseDetailTabFormioComponent} from '../components/case-detail/tab/formio/formio.component';\nimport {CaseDetailTabNotFoundComponent} from '../components/case-detail/tab/not-found/not-found.component';\nimport {CaseDetailWidgetsComponent} from '../components/case-detail/tab/widgets/widgets.component';\n\n@Injectable()\nexport class CaseTabService implements OnDestroy {\n private readonly _tabManagementEnabled$: Observable<boolean> =\n this.configService.getFeatureToggleObservable('enableTabManagement', true);\n private readonly _caseDefinitionKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.caseDefinitionKey),\n filter(caseDefinitionKey => !!caseDefinitionKey)\n );\n private readonly _documentId$: Observable<string> = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n private readonly _tabs$ = new BehaviorSubject<Array<TabImpl> | null>(null);\n private readonly _subscriptions = new Subscription();\n private readonly _tabLoader$ = new BehaviorSubject<TabLoaderImpl | null>(null);\n private readonly _$tabHorizontalOverflowDisabled = signal(false);\n\n public get $tabHorizontalOverflowDisabled(): Signal<boolean> {\n return this._$tabHorizontalOverflowDisabled.asReadonly();\n }\n\n public get tabs$(): Observable<Array<TabImpl>> {\n return this._tabs$.pipe(filter(tabs => !!tabs));\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$)\n );\n }\n\n public get activeTabKey$(): Observable<string> {\n return this.activeTab$.pipe(map(tab => tab.name));\n }\n\n public get showTaskList$(): Observable<boolean> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$),\n map(activeTab => !!activeTab?.showTasks || activeTab.contentKey === DefaultTabs.summary)\n );\n }\n\n constructor(\n @Inject(TAB_MAP) private readonly tabMap: Map<string, object> = DEFAULT_TABS,\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(ZGW_OBJECT_TYPE_COMPONENT_TOKEN)\n private readonly zgwObjectTypeComponent: Type<any>,\n private readonly configService: ConfigService,\n private readonly route: ActivatedRoute,\n private readonly caseTabApiService: CaseTabApiService\n ) {\n this.openCaseDefinitionKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setTabLoader(tabLoader: TabLoaderImpl): void {\n this._tabLoader$.next(tabLoader);\n }\n\n public disableTabHorizontalOverflow(): void {\n this._$tabHorizontalOverflowDisabled.set(true);\n }\n\n public enableTabHorizontalOverflow(): void {\n this._$tabHorizontalOverflowDisabled.set(false);\n }\n\n private getConfigurableTabs(caseDefinitionKey: string): Map<string, object> {\n const tabMap = new Map<string, object>();\n\n if (this.configService?.config?.caseObjectTypes) {\n const allNamesObjects = this.configService?.config?.caseObjectTypes[caseDefinitionKey];\n\n allNamesObjects?.forEach(name => {\n tabMap.set(name, this.zgwObjectTypeComponent || CaseDetailTabNotFoundComponent);\n });\n }\n\n return tabMap;\n }\n\n private getAllEnvironmentTabs(extraTabs: Map<string, object>): Array<TabImpl> {\n let i = 0;\n const tabMap = extraTabs\n ? new Map([...Array.from(this.tabMap.entries()), ...Array.from(extraTabs.entries())])\n : this.tabMap;\n const tabs: Array<TabImpl> = [];\n\n tabMap.forEach((component, name) => {\n tabs.push(new TabImpl(name, i, component));\n i++;\n });\n\n return tabs;\n }\n\n private openCaseDefinitionKeySubscription(): void {\n this._subscriptions.add(\n combineLatest([this._caseDefinitionKey$, this._documentId$, this._tabManagementEnabled$])\n .subscribe(([caseDefinitionKey, documentId, tabManagementEnabled]) => {\n if (tabManagementEnabled) {\n this.setApiTabs(caseDefinitionKey, documentId);\n } else {\n this.setEnvironmentTabs(caseDefinitionKey);\n }\n })\n );\n }\n\n private setEnvironmentTabs(caseDefinitionKey: string): void {\n const configurableTabs = this.getConfigurableTabs(caseDefinitionKey);\n const allEnvironmentTabs = this.getAllEnvironmentTabs(configurableTabs);\n this._tabs$.next(allEnvironmentTabs);\n }\n\n private setApiTabs(caseDefinitionKey: string, documentId: string): void {\n this.caseTabApiService.getDossierTabs(caseDefinitionKey, documentId).subscribe({\n next: tabs => {\n const supportedTabs = tabs.filter(tab => this.filterTab(tab));\n const mappedTabs = supportedTabs.map((tab, index) => this.mapTab(tab, index));\n this._tabs$.next(mappedTabs.filter(tab => !!tab));\n },\n error: () => {\n this._tabs$.next([]);\n },\n });\n }\n\n private filterTab(tab: ApiTabItem): boolean {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return !!DEFAULT_TAB_COMPONENTS[tab.contentKey];\n case ApiTabType.CUSTOM:\n return !!(this.caseTabConfig || {})[tab.contentKey];\n default:\n return true;\n }\n }\n\n private mapTab(tab: ApiTabItem, index: number): TabImpl | null {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return new TabImpl(\n tab.key,\n index,\n DEFAULT_TAB_COMPONENTS[tab.contentKey],\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n case ApiTabType.FORMIO:\n return new TabImpl(\n tab.key,\n index,\n CaseDetailTabFormioComponent,\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n case ApiTabType.CUSTOM:\n return new TabImpl(\n tab.key,\n index,\n this.caseTabConfig[tab.contentKey],\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n case ApiTabType.WIDGETS:\n return new TabImpl(\n tab.key,\n index,\n CaseDetailWidgetsComponent,\n tab.contentKey,\n tab.name ?? '',\n tab.showTasks\n );\n default:\n return null;\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 {CaseListService} from './case-list.service';\nimport {CaseStatusService, InternalCaseStatus} from '@valtimo/document';\nimport {CaseParameterService} from './case-parameter.service';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {CASE_WITHOUT_STATUS_STATUS} from '../constants';\n\n@Injectable()\nexport class CaseListStatusService {\n private readonly _selectedCaseStatusKeys$ = new BehaviorSubject<string[]>([]);\n\n private readonly _showStatusSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseStatuses$: Observable<Array<InternalCaseStatus>> =\n this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n combineLatest([\n caseDefinitionKey\n ? this.caseStatusService.getInternalCaseStatuses(caseDefinitionKey)\n : this.caseStatusService.getAllInternalCaseStatuses(),\n this.caseParameterService.queryStatusParams$,\n ]).pipe(take(1))\n ),\n switchMap(([statuses, queryStatuses]) =>\n combineLatest([of([CASE_WITHOUT_STATUS_STATUS, ...statuses]), of(queryStatuses)])\n ),\n tap(([statuses, queryStatuses]) => {\n const selectedStatuses = queryStatuses\n ? statuses.filter(status => queryStatuses.includes(status.key))\n : [\n ...statuses.filter(status => status.visibleInCaseListByDefault),\n CASE_WITHOUT_STATUS_STATUS,\n ];\n this.setSelectedStatuses(selectedStatuses.map((status: InternalCaseStatus) => status.key));\n }),\n map(([statuses]) => statuses),\n tap(statuses => this._showStatusSelector$.next((statuses || []).length > 1))\n );\n\n public get caseStatuses$(): Observable<Array<InternalCaseStatus>> {\n return this._caseStatuses$;\n }\n\n public get showStatusSelector$(): Observable<boolean> {\n return this._showStatusSelector$.asObservable();\n }\n\n public get selectedCaseStatuses$(): Observable<Array<string>> {\n return this._selectedCaseStatusKeys$;\n }\n\n constructor(\n private readonly caseListService: CaseListService,\n private readonly caseStatusService: CaseStatusService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public setSelectedStatuses(statusKeys: string[]): void {\n this._selectedCaseStatusKeys$.next(statusKeys);\n this.caseParameterService.setStatusParameter(statusKeys);\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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StartModalService {\n getStandardStartEventTitle(bpmnXml: string): string | null {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(bpmnXml, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('parsererror').length) {\n console.error('Error parsing XML');\n return null;\n }\n\n const startEvents = xmlDoc.getElementsByTagName('bpmn:startEvent');\n if (!startEvents) {\n return null;\n }\n\n const standardStartEvent = Array.from(startEvents).find(\n event =>\n !event.getElementsByTagName('bpmn:messageEventDefinition').length &&\n !event.getElementsByTagName('bpmn:timerEventDefinition').length\n );\n\n return standardStartEvent ? standardStartEvent.getAttribute('name') : 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 */\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, InterceptorSkip, Page} from '@valtimo/shared';\nimport {Observable, map} from 'rxjs';\nimport {CarbonListItem} from '@valtimo/components';\nimport {BasicWidget} from '@valtimo/layout';\nimport {CaseWidgetsRes} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseWidgetsApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getWidgetTabConfiguration(documentId: string, tabKey: string): Observable<BasicWidget[]> {\n return this.httpClient\n .get<CaseWidgetsRes>(this.getApiUrl(`v1/document/${documentId}/widget-tab/${tabKey}`))\n .pipe(map((res: CaseWidgetsRes) => res.widgets));\n }\n\n public getWidgetData(\n documentId: string,\n tabKey: string,\n widgetKey: string,\n queryParams?: string\n ): Observable<Page<CarbonListItem>> {\n return this.httpClient.get<Page<CarbonListItem>>(\n this.getApiUrl(\n !queryParams\n ? `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}`\n : `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}?${queryParams}`\n ),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\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 {FormDisplayType, FormSize, TaskWithProcessLink} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith} from 'rxjs';\nimport {\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE,\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE,\n CASE_DETAIL_GUTTER_SIZE,\n CASE_DETAIL_LEFT_PANEL_MIN_WIDTH,\n CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n CASE_DETAIL_TASK_LIST_WIDTH,\n} from '../constants';\nimport {CaseDetailLayout} from '../models';\nimport {CaseTabService} from './case-tab.service';\nimport {PageHeaderService} from '@valtimo/components';\n\n@Injectable()\nexport class CaseDetailLayoutService {\n private readonly _tabContentContainerWidth$ = new BehaviorSubject<number | null>(null);\n private readonly _showTaskList$ = this.caseTabService.showTaskList$;\n private readonly _taskAndProcessLinkOpenedInPanel$ =\n new BehaviorSubject<TaskWithProcessLink | null>(null);\n private readonly _formDisplayType$ = new BehaviorSubject<FormDisplayType>(\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE\n );\n private readonly _formDisplaySize$ = new BehaviorSubject<FormSize>(\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE\n );\n private readonly _refreshTasks$ = new BehaviorSubject<null>(null);\n private readonly _mainContentHeaderHeight$ = new BehaviorSubject<number>(0);\n private readonly _hasCaseTags$ = new BehaviorSubject<boolean>(false);\n\n public get refreshTasks$(): Observable<null> {\n return this._refreshTasks$.asObservable();\n }\n\n public get tabContentContainerWidth$(): Observable<number | null> {\n return this._tabContentContainerWidth$.pipe(filter(width => typeof width === 'number'));\n }\n\n public get taskAndProcessLinkOpenedInPanel$(): Observable<TaskWithProcessLink | null> {\n return this._taskAndProcessLinkOpenedInPanel$.asObservable();\n }\n\n public get formDisplaySize$(): Observable<FormSize> {\n return this._formDisplaySize$.asObservable();\n }\n\n public get tabContentContainerMaxHeight$(): Observable<string> {\n return combineLatest([\n this.pageHeaderService.compactMode$,\n this._mainContentHeaderHeight$,\n this._hasCaseTags$,\n ]).pipe(\n map(([compactMode, mainContentHeaderHeight, hasCaseTags]) =>\n !compactMode && !hasCaseTags\n ? `calc(100vh - ${202 + mainContentHeaderHeight}px)`\n : `calc(100vh - ${160 + mainContentHeaderHeight}px)`\n )\n );\n }\n\n constructor(\n private readonly caseTabService: CaseTabService,\n private readonly pageHeaderService: PageHeaderService\n ) {}\n\n public readonly caseDetailLayout$: Observable<CaseDetailLayout | any> = combineLatest([\n this.tabContentContainerWidth$,\n this._showTaskList$,\n this._taskAndProcessLinkOpenedInPanel$,\n this._formDisplayType$,\n this._formDisplaySize$,\n ]).pipe(\n map(\n ([\n tabContentContainerWidth,\n showTaskList,\n taskAndProcessLinkOpenedInPanel,\n formDisplayType,\n formDisplaySize,\n ]) => {\n if (!showTaskList) {\n return this.getInitialLayout();\n }\n\n if (!taskAndProcessLinkOpenedInPanel) {\n return this.getTaskListLayout();\n }\n\n if (taskAndProcessLinkOpenedInPanel && formDisplayType === 'panel') {\n return this.getPanelLayout(tabContentContainerWidth ?? 0, formDisplaySize);\n }\n\n return {} as CaseDetailLayout;\n }\n ),\n startWith({})\n );\n\n public setTabContentContainerWidth(width: number): void {\n this._tabContentContainerWidth$.next(width);\n }\n\n public setTaskAndProcessLinkOpenedInPanel(value: TaskWithProcessLink | null): void {\n this._taskAndProcessLinkOpenedInPanel$.next(value);\n }\n\n public setFormDisplayType(type: FormDisplayType): void {\n this._formDisplayType$.next(type);\n }\n\n public setFormDisplaySize(size: FormSize): void {\n this._formDisplaySize$.next(size);\n }\n\n public refreshTasks(): void {\n this._refreshTasks$.next(null);\n }\n\n public setMainContentHeaderHeight(height: number): void {\n this._mainContentHeaderHeight$.next(height);\n }\n\n public setHasCaseTags(hasCaseTags: boolean): void {\n this._hasCaseTags$.next(hasCaseTags);\n }\n\n private getInitialLayout(): CaseDetailLayout {\n return {\n showRightPanel: false,\n widthAdjustable: false,\n unit: 'percent',\n leftPanelWidth: '*',\n };\n }\n\n private getTaskListLayout(): CaseDetailLayout {\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: false,\n rightPanelMaxWidth: CASE_DETAIL_TASK_LIST_WIDTH,\n rightPanelMinWidth: CASE_DETAIL_TASK_LIST_WIDTH,\n rightPanelWidth: CASE_DETAIL_TASK_LIST_WIDTH,\n leftPanelWidth: '*',\n };\n }\n\n private getPanelLayout(\n tabContentContainerWidth: number,\n formDisplaySize: FormSize\n ): CaseDetailLayout {\n const rightPanelMaxWidth =\n tabContentContainerWidth - CASE_DETAIL_GUTTER_SIZE - CASE_DETAIL_LEFT_PANEL_MIN_WIDTH;\n const rightPanelMinWidth = CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS[formDisplaySize];\n const rightPanelMinWidthToUse =\n rightPanelMinWidth < rightPanelMaxWidth ? rightPanelMinWidth : rightPanelMaxWidth;\n\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: true,\n rightPanelMinWidth: rightPanelMinWidthToUse,\n rightPanelWidth: rightPanelMinWidthToUse,\n rightPanelMaxWidth,\n leftPanelWidth: '*',\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 {CaseTag, CaseTagService} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {CaseListService} from './case-list.service';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListCaseTagService {\n private readonly _selectedCaseTagKeys$ = new BehaviorSubject<string[]>([]);\n\n private readonly _showCaseTagsSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseTags$: Observable<CaseTag[]> = this.caseListService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? combineLatest([\n this.caseTagsService.getCaseTags(caseDefinitionKey),\n this.caseParameterService.queryCaseTagsParams$,\n ]).pipe(take(1))\n : of<[CaseTag[], null]>([[], null])\n ),\n tap(([caseTags, queryCaseTags]) => {\n let selectedCaseTags;\n if (queryCaseTags) {\n selectedCaseTags = caseTags.filter(caseTag => queryCaseTags.includes(caseTag.key));\n this.setSelectedCaseTags(selectedCaseTags.map(selectedCaseTags => selectedCaseTags.key));\n }\n }),\n map(([caseTags]) => caseTags),\n tap(caseTags => this._showCaseTagsSelector$.next((caseTags || []).length > 1))\n );\n\n public get caseTags$(): Observable<CaseTag[]> {\n return this._caseTags$;\n }\n\n public get showCaseTagsSelector$(): Observable<boolean> {\n return this._showCaseTagsSelector$.asObservable();\n }\n\n public get selectedCaseTagKeys$(): Observable<string[]> {\n return this._selectedCaseTagKeys$;\n }\n\n constructor(\n private readonly caseListService: CaseListService,\n private readonly caseTagsService: CaseTagService,\n private readonly caseParameterService: CaseParameterService\n ) {}\n\n public setSelectedCaseTags(caseTagKeys: string[]): void {\n this._selectedCaseTagKeys$.next(caseTagKeys);\n this.caseParameterService.setCaseTagParameter(caseTagKeys);\n }\n}\n","import {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n combineLatest,\n first,\n of,\n switchMap,\n startWith,\n Observable,\n catchError,\n fromEvent,\n map,\n} from 'rxjs';\nimport {CaseListService} from './case-list.service';\nimport {CaseParameterService} from './case-parameter.service';\nimport {CaseListSearchService} from './case-list-search.service';\nimport {GlobalNotificationService, InterceptorSkip} from '@valtimo/shared';\nimport {CASES_WITHOUT_STATUS_KEY} from '@valtimo/components';\n\n@Injectable()\nexport class CaseExportService {\n constructor(\n private readonly http: HttpClient,\n private readonly listService: CaseListService,\n private readonly parameterService: CaseParameterService,\n private readonly caseListSearchService: CaseListSearchService,\n private readonly globalNotificationService: GlobalNotificationService\n ) {}\n\n public downloadExport(): Observable<{isLoading: boolean}> {\n return combineLatest([\n this.listService.caseDefinitionKey$,\n this.parameterService.querySearchParams$,\n this.parameterService.queryAssigneeParam$,\n this.parameterService.queryStatusParams$,\n this.parameterService.queryCaseTagsParams$,\n ]).pipe(\n first(),\n switchMap(data => {\n const body = {\n documentDefinitionName: data[0],\n searchOperator: 'AND',\n assigneeFilter: data[2],\n statusFilter: data[3].map((statusKey: string) =>\n statusKey === CASES_WITHOUT_STATUS_KEY ? null : statusKey\n ),\n caseTagsFilter: data[4],\n otherFilters: this.caseListSearchService.mapSearchValuesToFilters(data[1]),\n };\n return this.http.post(\n `/api/v1/case/${data[0]}/export?definitionName=${data[0]}&page=0&size=10&sort=createdOn%2CDESC`,\n body,\n {\n responseType: 'blob',\n observe: 'response',\n headers: new HttpHeaders().set(InterceptorSkip, '400'),\n }\n );\n }),\n switchMap(data => {\n const contentDisposition = data.headers.get('Content-Disposition');\n let filename = 'export.csv';\n if (contentDisposition) {\n const matches = /filename=\"?([^\"]+)\"?/.exec(contentDisposition);\n if (matches != null && matches[1]) {\n filename = matches[1];\n }\n }\n const url = URL.createObjectURL(data.body as Blob);\n const link = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.download = filename;\n link.click();\n link.remove();\n URL.revokeObjectURL(url);\n return of({isLoading: false});\n }),\n catchError(error => {\n return this.readBlobAsText(error.error).pipe(\n switchMap(errorBlobData => {\n this.globalNotificationService.showToast({\n title: 'An unexpected error occurred',\n caption: errorBlobData?.title,\n type: 'error',\n });\n\n return of({isLoading: false, error: errorBlobData?.title});\n })\n );\n }),\n startWith({isLoading: true})\n );\n }\n\n private readBlobAsText(blob: Blob): Observable<any> {\n const reader = new FileReader();\n reader.readAsText(blob);\n return fromEvent(reader, 'load').pipe(map(() => JSON.parse(reader.result as string)));\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, OnDestroy} from '@angular/core';\nimport {CaseDefinition, DocumentService} from '@valtimo/document';\nimport {ConfigService, MenuItem} from '@valtimo/shared';\nimport {BehaviorSubject, from, Observable, of, Subscription} from 'rxjs';\nimport {filter, switchMap} from 'rxjs/operators';\nimport {SseService} from '@valtimo/sse';\nimport {MenuService} from '@valtimo/components';\n\n@Injectable({providedIn: 'root'})\nexport class CaseMenuService implements OnDestroy {\n private readonly _subscriptions = new Subscription();\n public readonly disableCaseCount$: Observable<boolean>;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly sseService: SseService,\n private readonly menuService: MenuService,\n private readonly configService: ConfigService\n ) {\n this.disableCaseCount$ = this.configService.getFeatureToggleObservable('disableCaseCount');\n this.menuService.registerAppendMenuItemsFunction(this.appendCaseMenuItems.bind(this));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public appendCaseMenuItems = (menuItems: MenuItem[]): Observable<MenuItem[]> => {\n const isGenericCaseList =\n this.configService.config?.featureToggles?.enableGenericCaseList === true;\n\n if (isGenericCaseList) {\n const index = menuItems.findIndex(i => i.title === 'Cases' || i.title === 'Dossiers');\n if (index >= 0) {\n menuItems[index].link = ['/cases'];\n delete menuItems[index].children;\n }\n return of(menuItems);\n }\n\n return from(this.documentService.getCaseDefinitions({active: true})).pipe(\n switchMap(definitions => {\n const countMap = this.getCountMap(definitions);\n\n const caseItems: MenuItem[] = definitions.map((def, index) => ({\n link: ['/cases/' + def.caseDefinitionKey],\n title: def.name,\n iconClass: 'icon mdi mdi-dot-circle',\n sequence: index,\n show: true,\n ...(countMap && {count$: countMap.get(def.caseDefinitionKey)}),\n }));\n\n const index = menuItems.findIndex(i => i.title === 'Cases' || i.title === 'Dossiers');\n\n if (index >= 0) {\n menuItems[index].children = caseItems;\n }\n\n return of(menuItems);\n })\n );\n };\n\n private getCountMap(definitions: CaseDefinition[]): Map<string, BehaviorSubject<number>> {\n const map = new Map<string, BehaviorSubject<number>>();\n\n definitions.forEach(def => {\n map.set(def.caseDefinitionKey, new BehaviorSubject<number>(0));\n });\n\n this._subscriptions.add(\n this.sseService\n .getSseMessagesObservableByEventType(['CASE_UNASSIGNED', 'CASE_ASSIGNED', 'CASE_CREATED'])\n .subscribe(() => this.updateCounts(map))\n );\n\n this.updateCounts(map);\n return map;\n }\n\n private updateCounts(map: Map<string, BehaviorSubject<number>>): void {\n this._subscriptions.add(\n this.disableCaseCount$\n .pipe(\n filter(disableCaseCount => !disableCaseCount),\n switchMap(_ => this.documentService.getOpenDocumentCount())\n )\n .subscribe(counts => {\n counts.forEach(entry => {\n const subject = map.get(entry.documentDefinitionName);\n if (subject) {\n subject.next(entry.openDocumentCount);\n }\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\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {BasicWidget} from '@valtimo/layout';\n\n@Injectable({providedIn: 'root'})\nexport class CaseHeaderWidgetApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getHeaderWidget(documentId: string): Observable<BasicWidget> {\n return this.httpClient.get<BasicWidget>(this.getApiUrl(`v1/case/${documentId}/header-widget`), {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n });\n }\n\n public getHeaderWidgetData(documentId: string, pageSize = 5, page = 0): Observable<any> {\n return this.httpClient.get<any>(\n this.getApiUrl(`v1/case/${documentId}/header-widget/data?page=${page}&size=${pageSize}`),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\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\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {ListField, ListHiddenColumn} from '@valtimo/components';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CaseListHiddenColumnsService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getHiddenColumns(caseDefinitionKey: string): Observable<ListField[]> {\n return this.httpClient.get<ListField[]>(\n this.getApiUrl(`v1/case/${caseDefinitionKey}/hidden-list-column`)\n );\n }\n\n public saveHiddenColumns(\n caseDefinitionKey: string,\n hiddenColumns: ListHiddenColumn[]\n ): Observable<ListHiddenColumn[]> {\n return this.httpClient.post<ListHiddenColumn[]>(\n this.getApiUrl(`v1/case/${caseDefinitionKey}/hidden-list-column`),\n hiddenColumns\n );\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {IQuickSearchService, QuickSearchItem} from '@valtimo/components';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, Observable, filter, of, switchMap, take, tap} from 'rxjs';\nimport {CaseListQuickSearchParams} from '../models';\n\n@Injectable()\nexport class CaseListQuickSearchService\n extends BaseApiService\n implements IQuickSearchService<CaseListQuickSearchParams>\n{\n private readonly _params$ = new BehaviorSubject<CaseListQuickSearchParams | null>(null);\n private get _params(): CaseListQuickSearchParams {\n return this._params$.getValue() ?? {caseDefinitionKey: ''};\n }\n public get params$(): Observable<CaseListQuickSearchParams | null> {\n return this._params$.pipe(filter(params => !!params));\n }\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public initParams(caseDefinitionKey: string): void {\n if (caseDefinitionKey === this._params.caseDefinitionKey) return;\n this._params$.next({caseDefinitionKey});\n }\n\n public getQuickSearchItems(): Observable<QuickSearchItem[]> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.get<QuickSearchItem[]>(\n this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`)\n )\n )\n );\n }\n\n public createQuickSearchItem(quickSearchItem: QuickSearchItem): Observable<QuickSearchItem> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.post<QuickSearchItem>(\n this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`),\n quickSearchItem\n )\n )\n );\n }\n public updateQuickSearchItems(\n quickSearchItems: QuickSearchItem[]\n ): Observable<QuickSearchItem[]> {\n throw new Error('Method not implemented.');\n }\n\n public editQuickSearchItem(quickSearchItem: QuickSearchItem): Observable<QuickSearchItem> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.put<QuickSearchItem>(\n this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`),\n quickSearchItem\n )\n )\n );\n }\n public deleteQuickSearchItem(quickSearchItem: QuickSearchItem): Observable<void> {\n return this.params$.pipe(\n take(1),\n switchMap((params: CaseListQuickSearchParams | null) =>\n this.httpClient.delete<void>(\n this.getApiUrl(\n `v1/case/${params?.caseDefinitionKey}/stored-quick-search/${quickSearchItem.title}`\n )\n )\n )\n );\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DestroyRef, Inject, Injectable} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n CarbonListNoResultsMessage,\n CASES_WITHOUT_STATUS_KEY,\n IQuickSearchService,\n ListField,\n ListHiddenColumn,\n PageTitleService,\n Pagination,\n QUICK_SEARCH_SERVICE,\n ViewType,\n} from '@valtimo/components';\nimport {\n AdvancedDocumentSearchRequest,\n AdvancedDocumentSearchRequestImpl,\n CaseTag,\n CaseTagsUtils,\n Documents,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n SpecifiedDocuments,\n} from '@valtimo/document';\nimport {\n AssigneeFilter,\n CaseListTab,\n DefinitionColumn,\n SearchField,\n SearchFieldValues,\n} from '@valtimo/shared';\nimport {isEqual} from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n defaultIfEmpty,\n distinctUntilChanged,\n filter,\n forkJoin,\n map,\n Observable,\n of,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CASE_LIST_NO_RESULTS_MESSAGE} from '../constants';\nimport {CaseListQuickSearchParams} from '../models';\nimport {\n CAN_CREATE_CASE_PERMISSION,\n CAN_EXPORT_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n} from '../permissions';\nimport {CaseColumnService} from './case-column.service';\nimport {CaseListAssigneeService} from './case-list-assignee.service';\nimport {CaseListCaseTagService} from './case-list-case-tag.service';\nimport {CaseListHiddenColumnsService} from './case-list-hidden-columns.service';\nimport {CaseListPaginationService} from './case-list-pagination.service';\nimport {CaseListSearchService} from './case-list-search.service';\nimport {CaseListService} from './case-list.service';\nimport {CaseListStatusService} from './case-list-status.service';\nimport {CaseParameterService} from './case-parameter.service';\n\n@Injectable()\nexport class CaseListOrchestrationService {\n private readonly INTERNAL_STATUS_COLUMN = 'internalStatus';\n private readonly CASE_TAGS_COLUMN = 'caseTags';\n\n private readonly _statusField: ListField = {\n label: 'document.status',\n key: this.INTERNAL_STATUS_COLUMN,\n viewType: ViewType.TAGS,\n sortable: true,\n };\n\n private readonly _internalStatusKeys$ = new BehaviorSubject<string[]>([\n this.INTERNAL_STATUS_COLUMN,\n ]);\n private readonly _caseTagsKeys$ = new BehaviorSubject<string[]>([this.CASE_TAGS_COLUMN]);\n private readonly _refreshHiddenColumns$ = new BehaviorSubject<null>(null);\n\n public readonly noResultsMessage$ = new BehaviorSubject<CarbonListNoResultsMessage>(\n CASE_LIST_NO_RESULTS_MESSAGE\n );\n public readonly hasApiColumnConfig$ = new BehaviorSubject<boolean>(false);\n public readonly disableExportButton$ = new BehaviorSubject<boolean>(false);\n\n public readonly caseDefinitionKey$: Observable<string> = this.listService.caseDefinitionKey$.pipe(\n tap((caseDefinitionKey: string) =>\n this.caseListQuickSearchService.initParams(caseDefinitionKey)\n )\n );\n\n public readonly searchFields$: Observable<Array<SearchField> | null> =\n this.searchService.documentSearchFields$;\n\n public readonly statuses$: Observable<Array<InternalCaseStatus>> =\n this.statusService.caseStatuses$;\n\n public readonly caseTags$: Observable<CaseTag[]> = this.caseListCaseTagService.caseTags$;\n\n public readonly selectedStatusKeys$ = this.statusService.selectedCaseStatuses$;\n public readonly selectedCaseTagKeys$ = this.caseListCaseTagService.selectedCaseTagKeys$;\n public readonly searchFieldValues$ = this.parameterService.searchFieldValues$;\n public readonly assigneeFilter$: Observable<AssigneeFilter> =\n this.assigneeService.assigneeFilter$;\n public readonly showStatusSelector$ = this.statusService.showStatusSelector$;\n public readonly showCaseTagsSelector$ = this.caseListCaseTagService.showCaseTagsSelector$;\n\n public readonly hiddenColumns$: Observable<ListField[]> = this._refreshHiddenColumns$.pipe(\n switchMap(() => this.caseDefinitionKey$),\n switchMap((caseDefinitionKey: string) =>\n caseDefinitionKey\n ? this.caseListHiddenColumnsService.getHiddenColumns(caseDefinitionKey)\n : of([])\n )\n );\n\n public readonly schema$ = this.listService.caseDefinitionKey$.pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey => this.documentService.getDocumentDefinition(caseDefinitionKey)),\n map(caseDefinition => caseDefinition?.schema),\n tap(schema => {\n if (schema?.title) {\n this.pageTitleService.setCustomPageTitle(schema?.title, true);\n }\n })\n );\n\n public readonly canCreateCase$: Observable<boolean> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.permissionService.requestPermission(CAN_CREATE_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocumentDefinition,\n identifier: caseDefinitionKey,\n })\n : of(false)\n )\n );\n\n public readonly canExportCase$: Observable<boolean> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? combineLatest([\n this.permissionService.requestPermission(CAN_EXPORT_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocumentDefinition,\n identifier: caseDefinitionKey,\n }),\n this.documentService.getCaseList(caseDefinitionKey),\n ])\n : of([false, []] as [boolean, any[]])\n ),\n switchMap(([canExportPermission, caseList]) => {\n const isExportableColumns = caseList.some(caseListitem => caseListitem.exportable);\n return of(canExportPermission && isExportableColumns);\n })\n );\n\n public readonly disableSaveSearch$: Observable<boolean> = combineLatest([\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n ]).pipe(\n map(([selectedStatuses, selectedTags]) => !selectedStatuses.length && !selectedTags.length)\n );\n\n private readonly _canHaveAssignee$: Observable<boolean> = this.assigneeService.canHaveAssignee$;\n\n private readonly _columns$: Observable<Array<DefinitionColumn>> =\n this.listService.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey =>\n caseDefinitionKey\n ? this.columnService.getDefinitionColumns(caseDefinitionKey)\n : of({hasApiConfig: false, columns: []})\n ),\n map(res => {\n this.hasApiColumnConfig$.next(res.hasApiConfig);\n return res.columns;\n }),\n tap(columns => {\n this.listService.caseDefinitionKey$.pipe(take(1)).subscribe(caseDefinitionKey => {\n this.paginationService.setPagination(columns, caseDefinitionKey);\n });\n })\n );\n\n // --- Loading state ---\n\n private readonly _loadingFields$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingPagination$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingSearchFields$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingAssigneeFilter$ = new BehaviorSubject<boolean>(true);\n private readonly _loadingDocumentItems$ = new BehaviorSubject<boolean>(true);\n\n public readonly pagination$: Observable<Pagination> = this.paginationService.pagination$.pipe(\n tap(() => this._loadingPagination$.next(false))\n );\n\n public readonly loaded$: Observable<boolean> = combineLatest([\n this._loadingFields$,\n this._loadingPagination$,\n this._loadingSearchFields$,\n this._loadingAssigneeFilter$,\n this._loadingDocumentItems$,\n ]).pipe(map(flags => flags.every(loading => !loading)));\n\n // --- Column & field observables ---\n\n public readonly availableFields$: Observable<ListField[]> = combineLatest([\n this._canHaveAssignee$,\n this._columns$,\n this.hasApiColumnConfig$,\n this.statuses$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([canHaveAssignee, columns, hasApiConfig, statuses]) => {\n this._internalStatusKeys$.next([\n ...this._internalStatusKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.INTERNAL_STATUS_COLUMN ? [...acc, curr.translationKey] : acc,\n [] as string[]\n ),\n ]);\n this._caseTagsKeys$.next([\n ...this._caseTagsKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.CASE_TAGS_COLUMN ? [...acc, curr.translationKey] : acc,\n []\n ),\n ]);\n const filteredAssigneeColumns = this.assigneeService.filterAssigneeColumns(\n columns,\n canHaveAssignee\n );\n const listFields = this.columnService.mapDefinitionColumnsToListFields(\n filteredAssigneeColumns,\n hasApiConfig\n );\n const fieldsToReturn = this.assigneeService.addAssigneeListField(\n columns,\n listFields,\n canHaveAssignee\n );\n\n return statuses.some(\n (status: InternalCaseStatus) => status.key !== CASES_WITHOUT_STATUS_KEY\n ) && !hasApiConfig\n ? [...fieldsToReturn, this._statusField]\n : fieldsToReturn;\n })\n );\n\n public readonly fields$: Observable<ListField[]> = combineLatest([\n this.availableFields$,\n this.hiddenColumns$,\n ]).pipe(\n map(([fields, hiddenColumns]) =>\n fields.filter(\n (field: ListField) =>\n !hiddenColumns.find((hiddenColumn: ListField) => hiddenColumn.key === field.key)\n )\n ),\n tap(listFields => {\n const defaultListField = listFields.find(field => field.default);\n this.parameterService.queryPaginationParams$\n .pipe(take(1))\n .subscribe(queryPaginationParams => {\n if (defaultListField && !queryPaginationParams?.sort?.isSorting) {\n const sortDirection =\n typeof defaultListField.default === 'string' ? defaultListField.default : 'DESC';\n this.paginationService.sortChanged({\n isSorting: true,\n state: {name: defaultListField.key, direction: sortDirection as any},\n });\n }\n });\n }),\n tap(() => this._loadingFields$.next(false))\n );\n\n // --- Document items (the main data pipeline) ---\n\n private readonly _documentItems$ = new BehaviorSubject<any[] | null>(null);\n public readonly documentItems$: Observable<any[] | null> = this._documentItems$.asObservable();\n\n private readonly _documentSearchRequest$: Observable<AdvancedDocumentSearchRequest> =\n combineLatest([this.pagination$, this.listService.caseDefinitionKey$]).pipe(\n filter(([pagination, caseDefinitionKey]) => !!pagination && !!caseDefinitionKey),\n map(([pagination, caseDefinitionKey]) => {\n const page = pagination.page - 1;\n return new AdvancedDocumentSearchRequestImpl(\n caseDefinitionKey,\n page >= 0 ? page : 0,\n pagination.size,\n pagination.sort\n );\n })\n );\n\n private readonly _documentItemsPipeline$ = this.listService.checkRefresh$.pipe(\n switchMap(() =>\n combineLatest([\n this._documentSearchRequest$,\n this.assigneeFilter$,\n this.searchFieldValues$,\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n this.listService.forceRefresh$,\n this.hasApiColumnConfig$,\n this.statusService.caseStatuses$,\n this.caseListCaseTagService.caseTags$,\n ]).pipe(debounceTime(50))\n ),\n distinctUntilChanged(this.areDocumentRequestsEqual),\n switchMap(\n ([\n documentSearchRequest,\n assigneeFilter,\n searchValues,\n selectedStatuses,\n selectedCaseTagKeys,\n _,\n hasApiColumnConfig,\n allStatuses,\n ]) =>\n this.fetchDocuments(\n documentSearchRequest,\n assigneeFilter,\n searchValues,\n selectedStatuses,\n selectedCaseTagKeys,\n hasApiColumnConfig,\n allStatuses\n )\n ),\n switchMap(res => this.checkDocumentPermissions(res)),\n map(res => this.mapDocumentsToItems(res)),\n map(res => this.mapStatusAndTagColumns(res)),\n tap(items => {\n this._documentItems$.next(items);\n this._loadingAssigneeFilter$.next(false);\n this._loadingDocumentItems$.next(false);\n })\n );\n\n constructor(\n private readonly assigneeService: CaseListAssigneeService,\n private readonly caseListCaseTagService: CaseListCaseTagService,\n private readonly caseListHiddenColumnsService: CaseListHiddenColumnsService,\n private readonly columnService: CaseColumnService,\n private readonly destroyRef: DestroyRef,\n private readonly documentService: DocumentService,\n private readonly listService: CaseListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: CaseListPaginationService,\n private readonly parameterService: CaseParameterService,\n private readonly permissionService: PermissionService,\n private readonly searchService: CaseListSearchService,\n private readonly statusService: CaseListStatusService,\n private readonly translateService: TranslateService,\n @Inject(QUICK_SEARCH_SERVICE)\n private readonly caseListQuickSearchService: IQuickSearchService<CaseListQuickSearchParams>\n ) {\n this._documentItemsPipeline$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n }\n\n public setLoading(): void {\n this._loadingFields$.next(true);\n this._loadingPagination$.next(true);\n this._loadingSearchFields$.next(true);\n this._loadingAssigneeFilter$.next(true);\n this._loadingDocumentItems$.next(true);\n this._documentItems$.next(null);\n }\n\n public setLoadingAssigneeFilter(loading: boolean): void {\n this._loadingAssigneeFilter$.next(loading);\n }\n\n public setLoadingSearchFields(loading: boolean): void {\n this._loadingSearchFields$.next(loading);\n }\n\n public updateNoResultsMessage(isSearchResult: boolean, activeTab: CaseListTab | null): void {\n this.noResultsMessage$.next(\n isSearchResult\n ? {\n description: 'case.noResults.search.description',\n isSearchResult,\n title: 'case.noResults.search.title',\n }\n : {\n description: `case.noResults.${activeTab ?? 'ALL'}.description`,\n isSearchResult,\n title: `case.noResults.${activeTab ?? 'ALL'}.title`,\n }\n );\n }\n\n public saveHiddenColumns(hiddenColumns: ListHiddenColumn[]): void {\n this.caseDefinitionKey$\n .pipe(\n take(1),\n switchMap((caseDefinitionKey: string) =>\n this.caseListHiddenColumnsService.saveHiddenColumns(caseDefinitionKey, hiddenColumns)\n )\n )\n .subscribe(() => this._refreshHiddenColumns$.next(null));\n }\n\n // --- Private helpers for the document items pipeline ---\n\n private areDocumentRequestsEqual(\n [\n prevSearchRequest,\n prevAssigneeFilter,\n prevSearchFieldValues,\n prevSelectedStatuses,\n prevCaseTagKeys,\n prevForceRefresh,\n ]: any[],\n [\n currSearchRequest,\n currAssigneeFilter,\n currSearchFieldValues,\n currSelectedStatuses,\n currCaseTagKeys,\n currForceRefresh,\n ]: any[]\n ): boolean {\n return isEqual(\n {\n ...prevSearchRequest,\n assignee: prevAssigneeFilter,\n ...prevSearchFieldValues,\n ...prevSelectedStatuses,\n ...prevCaseTagKeys,\n forceRefresh: prevForceRefresh,\n },\n {\n ...currSearchRequest,\n assignee: currAssigneeFilter,\n ...currSearchFieldValues,\n ...currSelectedStatuses,\n ...currCaseTagKeys,\n forceRefresh: currForceRefresh,\n }\n );\n }\n\n private fetchDocuments(\n documentSearchRequest: AdvancedDocumentSearchRequest,\n assigneeFilter: AssigneeFilter,\n searchValues: SearchFieldValues,\n selectedStatuses: string[],\n selectedCaseTagKeys: string[],\n hasApiColumnConfig: boolean,\n allStatuses: InternalCaseStatus[]\n ): Observable<{\n documents: Documents | SpecifiedDocuments;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n allStatuses: InternalCaseStatus[];\n assigneeFilter: AssigneeFilter;\n }> {\n const statusKeys: (string | null)[] =\n allStatuses.length === 1\n ? []\n : selectedStatuses.map((statusKey: string) =>\n statusKey === CASES_WITHOUT_STATUS_KEY ? null : statusKey\n );\n\n const searchFilters =\n (Object.keys(searchValues) || []).length > 0\n ? this.searchService.mapSearchValuesToFilters(searchValues)\n : undefined;\n\n const documentsObs = !hasApiColumnConfig\n ? this.documentService.getDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n searchFilters,\n statusKeys,\n selectedCaseTagKeys\n )\n : this.documentService.getSpecifiedDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n searchFilters,\n statusKeys,\n selectedCaseTagKeys\n );\n\n return forkJoin({\n documents: documentsObs,\n hasApiColumnConfig: of(hasApiColumnConfig),\n isSearchResult: of(!!searchFilters),\n allStatuses: of(allStatuses),\n assigneeFilter: of(assigneeFilter),\n });\n }\n\n private checkDocumentPermissions(res: {\n documents: Documents | SpecifiedDocuments;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n allStatuses: InternalCaseStatus[];\n assigneeFilter: AssigneeFilter;\n }): Observable<[typeof res, boolean[], string[], string[]]> {\n return combineLatest([\n of(res),\n forkJoin(\n res.documents.content.map(document =>\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: document.id,\n })\n .pipe(take(1))\n )\n ).pipe(defaultIfEmpty([] as boolean[])),\n this._internalStatusKeys$,\n this._caseTagsKeys$,\n ]);\n }\n\n private mapDocumentsToItems([res, documentsAuthorization, statusColumnKeys, caseTagsKeys]: [\n {\n documents: Documents | SpecifiedDocuments;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n allStatuses: InternalCaseStatus[];\n assigneeFilter: AssigneeFilter;\n },\n boolean[],\n string[],\n string[],\n ]): {\n data: any[];\n statuses: InternalCaseStatus[];\n statusColumnKeys: string[];\n caseTagsKeys: string[];\n isSearchResult: boolean;\n assigneeFilter: AssigneeFilter;\n } {\n const documentsWithLock = {\n ...res.documents,\n content: res.documents.content.map((document, index) => ({\n ...document,\n locked: !documentsAuthorization[index],\n })),\n };\n\n this.paginationService.setCollectionSize(documentsWithLock);\n this.paginationService.checkPage(documentsWithLock);\n\n return {\n data: this.listService.mapDocuments(documentsWithLock, res.hasApiColumnConfig),\n statuses: res.allStatuses,\n statusColumnKeys,\n caseTagsKeys,\n isSearchResult: res.isSearchResult,\n assigneeFilter: res.assigneeFilter,\n };\n }\n\n private mapStatusAndTagColumns(res: {\n data: any[];\n statuses: InternalCaseStatus[];\n statusColumnKeys: string[];\n caseTagsKeys: string[];\n isSearchResult: boolean;\n assigneeFilter: AssigneeFilter;\n }): any[] {\n if (!Array.isArray(res.data)) return res.data;\n\n this.updateNoResultsMessage(res.isSearchResult, res.assigneeFilter as CaseListTab);\n this.disableExportButton$.next(res.data.length === 0);\n\n return res.data.map(item => {\n const mappedInternalStatusColumns = res.statusColumnKeys.reduce((acc, curr) => {\n const status = res.statuses.find(\n (s: InternalCaseStatus) => s.key === item[curr] || s.key === item.status\n );\n return !status\n ? acc\n : {\n ...acc,\n [curr]: {\n content: status.title,\n type: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n },\n };\n }, {});\n\n const mappedTagColumns = res.caseTagsKeys.reduce((acc, curr) => {\n if (item[curr]) {\n return {\n ...acc,\n [curr]: item[curr].map(tag => ({\n content: tag.title,\n type: CaseTagsUtils.getTagTypeFromCaseTagColor(tag.color),\n })),\n };\n }\n return acc;\n }, {});\n\n return {\n ...item,\n ...mappedInternalStatusColumns,\n ...mappedTagColumns,\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\nexport * from './case-bulk-assign.service';\nexport * from './case-column.service';\nexport * from './case-parameter.service';\nexport * from './case-list.service';\nexport * from './case-list-assignee.service';\nexport * from './case-list-pagination.service';\nexport * from './case-list-search.service';\nexport * from './case-tab.service';\nexport * from './case.service';\nexport * from './case-tab-api.service';\nexport * from './case-list-status.service';\nexport * from './start-modal.service';\nexport * from './case-widgets-api.service';\nexport * from './case-detail-layout.service';\nexport * from './case-list-case-tag.service';\nexport * from './case-export.service';\nexport * from './case-menu.service';\nexport * from './case-header-widget-api.service';\nexport * from './case-list-hidden-columns.service';\nexport * from './case-list-quick-search.service';\nexport * from './case-list-orchestration.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 ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, forkJoin, map, Observable, take, switchMap, catchError, of} from 'rxjs';\nimport {CandidateUser, BulkAssign} from '../../models';\nimport {CaseBulkAssignService} from '../../services';\nimport {CAN_ASSIGN_CASE_PERMISSION, CASE_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {PermissionService} from '@valtimo/access-control';\nimport {TeamsApiService} from '@valtimo/teams';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-bulk-assign-modal',\n templateUrl: './case-bulk-assign-modal.component.html',\n styleUrls: ['./case-bulk-assign-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseBulkAssignModalComponent {\n @HostBinding('class') public modalClass = 'valtimo-case-bulk-assign-modal';\n\n @Input() public set documentIds(value: string[]) {\n if (value) {\n this.documentIds$.next(value);\n }\n }\n @Input() open = false;\n\n @Output() closeEvent = new EventEmitter<BulkAssign | null>();\n\n private readonly documentIds$ = new BehaviorSubject<string[]>([]);\n\n public readonly permittedDocumentIds$ = new BehaviorSubject<string[]>([]);\n public readonly canAssignAllDocuments$ = new BehaviorSubject<boolean>(false);\n public readonly canAssignAnyDocuments$ = new BehaviorSubject<boolean>(false);\n\n public readonly candidateUsers$: Observable<CandidateUser[]> = this.documentIds$.pipe(\n switchMap(documentIds => {\n if (!documentIds?.length) {\n this.permittedDocumentIds$.next([]);\n this.canAssignAllDocuments$.next(false);\n this.canAssignAnyDocuments$.next(false);\n return of([] as CandidateUser[]);\n }\n\n return forkJoin(\n documentIds.map(documentId =>\n this.permissionService\n .requestPermission(CAN_ASSIGN_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: documentId,\n })\n .pipe(take(1))\n )\n ).pipe(\n take(1),\n map(permissions => {\n const canAssignAll = permissions.every(p => p);\n const canAssignAny = permissions.some(p => p);\n const permittedDocumentIds = documentIds.filter((_, index) => permissions[index]);\n\n this.canAssignAllDocuments$.next(canAssignAll);\n this.canAssignAnyDocuments$.next(canAssignAny);\n this.permittedDocumentIds$.next(permittedDocumentIds);\n\n return {canAssignAny, permittedDocumentIds};\n }),\n switchMap(({canAssignAny, permittedDocumentIds}) => {\n if (canAssignAny) {\n return this.bulkAssignService.loadCandidateUsers(permittedDocumentIds).pipe(\n take(1),\n catchError(error => {\n console.error(error);\n return of([] as CandidateUser[]);\n })\n );\n }\n return of([] as CandidateUser[]);\n }),\n catchError(() => {\n this.permittedDocumentIds$.next([]);\n this.canAssignAllDocuments$.next(false);\n this.canAssignAnyDocuments$.next(false);\n return of([] as CandidateUser[]);\n })\n );\n })\n );\n\n public candidateUserItems$: Observable<ListItem[]> = this.candidateUsers$.pipe(\n map((candidateUsers: CandidateUser[]) =>\n candidateUsers.map((candidateUser: CandidateUser) => ({\n id: candidateUser.id,\n content: `${candidateUser.firstName} ${candidateUser.lastName}`,\n selected: this.formGroup.get('assignee')?.value?.id === candidateUser.id,\n }))\n )\n );\n\n public readonly teamItems$: Observable<ListItem[]> = this.teamsApiService.getTeams({size: 1000}).pipe(\n map(page =>\n page.content.map(team => ({\n id: team.key,\n content: team.title,\n selected: this.formGroup.get('team')?.value?.id === team.key,\n }))\n ),\n catchError(() => of([] as ListItem[]))\n );\n\n public formGroup: FormGroup = this.fb.group({\n assignee: this.fb.control(null),\n team: this.fb.control(null),\n });\n\n public get isFormValid(): boolean {\n return !!this.formGroup.get('assignee')?.value || !!this.formGroup.get('team')?.value;\n }\n\n constructor(\n private bulkAssignService: CaseBulkAssignService,\n private fb: FormBuilder,\n private permissionService: PermissionService,\n private teamsApiService: TeamsApiService\n ) {}\n\n public closeModal(confirm?: boolean): void {\n const assignee: ListItem | null = this.formGroup.get('assignee')?.value ?? null;\n const team: ListItem | null = this.formGroup.get('team')?.value ?? null;\n\n if (!confirm || (!assignee?.id && !team?.id)) {\n this.closeEvent.emit(null);\n this.formGroup.reset();\n return;\n }\n\n this.permittedDocumentIds$.pipe(take(1)).subscribe((permittedDocumentIds: string[]) => {\n this.closeEvent.emit({\n ids: permittedDocumentIds,\n assigneeId: assignee?.id ?? undefined,\n assignedTeamKey: team?.id ?? undefined,\n });\n this.formGroup.reset();\n });\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'case.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container\n *ngIf=\"{\n candidateUserItems: candidateUserItems$ | async,\n teamItems: teamItems$ | async,\n canAssignAllDocuments: canAssignAllDocuments$ | async,\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <cds-inline-notification\n *ngIf=\"!obs.canAssignAnyDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignAnyWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-inline-notification\n *ngIf=\"obs.canAssignAnyDocuments && !obs.canAssignAllDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignSomeWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <form *ngIf=\"obs.canAssignAnyDocuments && obs.candidateUserItems\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"obs.candidateUserItems\"\n [label]=\"'case.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n *ngIf=\"obs.teamItems?.length\"\n formControlName=\"team\"\n [dropUp]=\"false\"\n [items]=\"obs.teamItems\"\n [label]=\"'case.bulkAssign.modal.selectTeamLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container\n *ngIf=\"{\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isFormValid || !obs.canAssignAnyDocuments\"\n (click)=\"closeModal(true)\"\n >\n {{ 'case.bulkAssign.modal.confirm' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</cds-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, EventEmitter, Input, Output, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n IconModule,\n IconService,\n LayerModule,\n LoadingModule,\n TagModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailModalComponent,\n TaskModule,\n TaskUpdateSseEvent,\n} from '@valtimo/task';\nimport {SseService} from '@valtimo/sse';\nimport {DocumentService} from '@valtimo/document';\nimport {ActivatedRoute} from '@angular/router';\nimport {PermissionService} from '@valtimo/access-control';\nimport moment from 'moment';\nimport {CaseDetailLayoutService} from '../../services';\nimport {ProcessLinkService, TaskWithProcessLink} from '@valtimo/process-link';\nimport {UserFilled20, Group20} from '@carbon/icons';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-case-detail-task-list',\n templateUrl: './case-detail-task-list.component.html',\n styleUrls: ['./case-detail-task-list.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NgbTooltipModule,\n TranslateModule,\n WidgetModule,\n LoadingModule,\n TaskModule,\n TilesModule,\n LayerModule,\n TagModule,\n CarbonListModule,\n IconModule,\n ],\n})\nexport class CaseDetailTaskListComponent {\n @ViewChild('taskDetail') private readonly _taskDetailModal: TaskDetailModalComponent;\n\n @Input() public set openTaskAndProcessLinkInModal(value: TaskWithProcessLink) {\n if (value) this._taskDetailModal.openTaskAndProcessLinkDetails(value);\n }\n\n @Output() public readonly taskClickEvent = new EventEmitter<TaskWithProcessLink>();\n @Output() public readonly formSubmitEvent = new EventEmitter();\n\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n private readonly _taskUpdateSseEvent$: Observable<TaskUpdateSseEvent | null> = combineLatest([\n this.sseService.getSseEventObservable<TaskUpdateSseEvent>('TASK_UPDATE'),\n this._documentId$,\n ]).pipe(\n filter(([event, documentId]) => event.documentId === documentId),\n map(([event]) => event),\n startWith(null)\n );\n\n public readonly processInstanceTasks$: Observable<{\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n }> = combineLatest([this.caseDetailLayoutService.refreshTasks$, this._taskUpdateSseEvent$]).pipe(\n switchMap(() => this._documentId$),\n switchMap(documentId => this.documentService.findProcessDocumentInstances(documentId)),\n switchMap(processDocumentInstances =>\n combineLatest([\n ...processDocumentInstances.map(processDocumentInstance =>\n this.processLinkService.getTasksWithProcessLinks(\n processDocumentInstance.id.processInstanceId\n )\n ),\n ])\n ),\n map(res => res.reduce((acc, curr) => [...acc, ...curr], [])),\n switchMap(tasksWithProcessLinks =>\n combineLatest([\n of(tasksWithProcessLinks),\n ...(tasksWithProcessLinks || []).map(taskWithProcessLink =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: taskWithProcessLink.task.id,\n })\n ),\n ])\n ),\n map(res => {\n const tasksWithProcessLinks = res[0] || [];\n const permissions = res?.filter((_, index) => index !== 0) as boolean[];\n const mappedTasksWithProcessLinks = this.mapTasksWithProcessLinks(\n tasksWithProcessLinks,\n permissions\n );\n const uniqueTasksWithProcessLinks = this.getUniqueTasksWithProcessLinks(\n mappedTasksWithProcessLinks\n );\n\n return this.getSortedTasksWithProcessLinks(uniqueTasksWithProcessLinks);\n }),\n map(tasksWithProcessLinks => this.sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks)),\n tap(() => this.loadingTasks$.next(false))\n );\n\n public readonly formSize$ = this.caseDetailLayoutService.formDisplaySize$;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly route: ActivatedRoute,\n private readonly permissionService: PermissionService,\n private readonly sseService: SseService,\n private readonly caseDetailLayoutService: CaseDetailLayoutService,\n private readonly processLinkService: ProcessLinkService\n ) {\n this.iconService.registerAll([UserFilled20, Group20]);\n }\n\n public getAssigneeTooltip(task: TaskWithProcessLink['task']): string {\n const name = task.valtimoAssignee?.fullName;\n const team = task.assignedTeam?.title;\n if (name && team) return `${name} & ${team}`;\n return name || team || '';\n }\n\n public rowTaskClick(tasWithProcessLink: TaskWithProcessLink): void {\n if (tasWithProcessLink.task.isLocked) return;\n\n this.taskClickEvent.emit(tasWithProcessLink);\n }\n\n public onFormSubmit(): void {\n this.formSubmitEvent.emit();\n this.refresh();\n }\n\n public refresh(): void {\n this.caseDetailLayoutService.refreshTasks();\n }\n\n private mapTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[],\n permissions: boolean[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.map((taskWithProcessLink, index) => ({\n ...taskWithProcessLink,\n task: {\n ...taskWithProcessLink.task,\n createdUnix: moment(taskWithProcessLink.task.created).unix(),\n created: moment(taskWithProcessLink.task.created).format('DD MMM YYYY HH:mm'),\n ...(taskWithProcessLink.task.due && {dueUnix: moment(taskWithProcessLink.task.due).unix()}),\n isLocked: !permissions[index],\n },\n }));\n }\n\n private getUniqueTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.reduce((acc, curr) => {\n if (!acc.find(taskWithProcessLink => taskWithProcessLink.task.id === curr.task.id)) {\n return [...acc, curr];\n }\n return acc;\n }, [] as TaskWithProcessLink[]);\n }\n\n private getSortedTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.sort((t1, t2) => {\n // high priority tasks on top\n if (t2.task.priority !== t1.task.priority) {\n return t2.task.priority - t1.task.priority;\n }\n\n // task with approaching due date on top\n const due1 = t1?.task.dueUnix || Number.MAX_VALUE;\n const due2 = t2?.task.dueUnix || Number.MAX_VALUE;\n if (due1 !== due2) {\n return due1 - due2;\n }\n\n // new task on top\n const createdCompare = t2.task.createdUnix / 5000 - t1.task.createdUnix / 5000;\n if (createdCompare !== 0) {\n return createdCompare;\n }\n\n // task with approximately the same age, are sorted by name\n return t1.task.name.localeCompare(t2.task.name);\n });\n }\n\n private sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks: TaskWithProcessLink[]): {\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n } {\n return tasksWithProcessLinks.reduce(\n (acc, curr) =>\n !curr.task.isLocked\n ? {...acc, myTasks: [...acc.myTasks, curr]}\n : {...acc, otherTasks: [...acc.otherTasks, curr]},\n {myTasks: [] as TaskWithProcessLink[], otherTasks: [] as TaskWithProcessLink[]}\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 class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n (dueDateChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignedTeam || !!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"getAssigneeTooltip(taskWithProcessLink.task) || ('summary.taskIsAssigned' | translate)\"\n [type]=\"'cool-gray'\"\n >\n @if (!!taskWithProcessLink.task.assignedTeam) {\n <svg cdsIcon=\"group\" size=\"20\"></svg>\n } @else {\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n }\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {AssignmentChangeEvent, AssignmentComponent, PageHeaderService} from '@valtimo/components';\nimport {ConfigService, NamedUser, TeamResponseDto} from '@valtimo/shared';\nimport {ProcessInstanceTask} from '@valtimo/process';\nimport {\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n IntermediateSubmission,\n SetTaskDueDateComponent,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n TaskService,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, shareReplay, switchMap, take} from 'rxjs';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\n\n@Component({\n selector: 'valtimo-case-detail-task-detail',\n templateUrl: './case-detail-task-detail.component.html',\n styleUrl: './case-detail-task-detail.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n ButtonModule,\n IconModule,\n AssignmentComponent,\n SetTaskDueDateComponent,\n ],\n})\nexport class CaseDetailsTaskDetailComponent implements OnDestroy {\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.taskAndProcessLink$.next(value);\n this.task$.next(value.task);\n this.pageValue.set({\n title: value?.task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.task?.created}`,\n });\n }\n @Output() public readonly closeEvent = new EventEmitter();\n @Output() public readonly assignmentOfTaskChanged = new EventEmitter();\n @Output() public readonly dueDateChanged = new EventEmitter();\n @Output() public readonly activeChange = new EventEmitter<boolean>();\n @Output() public readonly formSubmit = new EventEmitter();\n\n public readonly compactMode$: Observable<boolean> = this.pageHeaderService.compactMode$;\n public readonly taskAndProcessLink$ = new BehaviorSubject<TaskWithProcessLink | null>(null);\n public readonly task$ = new BehaviorSubject<ProcessInstanceTask | null>(null);\n public readonly canAssignUserToTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly canModifyTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_MODIFY_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly intermediateSaveValue$ = new BehaviorSubject<IntermediateSubmission | null>(null);\n public readonly pageValue = signal<{title: string; subtitle: string}>({\n title: '',\n subtitle: '',\n });\n public readonly candidateUsers$: Observable<NamedUser[]> = combineLatest([\n this.task$.pipe(filter(task => !!task)),\n this.canAssignUserToTask$,\n ]).pipe(\n switchMap(([task, canAssign]) => (canAssign ? this.taskService.getCandidateUsers(task.id) : of([]))),\n shareReplay(1)\n );\n\n public readonly candidateTeams$: Observable<TeamResponseDto[]> = combineLatest([\n this.task$.pipe(filter(task => !!task)),\n this.canAssignUserToTask$,\n ]).pipe(\n switchMap(([task, canAssign]) =>\n canAssign ? this.taskService.getCandidateTeams(task.id).pipe(map(page => page.content)) : of([])\n ),\n shareReplay(1)\n );\n\n public readonly enableIntermediateSave$ =\n this.configService.getFeatureToggleObservable('enableIntermediateSave');\n\n constructor(\n private readonly configService: ConfigService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService,\n private readonly taskService: TaskService\n ) {}\n\n public ngOnDestroy(): void {\n this.closeEvent.emit();\n }\n\n public onClose(): void {\n this.closeEvent.emit();\n this.onActiveChangeEvent(false);\n }\n\n public onCurrentIntermediateSaveEvent(value: IntermediateSubmission | null): void {\n this.intermediateSaveValue$.next(value);\n this.onActiveChangeEvent(false);\n }\n\n public onActiveChangeEvent(activeChange: boolean): void {\n this.activeChange.emit(activeChange);\n }\n\n public onAssignmentChanged(event: AssignmentChangeEvent): void {\n this.task$.pipe(take(1)).subscribe(task => {\n if (!task) return;\n\n const assignRequest: {assignee?: string; assignedTeamKey?: string} = {};\n if (event.userId !== undefined) assignRequest.assignee = event.userId ?? '';\n if (event.teamKey !== undefined) assignRequest.assignedTeamKey = event.teamKey ?? '';\n\n this.taskService\n .assignTask(task.id, assignRequest)\n .pipe(\n switchMap(() => this.taskService.getTask(task.id)),\n take(1)\n )\n .subscribe(response => {\n this.refreshTask(response);\n this.assignmentOfTaskChanged.emit();\n });\n });\n }\n\n public onUnassigned(): void {\n this.task$.pipe(take(1)).subscribe(task => {\n if (!task) return;\n this.taskService\n .unassignTask(task.id)\n .pipe(\n switchMap(() => this.taskService.getTask(task.id)),\n take(1)\n )\n .subscribe(response => {\n this.refreshTask(response);\n this.assignmentOfTaskChanged.emit();\n });\n });\n }\n\n private refreshTask(response: any): void {\n const currentTask = this.task$.getValue();\n if (!currentTask) return;\n\n const fetchedTask = response.task as Partial<ProcessInstanceTask>;\n if (!fetchedTask) return;\n\n const mergedTask: ProcessInstanceTask = {...currentTask};\n for (const [key, value] of Object.entries(fetchedTask)) {\n if (value !== undefined) {\n (mergedTask as any)[key] = value;\n }\n }\n this.task$.next(mergedTask);\n }\n\n public onDueDateChanged(): void {\n this.dueDateChanged.emit();\n }\n\n public onFormSubmitEvent(): void {\n this.formSubmit.emit();\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 canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-case-detail-task-detail\"\n>\n <section class=\"valtimo-case-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave$ | async\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-case-detail-task-detail__body\"\n [class.valtimo-case-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-case-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assignment\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"onDueDateChanged()\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\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 {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n Subject,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CaseHeaderWidgetApiService} from '../../services';\nimport {PermissionService} from '@valtimo/access-control';\nimport {CAN_VIEW_CASE_PERMISSION, CASE_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {WidgetFieldComponent} from '@valtimo/layout';\nimport {InputModule, LayerModule, LoadingModule} from 'carbon-components-angular';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {DocumentUpdatedSseEvent} from '../../models';\nimport {SseService} from '@valtimo/sse';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-detail-header-widget',\n templateUrl: './case-detail-header-widget.component.html',\n styleUrls: ['./case-detail-header-widget.component.scss'],\n imports: [CommonModule, WidgetFieldComponent, LoadingModule, LayerModule, InputModule],\n})\nexport class CaseDetailHeaderWidgetComponent implements OnInit, OnDestroy {\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId),\n distinctUntilChanged()\n );\n\n public readonly canViewCaseHeaderWidget$ = this._documentId$.pipe(\n switchMap(documentId =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: documentId,\n })\n )\n );\n\n private readonly _fetchData$ = new Subject<null>();\n\n public readonly headerWidget$ = this._documentId$.pipe(\n switchMap(documentId => this.caseHeaderWidgetApiService.getHeaderWidget(documentId)),\n tap(widget => {\n if (!!widget) {\n this._fetchData$.next(null);\n }\n })\n );\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map(theme => {\n const isLight = theme === CurrentCarbonTheme.WHITE || theme === CurrentCarbonTheme.G10;\n return isLight ? CARBON_THEME.G10 : CARBON_THEME.G90;\n })\n );\n\n public readonly headerWidgetData$ = this._fetchData$.pipe(\n switchMap(() => this._documentId$),\n switchMap(documentId => this.caseHeaderWidgetApiService.getHeaderWidgetData(documentId))\n );\n\n private readonly _documentUpdates$ = combineLatest([\n this.sseService.getSseEventObservable<DocumentUpdatedSseEvent>('DOCUMENT_UPDATED'),\n this._documentId$,\n ]).pipe(\n filter(([event, documentId]) => event.documentId === documentId),\n map(([event]) => event),\n startWith<DocumentUpdatedSseEvent | null>(null)\n );\n\n private readonly _subscriptions = new Subscription();\n\n public readonly $noVisibleFields = signal<boolean>(false);\n\n constructor(\n private readonly caseHeaderWidgetApiService: CaseHeaderWidgetApiService,\n private readonly route: ActivatedRoute,\n private readonly permissionService: PermissionService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly sseService: SseService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(this._documentUpdates$.subscribe(() => this._fetchData$.next(null)));\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onNoVisibleFields(noVisibleFields: boolean): void {\n this.$noVisibleFields.set(noVisibleFields);\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 (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n class=\"valtimo-widget-field--compact\"\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\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 {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {FormioBeforeSubmit, FormioForm} from '@formio/angular';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {StartableItem} from '@valtimo/document';\nimport {ProcessService, StartProcessLinkType} from '@valtimo/process';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n ProcessLinkService,\n} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, Subscription, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-supporting-process-start-modal',\n templateUrl: './case-supporting-process-start-modal.component.html',\n styleUrls: ['./case-supporting-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CaseSupportingProcessStartModalComponent implements OnDestroy {\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n\n @Input() isAdmin: boolean;\n @Output() formSubmit = new EventEmitter();\n\n public readonly startProcessLinkType$ = new BehaviorSubject<StartProcessLinkType | null>(null);\n public readonly processDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly processName$ = new BehaviorSubject<string>('');\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(undefined);\n public readonly formioSubmission$ = new BehaviorSubject<FormioSubmission>(undefined);\n public readonly processLinkId$ = new BehaviorSubject<string>('');\n public readonly options$ = new BehaviorSubject<ValtimoFormioOptions>(undefined);\n public readonly submission$ = new BehaviorSubject<object>(undefined);\n public readonly processDefinitionId$ = new BehaviorSubject<string>(undefined);\n public readonly formFlowInstanceId$ = new BehaviorSubject<string>(undefined);\n public readonly documentId$ = new BehaviorSubject<string>(undefined);\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly isLoading$ = new BehaviorSubject<boolean>(true);\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n private _caseDefinitionVersionTag: string;\n private _buildingBlockDefinitionKey: string | null = null;\n private _buildingBlockDefinitionVersionTag: string | null = null;\n\n public readonly closeModalEvent = new EventEmitter();\n\n private _formViewModelSubscription!: Subscription;\n\n constructor(\n private readonly router: Router,\n private readonly processService: ProcessService,\n private readonly processLinkService: ProcessLinkService,\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 ) {\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n public ngOnDestroy(): void {\n this._formViewModelSubscription?.unsubscribe();\n }\n\n private loadProcessLink(): void {\n this.startProcessLinkType$.next(null);\n this.formViewModelDynamicContainer?.clear();\n this.formCustomComponentDynamicContainer?.clear();\n\n combineLatest([this.processDefinitionId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processDefinitionId, documentId]) =>\n this.processService.getProcessDefinitionStartProcessLink(\n processDefinitionId,\n documentId,\n null\n )\n )\n )\n .subscribe(startProcessResult => {\n this.isLoading$.next(false);\n\n if (startProcessResult) {\n this.startProcessLinkType$.next(startProcessResult.type);\n\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition$.next(startProcessResult.properties.prefilledForm);\n this.processLinkId$.next(startProcessResult.processLinkId);\n break;\n case 'form-flow':\n this.formFlowInstanceId$.next(startProcessResult.properties.formFlowInstanceId);\n break;\n case 'form-view-model':\n this.formDefinition$.next(startProcessResult.properties.formDefinition);\n this.setFormViewModelComponent(startProcessResult.properties.formName);\n this.openCdsModal();\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.openCdsModal();\n break;\n }\n this.openCdsModal();\n }\n });\n }\n\n public openModalForStartableItem(\n item: StartableItem,\n documentId: string,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string\n ): void {\n this.isLoading$.next(true);\n this.documentId$.next(documentId);\n this.caseDefinitionKey$.next(caseDefinitionKey);\n this._caseDefinitionVersionTag = caseDefinitionVersionTag;\n this.processDefinitionId$.next(item.processDefinitionId);\n this.processName$.next(item.name || item.key);\n\n if (item.type === 'BUILDING_BLOCK') {\n this._buildingBlockDefinitionKey = item.key;\n this._buildingBlockDefinitionVersionTag = item.versionTag;\n } else {\n this._buildingBlockDefinitionKey = null;\n this._buildingBlockDefinitionVersionTag = null;\n this.processDefinitionKey$.next(item.key);\n }\n\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n options.setHooks(formioBeforeSubmit);\n\n this.options$.next(options);\n\n this.loadProcessLink();\n this.openCdsModal();\n }\n\n public onSubmit(submission: FormioSubmission): void {\n this.formioSubmission$.next(submission);\n\n if (this.processLinkId$.getValue()) {\n combineLatest([this.processLinkId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processLinkId, documentId]) =>\n this.processLinkService.submitForm(processLinkId, submission.data, documentId)\n )\n )\n .subscribe({\n next: () => {\n this.formSubmitted();\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n }\n\n public formSubmitted(): void {\n this.closeCdsModal();\n this.formSubmit.emit();\n this.isLoading$.next(true);\n this.formDefinition$.next(null);\n }\n\n public gotoFormLinkScreen(): void {\n this.closeCdsModal();\n\n if (this._buildingBlockDefinitionKey && this._buildingBlockDefinitionVersionTag) {\n this.router.navigate([\n `/building-block-management/building-block/${this._buildingBlockDefinitionKey}/version/${this._buildingBlockDefinitionVersionTag}/process-definition/${this.processDefinitionId$.getValue()}`,\n ]);\n } else {\n this.router.navigate([\n `/case-management/case/${this.caseDefinitionKey$.getValue()}/version/${this._caseDefinitionVersionTag}/processes/${this.processDefinitionKey$.getValue()}`,\n ]);\n }\n }\n\n public onCloseSelect(): void {\n this.closeCdsModal();\n }\n\n private setFormViewModelComponent(formName: string): void {\n if (!this.formViewModel.component) return;\n\n this.formViewModelDynamicContainer.clear();\n\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n\n combineLatest([\n this.formDefinition$,\n this.processDefinitionKey$,\n this.caseDefinitionKey$,\n this.options$,\n this.documentId$,\n ])\n .pipe(take(1))\n .subscribe(([form, processDefinitionKey, caseDefinitionKey, options, documentId]) => {\n formViewModelComponent.instance.formName = formName;\n formViewModelComponent.instance.form = form;\n formViewModelComponent.instance.processDefinitionKey = processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = caseDefinitionKey;\n formViewModelComponent.instance.options = options;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.documentId = documentId;\n });\n\n formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {\n this.formSubmitted();\n });\n\n this._formViewModelSubscription?.unsubscribe();\n this._formViewModelSubscription = this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n });\n\n this.isLoading$.next(false);\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n combineLatest([this.processDefinitionKey$, this.caseDefinitionKey$, this.documentId$])\n .pipe(take(1))\n .subscribe(([processDefinitionKey, caseDefinitionKey, documentId]) => {\n renderedComponent.instance.processDefinitionKey = processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = caseDefinitionKey;\n renderedComponent.instance.documentId = documentId;\n });\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.formSubmitted();\n });\n });\n }\n\n private closeCdsModal(): void {\n this.modalOpen$.next(false);\n }\n\n private openCdsModal(): void {\n this.modalOpen$.next(true);\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 [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\" [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-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 {Pipe, PipeTransform} from '@angular/core';\nimport {map, Observable, of} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TabImpl} from '../../models';\n\n@Pipe({\n standalone: false,\n name: 'tabTranslate',\n})\nexport class TabTranslatePipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n transform(tab: TabImpl): Observable<string> {\n const translationId = 'case.tabs.' + tab.name;\n\n return tab.title\n ? of(tab.title)\n : this.translateService\n .stream(translationId)\n .pipe(map(translation => (translationId !== translation ? translation : tab.name)));\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 {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n Inject,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationStart, ParamMap, Params, Router} from '@angular/router';\nimport {ChevronDown16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n AssignmentChangeEvent,\n BreadcrumbService,\n CdsThemeService,\n CurrentCarbonTheme,\n ObserveSizeDirective,\n PageHeaderService,\n PageTitleService,\n} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {\n CaseStatusService,\n CaseTag,\n CaseTagsUtils,\n Document as ValtimoDocument,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n StartableItem,\n} from '@valtimo/document';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\nimport {UserProviderService} from '@valtimo/security';\nimport {IntermediateSubmission} from '@valtimo/task';\nimport {IconService} from 'carbon-components-angular';\nimport {KeycloakService} from 'keycloak-angular';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE,\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE,\n CASE_DETAIL_GUTTER_SIZE,\n CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\n} from '../../constants';\nimport {TabImpl, TabLoaderImpl} from '../../models';\nimport {\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n CASE_DETAIL_PERMISSION_RESOURCE,\n} from '../../permissions';\nimport {CaseDetailLayoutService, CaseService, CaseTabService} from '../../services';\nimport {CaseSupportingProcessStartModalComponent} from '../case-supporting-process-start-modal/case-supporting-process-start-modal.component';\nimport {WidgetsService} from './tab/widgets/widgets.service';\n\n@Component({\n standalone: false,\n templateUrl: './case-detail.component.html',\n styleUrls: ['./case-detail.component.scss'],\n providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective],\n})\nexport class CaseDetailComponent implements AfterViewInit, OnDestroy {\n @ViewChild('supportingProcessStartModal')\n supportingProcessStart: CaseSupportingProcessStartModalComponent;\n\n @ViewChild('tabContainer', {read: ViewContainerRef})\n viewContainerRef: ViewContainerRef;\n\n @ViewChild('tabContentContainer')\n private readonly _tabContentContainer!: ElementRef<HTMLDivElement>;\n\n public document: ValtimoDocument | null = null;\n public caseDefinitionKey: string;\n public caseDefinitionVersionTag: string;\n public documentDefinitionTitle: string;\n public documentId: string;\n public processDefinitionListFields: Array<any> = [];\n public startableItems: (StartableItem & {displayName?: string})[] = [];\n public tabLoader: TabLoaderImpl | null = null;\n\n public readonly assigneeId$ = new BehaviorSubject<string>('');\n public readonly currentIntermediateSave$ = new BehaviorSubject<IntermediateSubmission | null>(\n null\n );\n public readonly isAdmin$: Observable<boolean> = this.userProviderService\n .getUserSubject()\n .pipe(map(userIdentity => userIdentity?.roles?.includes('ROLE_ADMIN')));\n\n public readonly taskAndProcessLinkOpenedInPanel$ =\n this.caseDetailLayoutService.taskAndProcessLinkOpenedInPanel$;\n\n private readonly _caseStatusKey$ = new BehaviorSubject<string | null | 'NOT_AVAILABLE'>(null);\n\n public readonly dropdownWidth$ = new BehaviorSubject<number>(\n CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n );\n public readonly caseStatusKey$: Observable<string | 'NOT_AVAILABLE'> = this._caseStatusKey$.pipe(\n filter(key => !!key)\n );\n\n public readonly _caseTags$ = new BehaviorSubject<CaseTag[] | null>(null);\n\n public readonly showDeleteModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n public readonly canView$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly document$: Observable<ValtimoDocument | null> = combineLatest([\n this.caseService.refreshDocument$,\n this.canView$,\n ]).pipe(\n filter(([_, canView]) => canView),\n switchMap(() => this.route.params),\n map((params: Params) => params?.documentId),\n switchMap((documentId: string) =>\n documentId ? this.documentService.getDocument(this.documentId) : of(null)\n ),\n tap((document: ValtimoDocument | null) => {\n if (document) {\n this.assigneeId$.next(document.assigneeId);\n this.document = document;\n this._caseStatusKey$.next(document?.internalStatus || 'NOT_AVAILABLE');\n this._caseTags$.next(document?.caseTags || null);\n }\n })\n );\n\n public readonly caseDefinitionKey$: Observable<string> = this.route.params.pipe(\n map(params => params.caseDefinitionKey || '')\n );\n\n public readonly caseStatus$: Observable<InternalCaseStatus | undefined> =\n this.caseDefinitionKey$.pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey =>\n combineLatest([\n this.caseStatusService.getInternalCaseStatuses(caseDefinitionKey),\n this.caseStatusKey$,\n ])\n ),\n map(\n ([statuses, key]) => key !== 'NOT_AVAILABLE' && statuses.find(status => status?.key === key)\n ),\n map(\n status =>\n status && {\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }\n )\n );\n\n public readonly caseTags$: Observable<CaseTag[] | undefined> = this.caseDefinitionKey$.pipe(\n filter(documentDefinitionName => !!documentDefinitionName),\n switchMap(documentDefinitionName => this._caseTags$),\n map(\n tag =>\n tag &&\n tag.map(caseTag => ({\n ...caseTag,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),\n }))\n )\n );\n\n public readonly hasCaseTags$: Observable<boolean> = this._caseTags$.pipe(\n map(caseTags => Array.isArray(caseTags) && caseTags.length > 0),\n tap((hasCaseTags: boolean) => this.caseDetailLayoutService.setHasCaseTags(hasCaseTags))\n );\n\n public readonly userId$: Observable<string | undefined> = of(\n this.keyCloakService.isLoggedIn()\n ).pipe(\n switchMap(() => this.keyCloakService.loadUserProfile()),\n map(profile => profile?.id)\n );\n\n public readonly isAssigning$ = new BehaviorSubject<boolean>(false);\n public readonly isAssignedToCurrentUser$: Observable<boolean> = combineLatest([\n this.assigneeId$,\n this.userId$,\n ]).pipe(\n map(([assigneeId, userId]) => !!assigneeId && !!userId && assigneeId === userId),\n startWith(true)\n );\n\n public readonly canHaveAssignee$: Observable<boolean> = this.caseDefinitionKey$.pipe(\n switchMap(caseDefinitionKey => this.documentService.getCaseSettings(caseDefinitionKey)),\n map(caseSettings => caseSettings?.canHaveAssignee)\n );\n\n public readonly canAssignLoaded$ = new BehaviorSubject<boolean>(false);\n public readonly canAssign$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_ASSIGN_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n ),\n tap(() => {\n this.canAssignLoaded$.next(true);\n })\n );\n\n public readonly candidateUsers$ = combineLatest([\n this.caseService.refreshDocument$,\n this.canAssign$,\n ]).pipe(\n switchMap(([_, canAssign]) =>\n canAssign ? this.documentService.getCandidateUsers(this.documentId) : of([])\n ),\n shareReplay(1)\n );\n\n public readonly candidateTeams$ = combineLatest([\n this.caseService.refreshDocument$,\n this.canAssign$,\n ]).pipe(\n switchMap(([_, canAssign]) =>\n canAssign\n ? this.documentService.getCandidateTeams(this.documentId).pipe(map(page => page.content))\n : of([])\n ),\n shareReplay(1)\n );\n\n public readonly canClaim$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_CLAIM_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly isDeleting$ = new BehaviorSubject<boolean>(false);\n public readonly canDelete$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_DELETE_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly loadingTabs$ = new BehaviorSubject<boolean>(true);\n public readonly noTabsConfigured$ = new BehaviorSubject<boolean>(false);\n public readonly showNoAccess$ = new BehaviorSubject<boolean>(false);\n public activeTab$: Observable<TabImpl>;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly $tabHorizontalOverflowDisabled =\n this.caseTabService.$tabHorizontalOverflowDisabled;\n public readonly smallTitle$ = this.pageHeaderService.smallTitle$;\n\n public readonly showTaskList$ = this.caseTabService.showTaskList$;\n\n private readonly _activeTabName$ = new BehaviorSubject<string | null>(null);\n public get activeTabName$(): Observable<string | null> {\n return combineLatest([this.route.paramMap, this._activeTabName$]).pipe(\n map(([paramMap, activeTabName]) =>\n !activeTabName ? (paramMap.get('tab') ?? null) : activeTabName\n )\n );\n }\n\n public readonly CASE_DETAIL_GUTTER_SIZE = CASE_DETAIL_GUTTER_SIZE;\n\n public readonly caseDetailLayout$ = this.caseDetailLayoutService.caseDetailLayout$;\n\n public readonly openTaskAndProcessLinkInModal$ = new Subject<TaskWithProcessLink>();\n\n public readonly isDarkMode$ = this.cdsThemeService.currentTheme$.pipe(\n map(currentTheme => currentTheme === CurrentCarbonTheme.G90)\n );\n\n public readonly tabContentContainerMaxHeight$ =\n this.caseDetailLayoutService.tabContentContainerMaxHeight$;\n\n private _snapshot: ParamMap;\n private _initialTabName: string;\n private _activeChange = false;\n private _oldTabName: string;\n private _pendingTab: TabImpl;\n private _observer!: ResizeObserver;\n private _tabsInit = false;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly caseStatusService: CaseStatusService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly documentService: DocumentService,\n private readonly caseDetailLayoutService: CaseDetailLayoutService,\n private readonly caseService: CaseService,\n private readonly caseTabService: CaseTabService,\n private readonly iconService: IconService,\n private readonly keyCloakService: KeycloakService,\n private readonly logger: NGXLogger,\n private readonly notificationService: GlobalNotificationService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly pageTitleService: PageTitleService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService,\n private readonly renderer: Renderer2,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly widgetsService: WidgetsService,\n private readonly userProviderService: UserProviderService,\n @Inject(DOCUMENT) private readonly htmlDocument: Document\n ) {\n this._snapshot = this.route.snapshot.paramMap;\n this.caseDefinitionKey = this._snapshot.get('caseDefinitionKey') || '';\n this.documentId = this._snapshot.get('documentId') || '';\n this.widgetsService.documentId = this.documentId;\n }\n\n public ngAfterViewInit(): void {\n this.initTabLoader();\n this.initBreadcrumb();\n this.openWidthObserver();\n this.pageTitleService.disableReset();\n this.iconService.registerAll([ChevronDown16]);\n this.setDocumentStyle();\n this.enableResetOnBackNavigation();\n this.openWidgetProcessSubscription();\n this.openSmallTitleSubscription();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n this.pageTitleService.enableReset();\n this.removeDocumentStyle();\n this._subscriptions.unsubscribe();\n this.pageHeaderService.disableSmallTitle();\n }\n\n public getAllAssociatedProcessDefinitions(): void {\n this._subscriptions.add(\n combineLatest([\n this.documentService.getStartableItems({caseDocumentId: this.documentId}),\n this.translateService.stream('key'),\n ]).subscribe(([startableItems]) => {\n this.startableItems = this.mapStartableItems(startableItems);\n this.setProcessDropdownWidth();\n\n this.processDefinitionListFields = [\n {\n key: 'processName',\n label: 'Proces',\n },\n ];\n })\n );\n }\n\n public startItem(item: StartableItem): void {\n this.supportingProcessStart.openModalForStartableItem(\n item,\n this.documentId,\n this.caseDefinitionKey,\n this.caseDefinitionVersionTag\n );\n }\n\n public openWidgetProcessSubscription(): void {\n this._subscriptions.add(\n this.widgetsService.startProcessEvent\n .pipe(\n switchMap(() => this.widgetsService.activeProcess$),\n filter((item): item is StartableItem => !!item)\n )\n .subscribe(item => {\n this.startItem(item);\n })\n );\n }\n\n public claimAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.assignHandlerToDocument(this.documentId, userId ?? '')\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.caseService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while assigning user to case');\n },\n });\n }\n\n public unassignAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.unassignHandlerFromDocument(this.documentId)\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.caseService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while unassigning user from case');\n },\n });\n }\n\n public deleteDocument(): void {\n this.showDeleteModal$.next(true);\n }\n\n public onConfirmDelete(): void {\n this.isDeleting$.next(true);\n this.documentService.deleteDocument(this.documentId).subscribe({\n next: (): void => {\n this.isDeleting$.next(false);\n this.showDeleteModal$.next(false);\n this.router.navigate([`/cases/${this.caseDefinitionKey}`]);\n },\n error: (): void => {\n this.isDeleting$.next(false);\n this.logger.debug('Something went wrong while deleting the case');\n },\n });\n }\n\n public onTaskClickEvent(taskProcessLinkResult: TaskWithProcessLink): void {\n if (!taskProcessLinkResult.processLinkActivityResult) {\n this.isAdmin$.pipe(take(1)).subscribe(isAdmin => {\n this.handleNoTaskProcessLink(isAdmin);\n });\n return;\n }\n\n const displayType =\n taskProcessLinkResult.processLinkActivityResult.properties.formDisplayType ||\n CASE_DETAIL_DEFAULT_DISPLAY_TYPE;\n const size =\n taskProcessLinkResult.processLinkActivityResult.properties.formSize ||\n CASE_DETAIL_DEFAULT_DISPLAY_SIZE;\n\n this.caseDetailLayoutService.setFormDisplaySize(size);\n this.caseDetailLayoutService.setFormDisplayType(displayType);\n\n if (displayType === 'panel') {\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(taskProcessLinkResult);\n } else {\n this.openTaskAndProcessLinkInModal$.next({...taskProcessLinkResult});\n }\n }\n\n public onTaskDetailsClose(): void {\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n public onActiveChangeEvent(event: boolean): void {\n this._activeChange = event;\n }\n\n public onTabSelected(tab: TabImpl, activeTab: TabImpl): void {\n if (!this.tabLoader) return;\n\n if (!this._tabsInit) {\n this._tabsInit = true;\n return;\n }\n\n this._oldTabName = activeTab.name;\n this._pendingTab = tab;\n this._activeTabName$.next(tab.name);\n\n // to do: re-introduce when pending changes is implemented again\n // this.pendingChanges =\n // tab.contentKey === 'summary' ? false : !tab.showTasks && this._activeChange;\n //\n // if (this.pendingChanges) {\n // this.tabLoader.replaceUrlState(tab);\n // return;\n // }\n\n if (!tab.showTasks) this.openTaskAndProcessLinkInModal$.next(null);\n this.tabLoader.load(tab);\n this.setDocumentStyle();\n }\n\n public onFormSubmitEvent(): void {\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n this.caseDetailLayoutService.refreshTasks();\n this.tabLoader?.refreshView();\n }\n\n public onDueDateChanged(): void {\n this.caseDetailLayoutService.refreshTasks();\n }\n\n public onMainContentHeaderHeightChange(height: number): void {\n this.caseDetailLayoutService.setMainContentHeaderHeight(height);\n }\n\n protected onConfirmRedirect(): void {\n if (!this.tabLoader || !this._pendingTab) return;\n this._activeChange = false;\n this._activeTabName$.next(this._pendingTab.name);\n this.tabLoader.load(this._pendingTab);\n this.caseDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n protected onCancelRedirect(): void {\n if (!this.tabLoader) return;\n this._activeTabName$.next(this._oldTabName);\n }\n\n private initBreadcrumb(): void {\n this.documentService.getDocumentDefinition(this.caseDefinitionKey).subscribe(definition => {\n this.documentDefinitionTitle = definition.schema.title;\n this.caseDefinitionVersionTag = definition.id.blueprintId.blueprintVersionTag;\n this.setBreadcrumb();\n });\n }\n\n private initTabLoader(): void {\n combineLatest([this.caseTabService.tabs$, this.canView$])\n .pipe(take(1))\n .subscribe(([tabs, canView]) => {\n if (canView) {\n if (tabs?.length > 0) {\n this._initialTabName = this._snapshot.get('tab') ?? '';\n this.tabLoader = new TabLoaderImpl(\n tabs,\n this.componentFactoryResolver,\n this.viewContainerRef,\n this.router,\n this.route\n );\n this.tabLoader.initial(this._initialTabName);\n this.caseTabService.setTabLoader(this.tabLoader);\n this.loadingTabs$.next(false);\n this.activeTab$ = this.tabLoader.activeTab$;\n } else {\n this.noTabsConfigured$.next(true);\n this.loadingTabs$.next(false);\n }\n\n this.getAllAssociatedProcessDefinitions();\n } else {\n this.showNoAccess$.next(true);\n this.loadingTabs$.next(false);\n }\n });\n }\n\n public assignmentOfDocumentChanged(): void {\n this.caseService.refresh();\n }\n\n public onAssignmentChanged(event: AssignmentChangeEvent): void {\n const assigneeId = event.userId !== undefined ? (event.userId ?? '') : undefined;\n const assignedTeamKey = event.teamKey !== undefined ? (event.teamKey ?? '') : undefined;\n\n this.documentService\n .assignHandlerToDocument(this.documentId, assigneeId, assignedTeamKey)\n .subscribe(() => {\n this.caseService.refresh();\n });\n }\n\n public onUnassigned(): void {\n this.documentService.unassignHandlerFromDocument(this.documentId).subscribe(() => {\n this.caseService.refresh();\n });\n }\n\n private getNestedProperty(obj: any, path: string, defaultValue: any): any {\n return (\n path.split('.').reduce((currentObject, key) => currentObject?.[key], obj) || defaultValue\n );\n }\n\n private setBreadcrumb(): void {\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/cases/${this.caseDefinitionKey}`],\n content: this.documentDefinitionTitle,\n href: `/cases/${this.caseDefinitionKey}`,\n });\n }\n\n private openWidthObserver(): void {\n if (!this._tabContentContainer.nativeElement) return;\n\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._tabContentContainer.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n this.caseDetailLayoutService.setTabContentContainerWidth(elementWidth);\n }\n }\n\n private setDocumentStyle(): void {\n this.renderer.addClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private removeDocumentStyle(): void {\n this.renderer.removeClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private enableResetOnBackNavigation(): void {\n this._subscriptions.add(\n this.router.events\n .pipe(\n filter(\n event => event instanceof NavigationStart && event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n this.pageTitleService.enableReset();\n })\n );\n }\n\n private handleNoTaskProcessLink(isAdmin: boolean): void {\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('case.noLinkedProcessNotification'),\n ...(isAdmin && {\n actions: [\n {\n text: this.translateService.instant('dossier.configure'),\n click: () => this.router.navigate(['/process-links']),\n },\n ],\n }),\n });\n }\n\n private mapStartableItems(items: StartableItem[]): (StartableItem & {displayName: string})[] {\n return items.map(item => ({\n ...item,\n displayName:\n this.translateService.instant(item.key) !== item.key\n ? this.translateService.instant(item.key)\n : item.name || item.key,\n }));\n }\n\n private setProcessDropdownWidth(): void {\n const longestName = this.startableItems.reduce(\n (acc, curr) =>\n !!curr.displayName && curr.displayName.length > acc ? curr.displayName.length : acc,\n 0\n );\n\n this.dropdownWidth$.next(\n longestName < 20\n ? CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n : longestName < 40\n ? CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.medium\n : CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH.large\n );\n }\n\n private openSmallTitleSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.hasCaseTags$, this.compactMode$]).subscribe(\n ([hasCaseTags, compactMode]) => {\n if (!compactMode && hasCaseTags) {\n this.pageHeaderService.enableSmallTitle();\n } else {\n this.pageHeaderService.disableSmallTitle();\n }\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n (dueDateChanged)=\"onDueDateChanged()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-assignment\n *ngIf=\"canAssignLoaded$ | async\"\n mode=\"case\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [assignedTeamKey]=\"document.assignedTeamKey\"\n [assignedTeamTitle]=\"document.assignedTeamTitle\"\n [hasPermission]=\"canAssign\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <v-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (selected)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template\n #unassignButton\n let-canAssign=\"canAssign\"\n let-canHaveAssignee=\"canHaveAssignee\"\n let-assigneeId=\"assigneeId\"\n>\n <v-overflow-menu-option\n *ngIf=\"canHaveAssignee && canAssign\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <v-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (selected)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"startableItems.length === 0\"\n [ngbTooltip]=\"startableItems.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <v-overflow-menu\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n placement=\"bottom-end\"\n class=\"overflow-button assign-overflow\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <v-overflow-menu-trigger\n overflowTrigger\n [compact]=\"compactMode$ | async\"\n ></v-overflow-menu-trigger>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {\n canAssign: obs.canAssign,\n canHaveAssignee: obs.canHaveAssignee,\n assigneeId: obs.assigneeId,\n }\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </v-overflow-menu>\n\n <v-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [menuWidth]=\"dropdownWidth$ | async\"\n placement=\"bottom-end\"\n class=\"overflow-button case-detail-overflow\"\n >\n <ng-container overflowTrigger>\n <ng-container *ngTemplateOutlet=\"customStartTrigger\"></ng-container>\n </ng-container>\n <v-overflow-menu-option\n *ngFor=\"let startableItem of startableItems\"\n [attr.title]=\"startableItem.displayName\"\n (selected)=\"startItem(startableItem)\"\n >\n {{ startableItem.displayName }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </div>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {FormioBeforeSubmit, FormioForm} from '@formio/angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n FormioComponent,\n FormIoModule,\n FormioOptionsImpl,\n FormioSubmission,\n RenderInBodyComponent,\n ValtimoCdsModalDirective,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {ProcessDefinitionCaseDefinition} from '@valtimo/document';\nimport {ProcessService} from '@valtimo/process';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormSubmissionResult,\n ProcessLinkModule,\n ProcessLinkService,\n UrlResolverService,\n} from '@valtimo/process-link';\nimport {UserProviderService} from '@valtimo/security';\nimport {ConfigService, FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/shared';\nimport {DialogModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {CAN_VIEW_CASE_PERMISSION, CASE_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {CaseListService, StartModalService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-process-start-modal',\n templateUrl: './case-process-start-modal.component.html',\n styleUrls: ['./case-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n TranslateModule,\n ProcessLinkModule,\n FormIoModule,\n ValtimoCdsModalDirective,\n DialogModule,\n ModalModule,\n LayerModule,\n RenderInBodyComponent,\n ],\n})\nexport class CaseProcessStartModalComponent implements OnInit, OnDestroy {\n public processDefinitionKey: string;\n public processDefinitionId: string;\n public caseDefinitionKey: string;\n public processName: string;\n private _startEventName: string;\n private get _useStartEventNameAsStartFormTitle(): boolean {\n return !!this.configService.featureToggles?.useStartEventNameAsStartFormTitle;\n }\n public formDefinition: FormioForm;\n public formName: string;\n public formFlowInstanceId: string;\n public formioSubmission: FormioSubmission;\n private processLinkId: string;\n public options: ValtimoFormioOptions;\n public isAdmin: boolean;\n public isFormViewModel = false;\n public isUIComponent = false;\n @Input() navigateAfterSubmit = true;\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n @Output() formFlowComplete = new EventEmitter();\n @Output() noProcessLinked = new EventEmitter<string>();\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n private _subscriptions = new Subscription();\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n public readonly closeModalEvent = new EventEmitter();\n\n constructor(\n private router: Router,\n private processService: ProcessService,\n private processLinkService: ProcessLinkService,\n private userProviderService: UserProviderService,\n private permissionService: PermissionService,\n private listService: CaseListService,\n private startModalService: StartModalService,\n private configService: ConfigService,\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 urlResolverService: UrlResolverService\n ) {\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n public ngOnInit(): void {\n this.isUserAdmin();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private loadProcessLink(): void {\n this.processLinkId = null;\n this.formDefinition = null;\n this.formFlowInstanceId = null;\n this.formViewModelDynamicContainer?.clear();\n this.formCustomComponentDynamicContainer?.clear();\n if (this._useStartEventNameAsStartFormTitle) {\n this.processService.getProcessDefinitionXml(this.processDefinitionId).subscribe(result => {\n this._startEventName = this.startModalService.getStandardStartEventTitle(result.bpmn20Xml);\n });\n }\n this.processService\n .getProcessDefinitionStartProcessLink(this.processDefinitionId, null, this.caseDefinitionKey)\n .pipe(take(1))\n .subscribe(startProcessResult => {\n if (startProcessResult) {\n this.isUIComponent = false;\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition = startProcessResult.properties.prefilledForm;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = false;\n this.openCdsModal();\n break;\n case 'form-flow':\n this.formFlowInstanceId = startProcessResult.properties.formFlowInstanceId;\n this.isFormViewModel = false;\n this.openCdsModal();\n break;\n case 'form-view-model':\n this.formDefinition = startProcessResult.properties.formDefinition;\n this.formName = startProcessResult.properties.formName;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = true;\n this.setFormViewModelComponent();\n this.openCdsModal();\n break;\n case 'url':\n this.processLinkId = startProcessResult.processLinkId;\n this.processLinkService\n .getVariables()\n .pipe(take(1))\n .subscribe(variables => {\n let url = this.urlResolverService.resolveUrlVariables(\n startProcessResult.properties.url,\n variables.variables\n );\n window.open(url, '_blank').focus();\n this.processLinkService\n .submitURLProcessLink(this.processLinkId)\n .subscribe(result => {\n this.submitCompleted(result);\n });\n });\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.isUIComponent = true;\n this.openCdsModal();\n break;\n }\n } else {\n this.noProcessLinked.emit(this.processDefinitionKey);\n }\n });\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeCdsModal();\n this.router.navigate(['case-management']);\n }\n\n public get modalTitle() {\n const fallbackTitle = `Start - ${this.processName}`;\n return this._useStartEventNameAsStartFormTitle\n ? this._startEventName || fallbackTitle\n : fallbackTitle;\n }\n\n openModal(processDefinitionCaseDefinition: ProcessDefinitionCaseDefinition) {\n this.processDefinitionKey = processDefinitionCaseDefinition.processDefinitionKey;\n this.caseDefinitionKey = processDefinitionCaseDefinition.id.caseDefinitionId.key;\n this.processDefinitionId = processDefinitionCaseDefinition.id.processDefinitionId;\n this.processName = processDefinitionCaseDefinition.processDefinitionName;\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n this.options.setHooks(formioBeforeSubmit);\n this.loadProcessLink();\n }\n\n public onSubmit(submission: FormioSubmission) {\n this.formioSubmission = submission;\n\n this.processLinkService.submitForm(this.processLinkId, submission.data).subscribe({\n next: (formSubmissionResult: FormSubmissionResult) => {\n this.submitCompleted(formSubmissionResult);\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n\n public formFlowSubmitted(result?: any[]): void {\n const documentId = result\n ?.filter(item => item?.documentId)\n ?.map(item => item.documentId)?.[0];\n if (documentId) {\n this.submitCompleted({documentId, errors: []});\n } else {\n this.formFlowComplete.emit(null);\n this.closeCdsModal();\n }\n }\n\n public isUserAdmin(): void {\n this.userProviderService.getUserSubject().subscribe(\n userIdentity => {\n this.isAdmin = userIdentity.roles.includes('ROLE_ADMIN');\n },\n error => {\n this.isAdmin = false;\n }\n );\n }\n\n public onCloseSelect(): void {\n this.closeCdsModal();\n }\n\n private submitCompleted(formSubmissionResult: FormSubmissionResult): void {\n this.closeCdsModal();\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: formSubmissionResult.documentId,\n })\n .subscribe(canViewCase => {\n if (canViewCase && this.navigateAfterSubmit) {\n this.router.navigate([\n 'cases',\n this.caseDefinitionKey,\n 'document',\n formSubmissionResult.documentId,\n ]);\n } else {\n this.listService.forceRefresh();\n }\n });\n }\n\n private setFormViewModelComponent() {\n if (!this.formViewModel.component) return;\n this.formViewModelDynamicContainer.clear();\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition;\n formViewModelComponent.instance.formName = this.formName;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.processDefinitionKey = this.processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = this.caseDefinitionKey;\n this._subscriptions.add(\n formViewModelComponent.instance.formSubmit.subscribe(() => {\n this.listService.forceRefresh();\n this.closeCdsModal();\n })\n );\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n })\n );\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = this.caseDefinitionKey;\n renderedComponent.instance.documentId = null;\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.closeCdsModal();\n });\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n renderedComponent.destroy();\n })\n );\n });\n }\n\n private openCdsModal(): void {\n this.modalOpen$.next(false);\n setTimeout(() => this.modalOpen$.next(true));\n }\n\n private closeCdsModal(): void {\n this.modalOpen$.next(true);\n setTimeout(() => this.modalOpen$.next(false));\n this.closeModalEvent.emit();\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<valtimo-render-in-body>\n <cds-modal [open]=\"modalOpen$ | async\" size=\"sm\" valtimoCdsModal [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted($event)\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n </cds-modal>\n</valtimo-render-in-body>\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 {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {RenderInBodyComponent, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {CaseSettings, DocumentService, ProcessDefinitionCaseDefinition} from '@valtimo/document';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {DialogModule, ModalModule, TilesModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n} from 'rxjs';\n\nimport {CaseListService} from '../../services';\nimport {CaseProcessStartModalComponent} from '../case-process-start-modal/case-process-start-modal.component';\n\ndeclare const $;\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-list-actions',\n templateUrl: './case-list-actions.component.html',\n styleUrls: ['./case-list-actions.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n DialogModule,\n ModalModule,\n ValtimoCdsModalDirective,\n TilesModule,\n CaseProcessStartModalComponent,\n RenderInBodyComponent,\n ],\n})\nexport class CaseListActionsComponent implements OnInit {\n @ViewChild('processStartModal') processStart: CaseProcessStartModalComponent;\n\n private readonly _loading$ = new BehaviorSubject<boolean>(true);\n @Input() set loading(value: boolean) {\n this._loading$.next(value);\n }\n @Input() navigateAfterSubmit = true;\n\n @Output() public readonly formFlowComplete = new EventEmitter();\n @Output() public readonly startButtonDisableEvent = new EventEmitter<boolean>();\n\n private readonly _caseSettings$ = new BehaviorSubject<CaseSettings | null>(null);\n\n public readonly caseSettings$ = this._caseSettings$.pipe(filter(settings => !!settings));\n\n private get _caseSettings(): CaseSettings | null {\n return this._caseSettings$.getValue();\n }\n\n public readonly associatedProcessDocumentDefinitions$: Observable<\n Array<ProcessDefinitionCaseDefinition>\n > = this.listService.caseDefinitionKey$.pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey =>\n combineLatest([\n caseDefinitionKey\n ? this.documentService.findProcessDefinitionCaseDefinitionsByCanInitializeDocument(\n caseDefinitionKey,\n true\n )\n : of([]),\n this._loading$,\n this.caseSettings$,\n ])\n ),\n map(([processDocumentDefinitions, loading, caseSettings]) => {\n this._cachedAssociatedProcessDocumentDefinitions = processDocumentDefinitions;\n this.startButtonDisableEvent.emit(\n loading || (processDocumentDefinitions.length === 0 && !caseSettings?.hasExternalStartForm)\n );\n return processDocumentDefinitions.filter(definition => definition.canInitializeDocument);\n })\n );\n\n private selectedProcessDefinitionCaseDefinition: ProcessDefinitionCaseDefinition | null = null;\n public readonly startSelectionModalOpen$ = new BehaviorSubject<boolean>(false);\n\n private _cachedAssociatedProcessDocumentDefinitions: Array<ProcessDefinitionCaseDefinition> = [];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly listService: CaseListService,\n private readonly notificationService: GlobalNotificationService,\n private readonly router: Router,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.listService.caseDefinitionKey$\n .pipe(\n filter(caseDefinitionKey => !!caseDefinitionKey),\n switchMap(caseDefinitionKey => this.documentService.getCaseSettings(caseDefinitionKey))\n )\n .subscribe(caseSettings => {\n this._caseSettings$.next(caseSettings);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public startCase(): void {\n const associatedProcessDocumentDefinitions = this._cachedAssociatedProcessDocumentDefinitions;\n const hasExternalStartForm = this._caseSettings?.hasExternalStartForm;\n\n if (hasExternalStartForm && associatedProcessDocumentDefinitions.length === 0) {\n this.openExternalCaseStartForm();\n } else if (associatedProcessDocumentDefinitions.length === 1 && !hasExternalStartForm) {\n this.selectProcess(associatedProcessDocumentDefinitions[0]);\n } else {\n this.startSelectionModalOpen$.next(true);\n }\n }\n\n public selectProcess(processDefinitionCaseDefinition: ProcessDefinitionCaseDefinition): void {\n this.selectedProcessDefinitionCaseDefinition = processDefinitionCaseDefinition;\n this.startSelectionModalOpen$.next(false);\n this.showStartProcessModal();\n }\n\n public onFormFlowComplete(): void {\n this.formFlowComplete.emit(null);\n }\n\n public onNoProcessLinked(processDefinitionKey: string): void {\n this.notificationService.ngOnDestroy();\n\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('case.noLinkedStartProcessNotification'),\n actions: [\n {\n text: this.translateService.instant('case.configure'),\n click: () =>\n this.router.navigate([\n `/case-management/case/${this._caseSettings?.caseDefinitionKey}/version/${this._caseSettings?.caseDefinitionVersionTag}/processes/${processDefinitionKey}`,\n ]),\n },\n ],\n });\n }\n\n public onCloseSelect(): void {\n this.startSelectionModalOpen$.next(false);\n }\n\n public openExternalCaseStartForm(closeModal = false): void {\n window.open(this._caseSettings?.externalStartFormUrl, '_blank');\n\n if (closeModal) this.startSelectionModalOpen$.next(false);\n }\n\n private showStartProcessModal(): void {\n if (this.selectedProcessDefinitionCaseDefinition !== null) {\n this.processStart.openModal(this.selectedProcessDefinitionCaseDefinition);\n this.selectedProcessDefinitionCaseDefinition = null;\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<valtimo-render-in-body>\n <cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processDefinitionName }}\n </cds-clickable-tile>\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n\n<valtimo-case-process-start-modal\n #processStartModal\n [navigateAfterSubmit]=\"navigateAfterSubmit\"\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked($event)\"\n></valtimo-case-process-start-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {AssigneeFilter, CaseListTab} from '@valtimo/shared';\nimport {Tab, Tabs} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {DEFAULT_CASE_LIST_TABS} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-list-tabs',\n templateUrl: './case-list-tabs.component.html',\n styleUrls: ['./case-list-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseListTabsComponent {\n @ViewChild(Tabs) tabsComponent: Tabs;\n\n @Input() public assigneeFilter: AssigneeFilter | null = null;\n @Input() public selectedRowCount = 0;\n @Input() public visibleTabs: Array<CaseListTab> | null = null;\n\n @Output() public tabChangeEvent = new EventEmitter<CaseListTab>();\n\n public activeTab: CaseListTab | null = null;\n public readonly defaultTabs = DEFAULT_CASE_LIST_TABS;\n public readonly showChangeTabModal$ = new BehaviorSubject<boolean>(false);\n public readonly tabChange$ = new BehaviorSubject<CaseListTab | null>(null);\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public tabChange(tab: CaseListTab): void {\n if (!this.activeTab) {\n this.activeTab = tab;\n return;\n }\n\n if (this.activeTab.toLowerCase() === tab.toLowerCase()) return;\n\n if (this.selectedRowCount > 0) {\n this.showChangeTabModal$.next(true);\n this.tabChange$.next(tab);\n return;\n }\n\n this.confirmTabChange(tab);\n }\n\n public onChangeTabCancel(): void {\n if (!this.tabsComponent) return;\n\n const prevTab: Tab | undefined = this.tabsComponent.tabs.find(\n (tab: Tab) => tab.id === this.activeTab\n );\n\n if (!prevTab) return;\n\n const tab = this.tabsComponent.tabs.find((tab: Tab) => tab.active);\n if (!tab) return;\n\n tab.active = false;\n prevTab.active = true;\n }\n\n public onChangeTabConfirm(tab: CaseListTab): void {\n this.confirmTabChange(tab);\n }\n\n private confirmTabChange(tab: CaseListTab): void {\n this.activeTab = tab;\n this.tabChangeEvent.emit(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"!visibleTabs; else configuredTabs\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-container>\n\n<ng-template #configuredTabs>\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ListField, ListHiddenColumn} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-case-list-toolbar',\n templateUrl: './case-list-toolbar.component.html',\n styleUrls: ['./case-list-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaseListToolbarComponent {\n @Input() public availableFields: ListField[] | null = null;\n @Input() public canCreate = false;\n @Input() public canExport = false;\n @Input() public disableExport = false;\n @Input() public disableStart = false;\n @Input() public hasApiColumnConfig = false;\n @Input() public hiddenColumns: ListField[] | null = null;\n @Input() public loadingExport = false;\n\n @Output() public exportEvent = new EventEmitter<void>();\n @Output() public startCaseEvent = new EventEmitter<void>();\n @Output() public viewUpdateEvent = new EventEmitter<ListHiddenColumn[]>();\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"case-list-toolbar\">\n <valtimo-list-column-view\n [availableFields]=\"availableFields\"\n [disabled]=\"!hasApiColumnConfig\"\n [hiddenColumns]=\"hiddenColumns\"\n (viewUpdateEvent)=\"viewUpdateEvent.emit($event)\"\n ></valtimo-list-column-view>\n\n <cds-tooltip *ngIf=\"canExport\" [description]=\"'case.exportButtonTooltip' | translate\">\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"exportEvent.emit()\"\n [disabled]=\"disableExport\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreate\"\n cdsButton=\"primary\"\n [disabled]=\"disableStart\"\n (click)=\"startCaseEvent.emit()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</div>\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 {Component, inject, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListComponent,\n CarbonPaginationSelection,\n IQuickSearchService,\n ListHiddenColumn,\n PageTitleService,\n Pagination,\n QUICK_SEARCH_SERVICE,\n QuickSearchStateService,\n} from '@valtimo/components';\nimport {CaseListTab, ConfigService, SearchFieldValues, SortState} from '@valtimo/shared';\nimport {TeamsApiService} from '@valtimo/teams';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Subscription,\n take,\n} from 'rxjs';\nimport {CASE_LIST_TABLE_TRANSLATIONS, DEFAULT_CASE_LIST_TABS} from '../../constants';\nimport {BulkAssign, CaseListQuickSearchParams} from '../../models';\nimport {\n CaseBulkAssignService,\n CaseColumnService,\n CaseExportService,\n CaseListAssigneeService,\n CaseListCaseTagService,\n CaseListOrchestrationService,\n CaseListPaginationService,\n CaseListQuickSearchService,\n CaseListSearchService,\n CaseListService,\n CaseListStatusService,\n CaseParameterService,\n} from '../../services';\nimport {CaseListActionsComponent} from '../case-list-actions/case-list-actions.component';\nimport {CaseListTabsComponent} from '../case-list-tabs/case-list-tabs.component';\n\n@Component({\n standalone: false,\n templateUrl: './case-list.component.html',\n styleUrls: ['./case-list.component.scss'],\n providers: [\n CaseListService,\n CaseColumnService,\n CaseListAssigneeService,\n CaseParameterService,\n CaseListPaginationService,\n CaseListSearchService,\n CaseListStatusService,\n CaseListCaseTagService,\n CaseExportService,\n CaseListOrchestrationService,\n {\n provide: QUICK_SEARCH_SERVICE,\n useClass: CaseListQuickSearchService,\n },\n ],\n})\nexport class CaseListComponent implements OnInit, OnDestroy {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n @ViewChild(CaseListActionsComponent) listActionsComponent: CaseListActionsComponent;\n @ViewChild(CaseListTabsComponent) tabsComponent: CaseListTabsComponent;\n\n public pagination!: Pagination;\n public canHaveAssignee!: boolean;\n public loadingExport = false;\n public visibleCaseTabs: CaseListTab[] | null = null;\n\n public readonly orchestration = inject(CaseListOrchestrationService);\n\n public readonly tableTranslations = CASE_LIST_TABLE_TRANSLATIONS;\n\n public readonly showAssignModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangePageModal$ = new BehaviorSubject<boolean>(false);\n public readonly disableStartButton$ = new BehaviorSubject<boolean>(false);\n public readonly selectedCaseIds$ = new BehaviorSubject<string[]>([]);\n public readonly paginationChange$ = new BehaviorSubject<CarbonPaginationSelection | null>(null);\n\n private _previousCaseDefinitionKey!: string;\n private _caseDefinitionKeySubscription!: Subscription;\n private _paginationSubscription!: Subscription;\n private _canHaveAssigneeSubscription!: Subscription;\n private _searchFieldsSubscription!: Subscription;\n\n constructor(\n private readonly assigneeService: CaseListAssigneeService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly bulkAssignService: CaseBulkAssignService,\n private readonly caseExportService: CaseExportService,\n private readonly caseListCaseTagService: CaseListCaseTagService,\n private readonly listService: CaseListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: CaseListPaginationService,\n private readonly parameterService: CaseParameterService,\n private readonly quickSearchStateService: QuickSearchStateService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly searchService: CaseListSearchService,\n private readonly statusService: CaseListStatusService,\n @Inject(QUICK_SEARCH_SERVICE)\n private readonly caseListQuickSearchService: IQuickSearchService<CaseListQuickSearchParams>,\n private readonly configService: ConfigService,\n private readonly teamsApiService: TeamsApiService\n ) {}\n\n public ngOnInit(): void {\n this.openCaseDefinitionKeySubscription();\n this.subscribeToPagination();\n this.subscribeToCanHaveAssignee();\n this.subscribeToSearchFields();\n this.resolveVisibleCaseTabs();\n\n if (!this.configService.config?.featureToggles?.enableGenericCaseList) {\n this.breadcrumbService.suppressSecondBreadcrumb();\n }\n }\n\n public ngOnDestroy(): void {\n this._caseDefinitionKeySubscription?.unsubscribe();\n this._paginationSubscription?.unsubscribe();\n this._canHaveAssigneeSubscription?.unsubscribe();\n this._searchFieldsSubscription?.unsubscribe();\n this.pageTitleService.enableReset();\n this.breadcrumbService.unsuppressSecondBreadcrumb();\n }\n\n // --- Search ---\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.searchService.search(searchFieldValues);\n }\n\n // --- Row click ---\n\n public rowClick(item: any): void {\n this.listService.caseDefinitionKey$.pipe(take(1)).subscribe(caseDefinitionKey => {\n this.breadcrumbService.cacheQueryParams(\n `/cases/${caseDefinitionKey}`,\n this.route.snapshot.queryParams\n );\n\n if (item.ctrlClick) {\n window.open(`/cases/${caseDefinitionKey}/document/${item.id}`, '_blank');\n } else {\n this.router.navigate([`/cases/${caseDefinitionKey}/document/${item.id}`]);\n }\n });\n }\n\n // --- Tab change ---\n\n public onTabChange(tab: CaseListTab): void {\n this.orchestration.setLoadingAssigneeFilter(true);\n this.orchestration.updateNoResultsMessage(false, tab);\n this.paginationService.setPage(1);\n this.assigneeService.setAssigneeFilter(tab);\n }\n\n // --- Pagination ---\n\n public pageChange(page: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page, size: this.pagination.size});\n return;\n }\n this.paginationService.pageChange(page);\n }\n\n public pageSizeChange(size: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page: this.pagination.page, size});\n return;\n }\n this.paginationService.pageSizeChange(size);\n }\n\n public sortChanged(newSortState: SortState): void {\n this.paginationService.sortChanged(newSortState);\n }\n\n public onChangePageConfirm(pagination: CarbonPaginationSelection): void {\n if (pagination.size !== this.pagination.size) {\n this.paginationService.pageSizeChange(pagination.size);\n return;\n }\n this.paginationService.pageChange(pagination.page);\n }\n\n // --- Bulk assign ---\n\n public showAssignModal(): void {\n this.selectedCaseIds$.next(\n this.carbonList.selectedItems.map(document => document.id)\n );\n this.showAssignModal$.next(true);\n }\n\n public onCloseEvent(bulkAssign: null | BulkAssign): void {\n this.showAssignModal$.next(false);\n if (!bulkAssign?.assigneeId && !bulkAssign?.assignedTeamKey) return;\n\n this.bulkAssignService.bulkAssign(bulkAssign.ids, bulkAssign.assigneeId, bulkAssign.assignedTeamKey).subscribe(() => {\n this.carbonList.model.selectAll(false);\n this.forceRefresh();\n });\n }\n\n // --- Actions ---\n\n public startCase(): void {\n this.listActionsComponent.startCase();\n }\n\n public export(): void {\n this.caseExportService\n .downloadExport()\n .subscribe(data => (this.loadingExport = data.isLoading));\n }\n\n public forceRefresh(): void {\n this.listService.forceRefresh();\n }\n\n // --- Filters ---\n\n public onSelectedStatusesChange(statusKeys: string[]): void {\n this.statusService.setSelectedStatuses(statusKeys);\n }\n\n public onSelectedCaseTagsChange(caseTagKeys: string[]): void {\n this.caseListCaseTagService.setSelectedCaseTags(caseTagKeys);\n }\n\n public onStartButtonDisableEvent(disabled: boolean): void {\n this.disableStartButton$.next(disabled);\n }\n\n public onViewUpdateEvent(hiddenColumns: ListHiddenColumn[]): void {\n this.orchestration.saveHiddenColumns(hiddenColumns);\n }\n\n // --- Quick search ---\n\n public onSaveSearchEvent(event: any): void {\n combineLatest([\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n ])\n .pipe(take(1))\n .subscribe(([statusKeys, tags]) => {\n this.quickSearchStateService.openModal({\n ...this.parameterService.getSearchParameter('casetags', tags),\n ...this.parameterService.getSearchParameter('status', statusKeys),\n ...this.parameterService.getSearchParameter('search', event),\n });\n });\n }\n\n public onQuickSearchEvent(queryPath: string): void {\n combineLatest([this.route.queryParams, this.orchestration.caseDefinitionKey$])\n .pipe(take(1))\n .subscribe(([urlParams, caseDefinitionKey]) => {\n const queryParams = {...urlParams, ...Object.fromEntries(new URLSearchParams(queryPath))};\n this.router.navigate([`/cases/${caseDefinitionKey}`], {\n queryParams,\n replaceUrl: true,\n queryParamsHandling: 'replace',\n });\n this.statusService.setSelectedStatuses(\n this.parameterService.getSearchObject(queryParams['status']) as string[]\n );\n this.caseListCaseTagService.setSelectedCaseTags(\n this.parameterService.getSearchObject(queryParams['casetags']) as string[]\n );\n this.parameterService.setSearchFieldValues(\n this.parameterService.getSearchObject(queryParams['search']) as SearchFieldValues\n );\n });\n }\n\n public onClearEvent(): void {\n this.statusService.setSelectedStatuses([]);\n this.caseListCaseTagService.setSelectedCaseTags([]);\n }\n\n // --- Private ---\n\n private openCaseDefinitionKeySubscription(): void {\n this._caseDefinitionKeySubscription = this.route.params\n .pipe(\n map((params: Params) => params?.caseDefinitionKey),\n filter(docDefName => !!docDefName),\n distinctUntilChanged()\n )\n .subscribe(caseDefinitionKey => {\n if (this._previousCaseDefinitionKey) {\n this.parameterService.clearParameters();\n this.parameterService.clearSearchFieldValues();\n }\n this._previousCaseDefinitionKey = caseDefinitionKey;\n this.paginationService.clearPagination();\n this.assigneeService.resetAssigneeFilter();\n this.listService.setCaseDefinitionKey(caseDefinitionKey);\n this.orchestration.setLoading();\n });\n }\n\n private subscribeToPagination(): void {\n this._paginationSubscription = this.orchestration.pagination$.subscribe(pagination => {\n this.pagination = pagination;\n });\n }\n\n private subscribeToCanHaveAssignee(): void {\n this._canHaveAssigneeSubscription = this.assigneeService.canHaveAssignee$.subscribe(\n canHaveAssignee => {\n this.canHaveAssignee = canHaveAssignee;\n }\n );\n }\n\n private subscribeToSearchFields(): void {\n this._searchFieldsSubscription = this.orchestration.searchFields$.subscribe(() => {\n this.orchestration.setLoadingSearchFields(false);\n });\n }\n\n private resolveVisibleCaseTabs(): void {\n const tabs = this.configService.config?.visibleCaseListTabs || DEFAULT_CASE_LIST_TABS;\n\n this.teamsApiService.getCurrentUserTeams().subscribe(teams => {\n this.visibleCaseTabs =\n teams.length > 0 ? tabs : tabs.filter(tab => tab !== CaseListTab.TEAM);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n schema: orchestration.schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search (quickSearchEvent)=\"onQuickSearchEvent($event)\"></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\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 */\nimport {Location} from '@angular/common';\nimport {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {DocumentService} from '@valtimo/document';\nimport {TaskService} from '@valtimo/task';\nimport moment from 'moment';\nimport {CaseService} from '../../services/case.service';\nimport {TranslateService} from '@ngx-translate/core';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n standalone: false,\n templateUrl: './case-update.component.html',\n styleUrls: ['./case-update.component.scss'],\n})\nexport class CaseUpdateComponent implements OnInit {\n public task: any;\n public taskId: string;\n public schema: any;\n public documentId: string;\n public document: any;\n public page: any;\n public documentDefinitionName: string;\n public implementationDefinitions: any;\n public customDefinitions: any = {};\n\n constructor(\n private readonly caseService: CaseService,\n private readonly documentService: DocumentService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly location: Location,\n private readonly route: ActivatedRoute,\n private readonly taskService: TaskService,\n private readonly translateService: TranslateService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';\n this.documentId = snapshot.get('documentId') || '';\n this.taskId = snapshot.get('taskId') || '';\n this.implementationDefinitions = this.caseService.getImplementationEnvironmentDefinitions(\n this.documentDefinitionName\n );\n this.loadDocumentDefinition(this.documentDefinitionName);\n this.loadDocument(this.documentId);\n }\n\n ngOnInit() {\n this.getTask(this.taskId);\n if (this.implementationDefinitions.definitions.detail.summary) {\n this.customDefinitions = this.implementationDefinitions.definitions.detail.summary;\n }\n }\n\n private loadDocumentDefinition(name: string) {\n this.documentService.getDocumentDefinition(name).subscribe(definition => {\n this.schema = definition.schema;\n });\n }\n\n private loadDocument(id: string) {\n this.documentService.getDocument(id).subscribe(document => {\n this.document = document;\n });\n }\n\n public getTask(id: string) {\n this.taskService.getTask(id).subscribe(task => {\n this.task = task;\n this.task.task.created = moment(this.task.task.created).format('DD MMM YYYY HH:mm');\n this.page = {\n title: this.task.task.name,\n subtitle: `Created ${moment(this.task.task.created).fromNow()}`,\n };\n });\n }\n\n public reset() {\n this.loadDocument(this.documentId);\n }\n\n public back() {\n this.location.back();\n }\n\n public save() {\n const document = {\n documentId: this.document.id,\n content: this.document.content,\n versionBasedOn: this.document.version,\n };\n this.documentService.modifyDocument(document).subscribe(result => {\n this.document = result.document;\n this.globalNotificationService.showToast({\n title: this.translateService.instant('case.caseUpdated'),\n type: 'success',\n });\n this.location.back();\n });\n }\n\n public submit(data: object) {\n // merge document content with formdata\n const mergedData = Object.assign({}, this.document.content, data);\n const documentData = {\n request: {\n documentId: this.document.id,\n content: mergedData,\n versionBasedOn: this.document.version,\n },\n taskId: this.task.task.id,\n };\n\n this.documentService.modifyDocumentAndCompleteTask(documentData).subscribe(() => {\n this.globalNotificationService.showToast({\n title: `${this.task.task.name} ${this.translateService.instant('taskDetail.taskCompleted')}`,\n type: 'success',\n });\n this.location.back();\n });\n }\n\n public returnZero() {\n return 0;\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 class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget [title]=\"page?.title\" [subtitle]=\"page?.subtitle\" [divider]=\"true\">\n <div class=\"card-body\">\n <!--view with custom definitions-->\n <div *ngIf=\"this.customDefinitions\">\n <div\n class=\"mb-4\"\n *ngFor=\"let definition of this.customDefinitions | keyvalue: returnZero\"\n ></div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-sm-12\">\n <div class=\"text-right\">\n <button\n class=\"btn btn-space btn-default float-left\"\n type=\"button\"\n (click)=\"back()\"\n id=\"back-button\"\n >\n Back\n </button>\n <button\n class=\"btn btn-space btn-secondary\"\n type=\"button\"\n (click)=\"reset()\"\n id=\"reset-button\"\n >\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"button\"\n (click)=\"save()\"\n id=\"save-button\"\n >\n Save\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n (click)=\"submit({})\"\n id=\"submit-button\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <valtimo-camunda-form\n *ngIf=\"task?.formFields && !this.customDefinitions\"\n (submitted)=\"submit($event)\"\n [formFields]=\"task.formFields\"\n [componentName]=\"task.formLocation\"\n ></valtimo-camunda-form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, inject, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {\n BreadcrumbService,\n CarbonListComponent,\n CarbonPaginationSelection,\n IQuickSearchService,\n ListField,\n ListHiddenColumn,\n PageTitleService,\n Pagination,\n QUICK_SEARCH_SERVICE,\n QuickSearchStateService,\n ViewType,\n} from '@valtimo/components';\nimport {\n AssigneeFilter,\n CaseListTab,\n ConfigService,\n DefinitionColumn,\n SearchFieldValues,\n SortState,\n} from '@valtimo/shared';\nimport {DocumentService, Documents, DocumentSearchRequestImpl} from '@valtimo/document';\nimport {TeamsApiService} from '@valtimo/teams';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n of,\n shareReplay,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {CASE_LIST_TABLE_TRANSLATIONS, DEFAULT_CASE_LIST_TABS} from '../../constants';\nimport {BulkAssign, CaseListQuickSearchParams} from '../../models';\nimport {\n CaseBulkAssignService,\n CaseColumnService,\n CaseExportService,\n CaseListAssigneeService,\n CaseListCaseTagService,\n CaseListOrchestrationService,\n CaseListPaginationService,\n CaseListQuickSearchService,\n CaseListSearchService,\n CaseListService,\n CaseListStatusService,\n CaseParameterService,\n} from '../../services';\nimport {CaseListActionsComponent} from '../case-list-actions/case-list-actions.component';\nimport {CaseListTabsComponent} from '../case-list-tabs/case-list-tabs.component';\nimport {ListItem} from 'carbon-components-angular';\n\nconst ALL_CASES_ID = 'ALL_CASES';\n\n@Component({\n standalone: false,\n templateUrl: './generic-case-list.component.html',\n styleUrls: ['./generic-case-list.component.scss'],\n providers: [\n CaseListService,\n CaseColumnService,\n CaseListAssigneeService,\n CaseParameterService,\n CaseListPaginationService,\n CaseListSearchService,\n CaseListStatusService,\n CaseListCaseTagService,\n CaseExportService,\n CaseListOrchestrationService,\n {\n provide: QUICK_SEARCH_SERVICE,\n useClass: CaseListQuickSearchService,\n },\n ],\n})\nexport class GenericCaseListComponent implements OnInit, OnDestroy {\n @ViewChild('specificCaseList') carbonList: CarbonListComponent;\n @ViewChild(CaseListActionsComponent) listActionsComponent: CaseListActionsComponent;\n @ViewChild(CaseListTabsComponent) tabsComponent: CaseListTabsComponent;\n\n public readonly ALL_CASES_ID = ALL_CASES_ID;\n public readonly tableTranslations = CASE_LIST_TABLE_TRANSLATIONS;\n\n public pagination!: Pagination;\n public canHaveAssignee!: boolean;\n public loadingExport = false;\n public visibleCaseTabs: CaseListTab[] | null = null;\n\n public readonly orchestration = inject(CaseListOrchestrationService);\n\n public readonly showAssignModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangePageModal$ = new BehaviorSubject<boolean>(false);\n public readonly disableStartButton$ = new BehaviorSubject<boolean>(false);\n public readonly selectedCaseIds$ = new BehaviorSubject<string[]>([]);\n public readonly paginationChange$ = new BehaviorSubject<CarbonPaginationSelection | null>(null);\n\n // --- Case definition dropdown ---\n public readonly loadingCaseListItems$ = new BehaviorSubject<boolean>(true);\n private readonly _selectedCaseDefinitionId$ = new BehaviorSubject<string>(ALL_CASES_ID);\n public readonly selectedCaseDefinitionId$ = this._selectedCaseDefinitionId$.asObservable();\n\n public readonly isAllCases$: Observable<boolean> = this._selectedCaseDefinitionId$.pipe(\n map(id => id === ALL_CASES_ID)\n );\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, selectedId]) => [\n {\n content: this.translateService.instant('case.allCases'),\n id: ALL_CASES_ID,\n selected: selectedId === ALL_CASES_ID,\n },\n ...documentDefinitionRes.content.map(documentDefinition => ({\n id: documentDefinition.id.name,\n content: documentDefinition?.schema?.title,\n selected: documentDefinition.id.name === selectedId,\n })),\n ]),\n tap(() => this.loadingCaseListItems$.next(false))\n );\n\n // --- \"All Cases\" data pipeline ---\n private readonly _allCasesPage$ = new BehaviorSubject<number>(1);\n private readonly _allCasesSize$ = new BehaviorSubject<number>(10);\n private readonly _allCasesSort$ = new BehaviorSubject<SortState | null>(null);\n private readonly _allCasesReload$ = new BehaviorSubject<boolean>(false);\n private readonly _allCasesAssigneeFilter$ = new BehaviorSubject<AssigneeFilter>('ALL');\n public readonly allCasesAssigneeFilter$ = this._allCasesAssigneeFilter$.asObservable();\n\n public readonly allCasesFields$: Observable<ListField[]> = this.translateService\n .stream('fieldLabels')\n .pipe(\n map(() =>\n this.mapDefaultColumnsToListFields(\n this.configService.config?.defaultDefinitionTable || []\n )\n )\n );\n\n public readonly allCasesLoading$ = new BehaviorSubject<boolean>(true);\n\n public readonly allCasesData$: Observable<{items: any[]; pagination: Pagination}> = combineLatest([\n this._allCasesPage$,\n this._allCasesSize$,\n this._allCasesSort$,\n this._allCasesReload$,\n this._allCasesAssigneeFilter$,\n ]).pipe(\n tap(() => this.allCasesLoading$.next(true)),\n switchMap(([page, size, sort, _, assigneeFilter]) => {\n const request = new DocumentSearchRequestImpl(\n '',\n page - 1,\n size,\n undefined,\n undefined,\n undefined,\n sort,\n undefined,\n assigneeFilter !== 'ALL' ? assigneeFilter : undefined\n );\n return this.documentService.getDocuments(request).pipe(\n map((documents: Documents) => ({\n items: documents.content.map(document => {\n const {content, ...others} = document;\n return {...content, ...others};\n }),\n pagination: {\n collectionSize: documents.totalElements,\n page,\n size,\n sort,\n } as Pagination,\n }))\n );\n }),\n tap(() => this.allCasesLoading$.next(false)),\n shareReplay(1)\n );\n\n private _subscriptions = new Subscription();\n private _paginationSubscription!: Subscription;\n private _canHaveAssigneeSubscription!: Subscription;\n private _searchFieldsSubscription!: Subscription;\n\n constructor(\n private readonly assigneeService: CaseListAssigneeService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly bulkAssignService: CaseBulkAssignService,\n private readonly caseExportService: CaseExportService,\n private readonly caseListCaseTagService: CaseListCaseTagService,\n private readonly listService: CaseListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: CaseListPaginationService,\n private readonly parameterService: CaseParameterService,\n private readonly quickSearchStateService: QuickSearchStateService,\n private readonly router: Router,\n private readonly searchService: CaseListSearchService,\n private readonly statusService: CaseListStatusService,\n @Inject(QUICK_SEARCH_SERVICE)\n private readonly caseListQuickSearchService: IQuickSearchService<CaseListQuickSearchParams>,\n private readonly configService: ConfigService,\n private readonly teamsApiService: TeamsApiService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n this.pageTitleService.setCustomPageTitle(\n this.translateService.instant('Cases'),\n true\n );\n this.resolveVisibleCaseTabs();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._paginationSubscription?.unsubscribe();\n this._canHaveAssigneeSubscription?.unsubscribe();\n this._searchFieldsSubscription?.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n // --- Case definition switching ---\n\n public setCaseDefinition(definition: {item: {id: string}}): void {\n const newId = definition.item.id;\n if (newId === this._selectedCaseDefinitionId$.getValue()) return;\n\n this._selectedCaseDefinitionId$.next(newId);\n\n if (newId !== ALL_CASES_ID) {\n this.parameterService.clearParameters();\n this.parameterService.clearSearchFieldValues();\n this.paginationService.clearPagination();\n this.assigneeService.resetAssigneeFilter();\n this.listService.setCaseDefinitionKey(newId);\n this.orchestration.setLoading();\n this.subscribeToPagination();\n this.subscribeToCanHaveAssignee();\n this.subscribeToSearchFields();\n } else {\n this._allCasesPage$.next(1);\n this._allCasesReload$.next(!this._allCasesReload$.getValue());\n }\n }\n\n // --- Delegated to existing case list services when a specific definition is selected ---\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.searchService.search(searchFieldValues);\n }\n\n public rowClick(item: any): void {\n this._selectedCaseDefinitionId$.pipe(take(1)).subscribe(selectedId => {\n const caseDefinitionKey =\n selectedId !== ALL_CASES_ID ? selectedId : item.definitionName || item.definitionId?.name;\n\n if (caseDefinitionKey) {\n if (item.ctrlClick) {\n window.open(`/cases/${caseDefinitionKey}/document/${item.id}`, '_blank');\n } else {\n this.router.navigate([`/cases/${caseDefinitionKey}/document/${item.id}`]);\n }\n }\n });\n }\n\n public onTabChange(tab: CaseListTab): void {\n this.orchestration.setLoadingAssigneeFilter(true);\n this.orchestration.updateNoResultsMessage(false, tab);\n this.paginationService.setPage(1);\n this.assigneeService.setAssigneeFilter(tab);\n }\n\n public pageChange(page: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page, size: this.pagination.size});\n return;\n }\n this.paginationService.pageChange(page);\n }\n\n public pageSizeChange(size: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page: this.pagination.page, size});\n return;\n }\n this.paginationService.pageSizeChange(size);\n }\n\n public sortChanged(newSortState: SortState): void {\n this.paginationService.sortChanged(newSortState);\n }\n\n public onChangePageConfirm(pagination: CarbonPaginationSelection): void {\n if (pagination.size !== this.pagination.size) {\n this.paginationService.pageSizeChange(pagination.size);\n return;\n }\n this.paginationService.pageChange(pagination.page);\n }\n\n public showAssignModal(): void {\n this.selectedCaseIds$.next(\n this.carbonList.selectedItems.map(document => document.id)\n );\n this.showAssignModal$.next(true);\n }\n\n public onCloseEvent(bulkAssign: null | BulkAssign): void {\n this.showAssignModal$.next(false);\n if (!bulkAssign?.assigneeId && !bulkAssign?.assignedTeamKey) return;\n\n this.bulkAssignService\n .bulkAssign(bulkAssign.ids, bulkAssign.assigneeId, bulkAssign.assignedTeamKey)\n .subscribe(() => {\n this.carbonList.model.selectAll(false);\n this.forceRefresh();\n });\n }\n\n public startCase(): void {\n this.listActionsComponent.startCase();\n }\n\n public export(): void {\n this.caseExportService\n .downloadExport()\n .subscribe(data => (this.loadingExport = data.isLoading));\n }\n\n public forceRefresh(): void {\n this.listService.forceRefresh();\n }\n\n public onSelectedStatusesChange(statusKeys: string[]): void {\n this.statusService.setSelectedStatuses(statusKeys);\n }\n\n public onSelectedCaseTagsChange(caseTagKeys: string[]): void {\n this.caseListCaseTagService.setSelectedCaseTags(caseTagKeys);\n }\n\n public onStartButtonDisableEvent(disabled: boolean): void {\n this.disableStartButton$.next(disabled);\n }\n\n public onViewUpdateEvent(hiddenColumns: ListHiddenColumn[]): void {\n this.orchestration.saveHiddenColumns(hiddenColumns);\n }\n\n public onSaveSearchEvent(event: any): void {\n combineLatest([\n this.statusService.selectedCaseStatuses$,\n this.caseListCaseTagService.selectedCaseTagKeys$,\n ])\n .pipe(take(1))\n .subscribe(([statusKeys, tags]) => {\n this.quickSearchStateService.openModal({\n ...this.parameterService.getSearchParameter('casetags', tags),\n ...this.parameterService.getSearchParameter('status', statusKeys),\n ...this.parameterService.getSearchParameter('search', event),\n });\n });\n }\n\n public onQuickSearchEvent(queryPath: string): void {\n combineLatest([this.orchestration.caseDefinitionKey$])\n .pipe(take(1))\n .subscribe(([caseDefinitionKey]) => {\n const queryParams = Object.fromEntries(new URLSearchParams(queryPath));\n this.router.navigate(['/cases'], {\n queryParams,\n replaceUrl: true,\n queryParamsHandling: 'replace',\n });\n this.statusService.setSelectedStatuses(\n this.parameterService.getSearchObject(queryParams['status']) as string[]\n );\n this.caseListCaseTagService.setSelectedCaseTags(\n this.parameterService.getSearchObject(queryParams['casetags']) as string[]\n );\n this.parameterService.setSearchFieldValues(\n this.parameterService.getSearchObject(queryParams['search']) as SearchFieldValues\n );\n });\n }\n\n public onClearEvent(): void {\n this.statusService.setSelectedStatuses([]);\n this.caseListCaseTagService.setSelectedCaseTags([]);\n }\n\n // --- All Cases pagination ---\n\n public allCasesPageChange(page: number): void {\n this._allCasesPage$.next(page);\n }\n\n public allCasesPageSizeChange(size: number): void {\n this._allCasesSize$.next(size);\n this._allCasesPage$.next(1);\n }\n\n public allCasesSortChanged(newSortState: SortState): void {\n this._allCasesSort$.next(newSortState);\n }\n\n public allCasesTabChange(tab: CaseListTab): void {\n this._allCasesAssigneeFilter$.next(tab as AssigneeFilter);\n this._allCasesPage$.next(1);\n }\n\n // --- Private ---\n\n private subscribeToPagination(): void {\n this._paginationSubscription?.unsubscribe();\n this._paginationSubscription = this.orchestration.pagination$.subscribe(pagination => {\n this.pagination = pagination;\n });\n }\n\n private subscribeToCanHaveAssignee(): void {\n this._canHaveAssigneeSubscription?.unsubscribe();\n this._canHaveAssigneeSubscription = this.assigneeService.canHaveAssignee$.subscribe(\n canHaveAssignee => {\n this.canHaveAssignee = canHaveAssignee;\n }\n );\n }\n\n private subscribeToSearchFields(): void {\n this._searchFieldsSubscription?.unsubscribe();\n this._searchFieldsSubscription = this.orchestration.searchFields$.subscribe(() => {\n this.orchestration.setLoadingSearchFields(false);\n });\n }\n\n private resolveVisibleCaseTabs(): void {\n const tabs = this.configService.config?.visibleCaseListTabs || DEFAULT_CASE_LIST_TABS;\n\n this.teamsApiService.getCurrentUserTeams().subscribe(teams => {\n this.visibleCaseTabs =\n teams.length > 0 ? tabs : tabs.filter(tab => tab !== CaseListTab.TEAM);\n });\n }\n\n private mapDefaultColumnsToListFields(columns: DefinitionColumn[]): ListField[] {\n return columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key: column.propertyName,\n label: validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType as ViewType}),\n ...(column.default && {default: column.default}),\n };\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{isAllCases: isAllCases$ | async} as mode\">\n <!-- All Cases mode -->\n <ng-container *ngIf=\"mode.isAllCases\">\n <valtimo-carbon-list\n [fields]=\"allCasesFields$ | async\"\n [header]=\"false\"\n [items]=\"(allCasesData$ | async)?.items\"\n [loading]=\"allCasesLoading$ | async\"\n [pagination]=\"(allCasesData$ | async)?.pagination\"\n paginationIdentifier=\"genericCaseList\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"allCasesPageChange($event)\"\n (paginationSet)=\"allCasesPageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"allCasesSortChanged($event)\"\n >\n <valtimo-no-results\n [description]=\"'case.noResults.ALL.description' | translate\"\n [title]=\"'case.noResults.ALL.title' | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"visibleCaseTabs\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"allCasesAssigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"allCasesTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <!-- Specific case definition mode -->\n <ng-container *ngIf=\"!mode.isAllCases\">\n <ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n >\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search\n (quickSearchEvent)=\"onQuickSearchEvent($event)\"\n ></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else specificLoading\">\n <valtimo-carbon-list\n #specificCaseList\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination?.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"genericCaseListSpecific\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage?.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage?.description | translate\"\n [title]=\"obs.noResultsMessage?.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <ng-template #specificLoading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-template>\n\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\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 dropdownObs\"\n [attr.data-testid]=\"'generic-case-list-dropdown'\"\n [disabled]=\"dropdownObs.loadingCaseListItems || (dropdownObs.caseListItems || []).length === 1\"\n [skeleton]=\"dropdownObs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"dropdownObs.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 {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {CaseDetailComponent} from './components/case-detail/case-detail.component';\nimport {CaseUpdateComponent} from './components/case-update/case-update.component';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {CaseListComponent} from './components/case-list/case-list.component';\nimport {GenericCaseListComponent} from './components/generic-case-list/generic-case-list.component';\nimport {pendingChangesGuard} from '@valtimo/components';\n\nconst routes: Routes = [\n {\n path: 'cases',\n component: GenericCaseListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Cases', roles: [ROLE_USER], customPageTitle: true},\n pathMatch: 'full',\n },\n {\n path: 'cases/:caseDefinitionKey',\n component: CaseListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Cases', roles: [ROLE_USER], customPageTitle: true},\n },\n {\n path: 'cases/:caseDefinitionKey/document/:documentId/:tab',\n component: CaseDetailComponent,\n canActivate: [AuthGuardService],\n //TODO: Re-enable when pending changes is fixed\n // canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Case details',\n parentPath: 'cases/:caseDefinitionKey',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'cases/:caseDefinitionKey/document/:documentId',\n component: CaseDetailComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Case details',\n parentPath: 'cases/:caseDefinitionKey',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'cases/:caseDefinitionKey/document/:documentId/:tab/tasks/:taskId',\n component: CaseUpdateComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Task details',\n parentPath: 'cases/:caseDefinitionKey/document/:documentId/:tab',\n roles: [ROLE_USER],\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class CaseRoutingModule {}\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 {TabTranslatePipe} from './tab-translate.pipe';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [TranslateModule],\n declarations: [TabTranslatePipe],\n exports: [TabTranslatePipe],\n})\nexport class TabTranslatePipeModule {}\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 './tab-translate.pipe';\nexport * from './tab-translate-pipe.module';\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 './tab-translate';\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 {ModuleWithProviders, NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n NgbButtonsModule,\n NgbModule,\n NgbPaginationModule,\n NgbTooltipModule,\n} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n AssignmentComponent,\n BpmnJsDiagramModule,\n CamundaFormModule,\n CarbonListModule,\n CaseTagsSelectorComponent,\n ConfirmationModalModule,\n DataListModule,\n DropzoneModule,\n FilterSidebarModule,\n FormIoModule,\n FormModule as VFormModule,\n InputLabelModule,\n InputModule,\n IsArrayPipe,\n ListColumnViewComponent,\n MenuService,\n ModalModule,\n ObserveSizeDirective,\n ParagraphModule,\n QuickSearchComponent,\n RemoveClassnamesDirective,\n RenderInPageHeaderDirective,\n SearchFieldsModule,\n SelectModule,\n SpinnerModule,\n StatusSelectorComponent,\n TableModule,\n TimelineModule,\n UploaderModule,\n ValtimoCdsModalDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n VModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule, HttpLoaderFactory} from '@valtimo/shared';\nimport {FormModule} from '@valtimo/form';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {ProcessModule} from '@valtimo/process';\nimport {TaskModule} from '@valtimo/task';\nimport {\n ButtonModule as CarbonButtonModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n IconModule,\n InputModule as CarbonInputModule,\n LayerModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n SelectModule as CarbonSelectModule,\n SkeletonModule,\n TabsModule,\n TagModule,\n TilesModule,\n ToggletipModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {NoteModalComponent} from './components/note-modal/note-modal.component';\nimport {CaseRoutingModule} from './case-routing.module';\nimport {CaseBulkAssignModalComponent} from './components/case-bulk-assign-modal/case-bulk-assign-modal.component';\nimport {CaseDetailComponent} from './components/case-detail/case-detail.component';\nimport {CaseDetailTabAuditComponent} from './components/case-detail/tab/audit/audit.component';\nimport {CaseDetailTabDocumentsComponent} from './components/case-detail/tab/documents/documents.component';\nimport {CaseDetailTabNotesComponent} from './components/case-detail/tab/notes/notes.component';\nimport {CaseDetailTabProgressComponent} from './components/case-detail/tab/progress/progress.component';\nimport {CaseDetailTabS3DocumentsComponent} from './components/case-detail/tab/s3-documents/s3-documents.component';\nimport {CaseDetailTabSummaryComponent} from './components/case-detail/tab/summary/summary.component';\nimport {CaseListActionsComponent} from './components/case-list-actions/case-list-actions.component';\nimport {CaseListComponent} from './components/case-list/case-list.component';\nimport {CaseProcessStartModalComponent} from './components/case-process-start-modal/case-process-start-modal.component';\nimport {CaseSupportingProcessStartModalComponent} from './components/case-supporting-process-start-modal/case-supporting-process-start-modal.component';\nimport {CaseUpdateComponent} from './components/case-update/case-update.component';\nimport {TAB_MAP} from './constants';\nimport {CaseBulkAssignService, CaseMenuService, CaseService} from './services';\nimport {CaseDetailTabFormioComponent} from './components/case-detail/tab/formio/formio.component';\nimport {TabTranslatePipeModule} from './pipes';\nimport {CaseDetailTabNotFoundComponent} from './components/case-detail/tab/not-found/not-found.component';\nimport {CaseDetailWidgetsComponent} from './components/case-detail/tab/widgets/widgets.component';\nimport {CaseDetailTaskListComponent} from './components/case-detail-task-list/case-detail-task-list.component';\nimport {CaseDetailsTaskDetailComponent} from './components/case-detail-task-detail/case-detail-task-detail.component';\nimport {AngularSplitModule} from 'angular-split';\nimport {CaseDetailHeaderWidgetComponent} from './components/case-detail-header-widget/case-detail-header-widget.component';\nimport {CaseListTabsComponent} from './components/case-list-tabs/case-list-tabs.component';\nimport {CaseListToolbarComponent} from './components/case-list-toolbar/case-list-toolbar.component';\nimport {GenericCaseListComponent} from './components/generic-case-list/generic-case-list.component';\n\nexport type TabsFactory = () => Map<string, object>;\n\n@NgModule({\n declarations: [\n CaseBulkAssignModalComponent,\n CaseListComponent,\n CaseDetailComponent,\n CaseDetailTabSummaryComponent,\n CaseDetailTabProgressComponent,\n CaseDetailTabAuditComponent,\n CaseDetailTabDocumentsComponent,\n CaseDetailTabNotesComponent,\n CaseUpdateComponent,\n CaseSupportingProcessStartModalComponent,\n CaseDetailTabS3DocumentsComponent,\n CaseDetailTabNotFoundComponent,\n NoteModalComponent,\n CaseDetailTabFormioComponent,\n CaseListTabsComponent,\n CaseListToolbarComponent,\n GenericCaseListComponent,\n ],\n imports: [\n CommonModule,\n CaseRoutingModule,\n WidgetModule,\n BpmnJsDiagramModule,\n TimelineModule,\n CamundaFormModule,\n ProcessModule,\n FilterSidebarModule,\n NgbButtonsModule,\n DataListModule,\n FormsModule,\n ReactiveFormsModule,\n FormModule,\n FormIoModule,\n ModalModule,\n SpinnerModule,\n TranslateModule.forRoot({\n loader: {provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient]},\n }),\n TaskModule,\n ModalModule,\n NgbTooltipModule,\n UploaderModule,\n DropzoneModule,\n NgbPaginationModule,\n ConfigModule,\n SelectModule,\n InputLabelModule,\n ParagraphModule,\n TableModule,\n VModalModule,\n SearchFieldsModule,\n FormModule,\n InputModule,\n VFormModule,\n NgbModule,\n LoadingModule,\n CarbonButtonModule,\n IconModule,\n ProcessLinkModule,\n CarbonModalModule,\n CarbonSelectModule,\n ConfirmationModalModule,\n DropdownModule,\n TabsModule,\n ComboBoxModule,\n TabTranslatePipeModule,\n CarbonListModule,\n IsArrayPipe,\n SkeletonModule,\n StatusSelectorComponent,\n RenderInPageHeaderDirective,\n TagModule,\n DialogModule,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n OverflowMenuTriggerComponent,\n CaseDetailWidgetsComponent,\n CaseDetailTaskListComponent,\n CaseDetailsTaskDetailComponent,\n AngularSplitModule,\n CaseTagsSelectorComponent,\n ValtimoCdsModalDirective,\n TilesModule,\n LayerModule,\n NotificationModule,\n CarbonInputModule,\n ToggletipModule,\n TooltipModule,\n RemoveClassnamesDirective,\n ListColumnViewComponent,\n CaseDetailHeaderWidgetComponent,\n ObserveSizeDirective,\n QuickSearchComponent,\n CaseProcessStartModalComponent,\n CaseListActionsComponent,\n AssignmentComponent,\n ],\n exports: [CaseListComponent, CaseDetailComponent, CaseSupportingProcessStartModalComponent],\n})\nexport class CaseModule {\n static forRoot(tabsFactory: TabsFactory): ModuleWithProviders<CaseModule> {\n return {\n ngModule: CaseModule,\n providers: [CaseService, CaseBulkAssignService, {provide: TAB_MAP, useFactory: tabsFactory}],\n };\n }\n\n constructor(\n private readonly caseMenuService: CaseMenuService,\n private readonly menuService: MenuService\n ) {\n this.menuService.registerAppendMenuItemsFunction(this.caseMenuService.appendCaseMenuItems);\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/*\n * Public API Surface of dossier\n */\n\nexport * from './lib/components/case-bulk-assign-modal/case-bulk-assign-modal.component';\nexport * from './lib/components/case-detail/case-detail.component';\nexport * from './lib/components/case-detail/tab/audit/audit.component';\nexport * from './lib/components/case-detail/tab/documents/documents.component';\nexport * from './lib/components/case-detail/tab/notes/notes.component';\nexport * from './lib/components/case-detail/tab/progress/progress.component';\nexport * from './lib/components/case-detail/tab/summary/summary.component';\nexport * from './lib/components/case-list/case-list.component';\nexport * from './lib/components/case-process-start-modal/case-process-start-modal.component';\nexport * from './lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component';\nexport * from './lib/components/case-list-actions/case-list-actions.component';\nexport * from './lib/constants';\nexport * from './lib/case.module';\nexport * from './lib/services/case.service';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["PERMISSION_ACTION","i2","i3","i1","i2.CaseListService","i5.CaseParameterService","i2.CaseParameterService","i3.CaseService","i4","i1.CaseListService","i3.CaseParameterService","i7","i8","i5","i6","switchMap","map","i3.CaseDetailTabS3DocumentsComponent","tap","take","i2.NotesService","i9","i10.NoteModalComponent","i1.CaseTabService","catchError","i3.WidgetsService","i4.CaseTabService","i4.CaseWidgetsApiService","i1.WidgetsService","i3.CaseWidgetsApiService","i4.WidgetsService","i3.CaseTabService","i2.CaseTabService","i2.CaseWidgetsApiService","i3.CaseTabApiService","i4.CaseListSearchService","filter","isEqual","i1.CaseBulkAssignService","i6.CaseDetailLayoutService","i10","i11","i12","i1.CaseHeaderWidgetApiService","i13","i14","i15.CaseDetailTaskListComponent","i16.CaseDetailsTaskDetailComponent","i18.CaseDetailHeaderWidgetComponent","i19.CaseSupportingProcessStartModalComponent","i20.TabTranslatePipe","i6.CaseListService","i6.StartModalService","i8.CaseListActionsComponent","i9.CaseBulkAssignModalComponent","i10.CaseListTabsComponent","i11.CaseListToolbarComponent","i1.CaseService","i10.CaseListActionsComponent","i11.CaseBulkAssignModalComponent","i12.CaseListTabsComponent","i13.CaseListToolbarComponent","i1.CaseMenuService","ModalModule","InputModule","VFormModule","CarbonButtonModule","CarbonModalModule","CarbonSelectModule","CarbonInputModule"],"mappings":"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"}