{"version":3,"file":"valtimo-task-management.mjs","sources":["../../../../projects/valtimo/task-management/src/lib/models/task-management.model.ts","../../../../projects/valtimo/task-management/src/lib/models/index.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management.service.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management-api.service.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management-search-fields.service.ts","../../../../projects/valtimo/task-management/src/lib/services/index.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-column-modal/task-management-column-modal.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-column-modal/task-management-column-modal.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-columns/task-management-columns.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-columns/task-management-columns.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields/task-management-search-fields.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields/task-management-search-fields.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-detail/task-management-detail.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-detail/task-management-detail.component.html","../../../../projects/valtimo/task-management/src/lib/components/index.ts","../../../../projects/valtimo/task-management/src/public_api.ts","../../../../projects/valtimo/task-management/src/valtimo-task-management.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\nenum TaskManagementTab {\n  COLUMNS = 'columns',\n  SEARCH_FIELDS = 'searchFields',\n}\n\nexport {TaskManagementTab};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task-management.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 {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TaskManagementTab} from '../models';\n\n@Injectable()\nexport class TaskManagementService {\n  private readonly _activeTab$ = new BehaviorSubject<TaskManagementTab>(TaskManagementTab.COLUMNS);\n\n  public get activeTab$(): Observable<TaskManagementTab> {\n    return this._activeTab$.asObservable();\n  }\n\n  public setActiveTab(tab: TaskManagementTab): void {\n    this._activeTab$.next(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 {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {TaskListColumn} from '@valtimo/task';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TaskManagementApiService extends BaseApiService {\n  constructor(\n    protected readonly httpClient: HttpClient,\n    protected readonly configService: ConfigService\n  ) {\n    super(httpClient, configService);\n  }\n\n  public getTaskListColumns(caseDefinitionKey: string): Observable<TaskListColumn[]> {\n    return this.httpClient.get<TaskListColumn[]>(\n      this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column`)\n    );\n  }\n\n  public updateTaskListColumn(\n    caseDefinitionKey: string,\n    column: TaskListColumn\n  ): Observable<TaskListColumn> {\n    return this.httpClient.put<TaskListColumn>(\n      this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column/${column.key}`),\n      column\n    );\n  }\n\n  public deleteTaskListColumn(\n    caseDefinitionKey: string,\n    columnKey: string\n  ): Observable<TaskListColumn> {\n    return this.httpClient.delete<TaskListColumn>(\n      this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column/${columnKey}`)\n    );\n  }\n\n  public updateTaskListColumnOrder(\n    caseDefinitionKey: string,\n    columnKeys: string[]\n  ): Observable<TaskListColumn[]> {\n    return this.httpClient.post<TaskListColumn[]>(\n      this.getApiUrl(`/management/v2/case/${caseDefinitionKey}/task-list-column`),\n      columnKeys\n    );\n  }\n\n  public swapTaskListColumns(\n    caseDefinitionKey: string,\n    firstColumn: TaskListColumn,\n    secondColumn: TaskListColumn\n  ): Observable<TaskListColumn[]> {\n    return this.httpClient.post<TaskListColumn[]>(\n      this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column`),\n      {first: firstColumn.key, second: secondColumn.key}\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 {TaskListSearchField} from '@valtimo/task';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TaskManagementSearchFieldsService extends BaseApiService {\n  private _caseDefinitionKey: string;\n\n  constructor(\n    protected readonly httpClient: HttpClient,\n    protected readonly configService: ConfigService\n  ) {\n    super(httpClient, configService);\n  }\n\n  public setCaseDefinitionKey(caseDefinitionKey: string): void {\n    this._caseDefinitionKey = caseDefinitionKey;\n  }\n\n  public getTaskListSearchFields(): Observable<TaskListSearchField[]> {\n    return this.httpClient.get<TaskListSearchField[]>(\n      this.getApiUrl(`/v1/search/field/TaskListSearchColumns/${this._caseDefinitionKey}`)\n    );\n  }\n\n  public createTaskListSearchField(\n    searchField: TaskListSearchField\n  ): Observable<TaskListSearchField> {\n    return this.httpClient.post<TaskListSearchField>(\n      this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}`),\n      {\n        ...searchField,\n        ownerType: 'TaskListSearchColumns',\n        ownerId: this._caseDefinitionKey,\n      }\n    );\n  }\n\n  public updateTaskListSearchField(\n    searchField: TaskListSearchField\n  ): Observable<TaskListSearchField> {\n    return this.httpClient.put<TaskListSearchField>(\n      this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}/${searchField.key}`),\n      {\n        ...searchField,\n        ownerType: 'TaskListSearchColumns',\n        ownerId: this._caseDefinitionKey,\n      }\n    );\n  }\n\n  public deleteTaskListSearchField(searchFieldKey: string): Observable<void> {\n    return this.httpClient.delete<void>(\n      this.getApiUrl(\n        `/v1/search/field/TaskListSearchColumns/${this._caseDefinitionKey}/${searchFieldKey}`\n      )\n    );\n  }\n\n  public orderTaskListSearchFields(searchFields: TaskListSearchField[]): Observable<any[]> {\n    return this.httpClient.put<any[]>(\n      this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}/fields`),\n      searchFields\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 './task-management.service';\nexport * from './task-management-api.service';\nexport * from './task-management-search-fields.service';\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 {\n  CARBON_CONSTANTS,\n  CARBON_THEME,\n  CarbonListModule,\n  CarbonMultiInputModule,\n  MultiInputValues,\n  TooltipIconModule,\n  ValtimoCdsModalDirective,\n  ValuePathSelectorComponent,\n  ViewType,\n} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n  ButtonModule,\n  CheckboxModule,\n  DropdownModule,\n  InputModule,\n  LayerModule,\n  ModalModule,\n  TabsModule,\n} from 'carbon-components-angular';\nimport {TaskManagementApiService} from '../../services';\nimport {\n  AbstractControl,\n  FormControl,\n  FormGroup,\n  FormsModule,\n  ReactiveFormsModule,\n  Validators,\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, map, Observable, of, startWith, tap} from 'rxjs';\nimport {\n  TaskListColumn,\n  TaskListColumnDefaultSort,\n  TaskListColumnEnum,\n  TaskListColumnListItem,\n  TaskListColumnModalCloseEvent,\n  TaskListColumnModalType,\n} from '@valtimo/task';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\n\n@Component({\n  selector: 'valtimo-task-management-column-modal',\n  templateUrl: './task-management-column-modal.component.html',\n  styleUrls: ['./task-management-column-modal.component.scss'],\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    CarbonListModule,\n    TranslateModule,\n    TabsModule,\n    FormsModule,\n    ModalModule,\n    CheckboxModule,\n    DropdownModule,\n    InputModule,\n    ReactiveFormsModule,\n    TooltipIconModule,\n    CarbonMultiInputModule,\n    ButtonModule,\n    ValtimoCdsModalDirective,\n    ValuePathSelectorComponent,\n    LayerModule,\n  ],\n})\nexport class TaskManagementColumnModalComponent {\n  @Input() public carbonTheme: CARBON_THEME = CARBON_THEME.G10;\n  @Input() public set taskListColumns(value: TaskListColumn[]) {\n    if (value?.length > 0) {\n      this._taskListColumns$.next(value);\n    }\n  }\n  @Input() public set type(value: TaskListColumnModalType) {\n    this.type$.next(value);\n  }\n  public get type(): TaskListColumnModalType {\n    return this.type$.getValue();\n  }\n  @Input() public set show(showModal: boolean) {\n    this.show$.next(showModal);\n    if (showModal) this.enable();\n    if (!showModal) this.resetFormAfterTimeout();\n  }\n  @Input() public caseDefinitionKey!: string;\n  @Input() public set selectedTaskListColumn(column: TaskListColumn) {\n    if (column) this.prefillForm(column);\n  }\n  @Output() closeEvent = new EventEmitter<TaskListColumnModalCloseEvent>();\n\n  public readonly type$ = new BehaviorSubject<TaskListColumnModalType>('add');\n  public readonly isAdd$ = this.type$.pipe(map(type => type === 'add'));\n  public readonly isEdit$ = this.type$.pipe(\n    map(type => type === 'edit'),\n    tap(isEdit => {\n      if (isEdit) {\n        this.key?.disable();\n      } else {\n        this.key?.enable();\n      }\n    })\n  );\n  public readonly show$ = new BehaviorSubject<boolean>(false);\n  public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n  private readonly _taskListColumns$ = new BehaviorSubject<TaskListColumn[]>([]);\n\n  public get taskListColumns$(): Observable<TaskListColumn[]> {\n    return this._taskListColumns$.pipe(\n      distinctUntilChanged((previous, current) => isEqual(previous, current))\n    );\n  }\n\n  private readonly _INVALID_KEY = 'INVALID_KEY';\n\n  private readonly DISPLAY_TYPES: Array<ViewType> = [\n    ViewType.TEXT,\n    ViewType.DATE,\n    ViewType.BOOLEAN,\n    ViewType.ENUM,\n    ViewType.ARRAY_COUNT,\n    ViewType.TAGS,\n    ViewType.UNDERSCORES_TO_SPACES,\n  ];\n\n  private getInvalidListItem = (translateKey: string): TaskListColumnListItem => ({\n    content: this.translateService.instant(translateKey),\n    key: this._INVALID_KEY,\n    selected: true,\n  });\n\n  private uniqueKeyValidator = (\n    keyFormControl: AbstractControl<TaskListColumnListItem>\n  ): {notUnique: boolean} | null => {\n    const taskListColumns = this._taskListColumns$.getValue();\n\n    return !taskListColumns?.find(\n      column => column?.key?.trim()?.toLowerCase() === keyFormControl?.value?.trim()?.toLowerCase()\n    )\n      ? null\n      : {notUnique: true};\n  };\n\n  private listItemValidator = (\n    listItemControl: AbstractControl<TaskListColumnListItem>\n  ): {invalidItem: boolean} | null =>\n    listItemControl?.value?.key && listItemControl.value.key !== this._INVALID_KEY\n      ? null\n      : {invalidItem: true};\n\n  public readonly formGroup = new FormGroup({\n    title: new FormControl<string | null>(null),\n    key: new FormControl<string | null>(null, [\n      this.uniqueKeyValidator.bind(this),\n      Validators.required,\n    ]),\n    path: new FormControl<string | null>(null, Validators.required),\n    dateFormat: new FormControl<string | null>(null),\n    displayType: new FormControl<TaskListColumnListItem>(\n      this.getInvalidListItem(`listColumn.selectDefaultSort`),\n      [Validators.required, this.listItemValidator.bind(this)]\n    ),\n    sortable: new FormControl<boolean>(false),\n    defaultSort: new FormControl<TaskListColumnListItem>(\n      this.getInvalidListItem(`listColumn.selectDefaultSort`),\n      [Validators.required]\n    ),\n  });\n\n  public get title(): AbstractControl<string | null> | null {\n    return this.formGroup.get('title');\n  }\n  public get key(): AbstractControl<string | null> | null {\n    return this.formGroup.get('key');\n  }\n  public get keyValue$(): Observable<string | null> {\n    return this.key?.valueChanges.pipe(distinctUntilChanged()) ?? of(null);\n  }\n  public get path(): AbstractControl<string | null> | null {\n    return this.formGroup.get('path');\n  }\n  public get dateFormat(): AbstractControl<string | null> | null {\n    return this.formGroup.get('dateFormat');\n  }\n  public get displayType(): AbstractControl<TaskListColumnListItem | null> | null {\n    return this.formGroup.get('displayType');\n  }\n  public get sortable(): AbstractControl<boolean | null> | null {\n    return this.formGroup.get('sortable');\n  }\n  public get defaultSort(): AbstractControl<TaskListColumnListItem | null> | null {\n    return this.formGroup.get('defaultSort');\n  }\n\n  private get _SORT_ASC_ITEM() {\n    return {\n      content: this.translateService.instant(`listColumn.sortableAsc`),\n      key: 'ASC',\n    } as TaskListColumnListItem;\n  }\n  private get _SORT_DESC_ITEM() {\n    return {\n      content: this.translateService.instant(`listColumn.sortableDesc`),\n      key: 'DESC',\n    } as TaskListColumnListItem;\n  }\n  public readonly sortItems$: Observable<Array<TaskListColumnListItem>> = combineLatest([\n    this.defaultSort?.valueChanges || of(null),\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([defaultSortItem]) =>\n      [\n        this.getInvalidListItem(`listColumn.selectDefaultSort`),\n        this._SORT_ASC_ITEM,\n        this._SORT_DESC_ITEM,\n      ].map((item, index) => ({\n        ...item,\n        selected: defaultSortItem?.key === item?.key,\n      }))\n    )\n  );\n\n  public readonly viewTypeItems$: Observable<Array<TaskListColumnListItem>> = combineLatest([\n    this.displayType?.valueChanges || of(null),\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([displayTypeItem]) =>\n      [\n        {\n          content: this.translateService.instant(`listColumnDisplayType.select`),\n          key: this._INVALID_KEY,\n        },\n        ...this.DISPLAY_TYPES.map(type => this.getListItemFromViewType(type)),\n      ].map((item, index) => ({\n        ...item,\n        selected: displayTypeItem?.key === item?.key,\n      }))\n    )\n  );\n\n  private _showDateFormat!: boolean;\n  public readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n    map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n    tap(showDateFormat => (this._showDateFormat = showDateFormat))\n  );\n\n  private _showEnum!: boolean;\n  public readonly showEnum$ = this.formGroup.valueChanges.pipe(\n    map(formValues => !!(formValues.displayType?.key === ViewType.ENUM)),\n    tap(showEnum => {\n      this._showEnum = showEnum;\n      if ((this._enumValues$.getValue() || []).length === 0) this.resetEnumValues();\n    })\n  );\n\n  private _showYesNo!: boolean;\n  public readonly showYesNo$ = this.formGroup.valueChanges.pipe(\n    map(formValues => !!(formValues.displayType?.key === ViewType.BOOLEAN)),\n    tap(showYesNo => {\n      this._showYesNo = showYesNo;\n      if ((this._yesNoValues$.getValue() || []).length === 0) this.resetYesNoValues();\n    })\n  );\n\n  public readonly CARBON_THEME_WHITE = CARBON_THEME.WHITE;\n\n  private static readonly SORTABLE_PATH_REGEX = /^(doc:|case:|task:)/;\n\n  public readonly displaySortable$: Observable<boolean> = (\n    this.path?.valueChanges ?? of(this.path?.value)\n  ).pipe(\n    startWith(this.path?.value),\n    map(value =>\n      TaskManagementColumnModalComponent.SORTABLE_PATH_REGEX.test(String(value ?? ''))\n    ),\n    tap(displaySortable => {\n      this._displaySortable = displaySortable;\n      if (!displaySortable) {\n        const sortableValue = this.sortable?.value;\n        const defaultSortKey = this.defaultSort?.value?.key;\n        if (sortableValue || (defaultSortKey && defaultSortKey !== this._INVALID_KEY)) {\n          this.sortable?.setValue(false, {emitEvent: false});\n          this.defaultSort?.setValue(this.getInvalidListItem(`listColumn.selectDefaultSort`), {\n            emitEvent: false,\n          });\n        }\n      }\n    })\n  );\n\n  private _displaySortable = true;\n\n  public readonly disableDefaultSort$ = combineLatest([this.taskListColumns$, this.keyValue$]).pipe(\n    map(([taskListColumns, keyValue]) => {\n      const defaultSortColumn = taskListColumns.find(\n        column =>\n          column?.defaultSort === TaskListColumnDefaultSort.ASC ||\n          column?.defaultSort === TaskListColumnDefaultSort.DESC\n      );\n      const defaultSortColumnExists = !!defaultSortColumn;\n      const enabled = !defaultSortColumnExists || defaultSortColumn.key === keyValue;\n\n      if (enabled) {\n        this.defaultSort?.enable();\n      } else {\n        this.defaultSort?.disable();\n      }\n\n      return !enabled;\n    })\n  );\n\n  private readonly _DEFAULT_ENUM_VALUES: MultiInputValues = [{key: '', value: ''}];\n\n  private readonly _enumValues$ = new BehaviorSubject<MultiInputValues>(this._DEFAULT_ENUM_VALUES);\n\n  public get enumValues$(): Observable<MultiInputValues> {\n    return this._enumValues$.pipe(\n      distinctUntilChanged((previous, current) => isEqual(previous, current))\n    );\n  }\n\n  public get enumValid$(): Observable<boolean> {\n    return this.enumValues$.pipe(map(values => this.getValidEnumValues(values).length > 0));\n  }\n\n  private readonly _enumInitialValues$ = new BehaviorSubject<MultiInputValues>(\n    this._DEFAULT_ENUM_VALUES\n  );\n\n  public get enumInitialValues$(): Observable<MultiInputValues> {\n    return this._enumInitialValues$.pipe(\n      distinctUntilChanged((previous, current) => isEqual(previous, current))\n    );\n  }\n\n  private readonly _yesNoValues$ = new BehaviorSubject<MultiInputValues>(this._DEFAULT_ENUM_VALUES);\n\n  public get yesNoValues$(): Observable<MultiInputValues> {\n    return this._yesNoValues$.pipe(\n      distinctUntilChanged((previous, current) => isEqual(previous, current))\n    );\n  }\n\n  private readonly _yesNoInitialValues$ = new BehaviorSubject<MultiInputValues>(\n    this._DEFAULT_ENUM_VALUES\n  );\n\n  public get yesNoInitialValues$(): Observable<MultiInputValues> {\n    return this._yesNoInitialValues$.pipe(\n      distinctUntilChanged((previous, current) => isEqual(previous, current))\n    );\n  }\n\n  constructor(\n    private readonly translateService: TranslateService,\n    private readonly taskManagementApiService: TaskManagementApiService\n  ) {}\n\n  public closeModal(): void {\n    this.closeEvent.emit('close');\n  }\n\n  public save(): void {\n    this.disable();\n\n    this.taskManagementApiService\n      .updateTaskListColumn(\n        this.caseDefinitionKey,\n        this.getTaskListColumnFromFormValue(this._showEnum, this._showDateFormat, this._showYesNo)\n      )\n      .subscribe({\n        next: () => {\n          this.closeModalAndRefresh();\n          this.enableAfterTimeout();\n        },\n        error: () => {\n          this.enable();\n        },\n      });\n  }\n\n  public enumValueChange(value: MultiInputValues): void {\n    this._enumValues$.next(value);\n  }\n\n  public yesNoValueChange(value: MultiInputValues): void {\n    this._yesNoValues$.next(value);\n  }\n\n  private resetEnumValues(): void {\n    this._enumValues$.next(this._DEFAULT_ENUM_VALUES);\n    this._enumInitialValues$.next(this._DEFAULT_ENUM_VALUES);\n  }\n\n  private resetYesNoValues(): void {\n    this._yesNoValues$.next(this._DEFAULT_ENUM_VALUES);\n    this._yesNoInitialValues$.next(this._DEFAULT_ENUM_VALUES);\n  }\n\n  private resetFormAfterTimeout(): void {\n    setTimeout(() => {\n      this.resetForm();\n    }, CARBON_CONSTANTS.modalAnimationMs);\n  }\n\n  private resetForm(): void {\n    this.resetEnumValues();\n    this.resetYesNoValues();\n    this.formGroup.reset({\n      title: null,\n      key: null,\n      dateFormat: null,\n      displayType: this.getInvalidListItem('listColumnDisplayType.select'),\n      sortable: false,\n      defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),\n    });\n  }\n\n  private disable(): void {\n    this.disabled$.next(true);\n  }\n\n  private enableAfterTimeout(): void {\n    setTimeout(() => {\n      this.enable();\n    }, CARBON_CONSTANTS.modalAnimationMs);\n  }\n\n  private enable(): void {\n    this.disabled$.next(false);\n  }\n\n  private closeModalAndRefresh(): void {\n    this.closeEvent.emit('refresh');\n  }\n\n  private getTaskListColumnFromFormValue(\n    includeEnum: boolean,\n    includeDateFormat: boolean,\n    includeYesNo: boolean\n  ): TaskListColumn {\n    const validEnumValues = this.getValidEnumValues(this._enumValues$.getValue());\n    const mappedEnumValues =\n      validEnumValues && validEnumValues.length > 0 && this.mapEnumValues(validEnumValues);\n    const validYesNoValues = this.getValidEnumValues(this._yesNoValues$.getValue());\n    const mappedYesNoValues =\n      validYesNoValues && validYesNoValues.length > 0 && this.mapEnumValues(validYesNoValues);\n\n    const formValue = this.formGroup.getRawValue();\n    const taskListColumn: TaskListColumn = {\n      title: formValue?.title ?? '',\n      key: formValue.key ?? '',\n      path: formValue.path ?? '',\n      displayType: {\n        type: formValue?.displayType?.key ?? '',\n        displayTypeParameters: {\n          ...(!!includeDateFormat && {dateFormat: formValue.dateFormat ?? ''}),\n          ...(includeEnum && mappedEnumValues && {enum: mappedEnumValues}),\n          ...(includeYesNo && mappedYesNoValues && {enum: mappedYesNoValues}),\n        },\n      },\n      sortable: this._displaySortable ? formValue.sortable ?? false : false,\n      ...(this._displaySortable &&\n        formValue?.defaultSort?.key !== this._INVALID_KEY && {\n          defaultSort: formValue?.defaultSort?.key as TaskListColumnDefaultSort,\n        }),\n    };\n\n    return taskListColumn;\n  }\n\n  private mapEnumValues(enumValues: MultiInputValues): TaskListColumnEnum {\n    return enumValues.reduce((acc, curr) => ({...acc, [curr?.key ?? '']: curr.value}), {});\n  }\n\n  private getValidEnumValues(values: MultiInputValues): MultiInputValues {\n    return (values || []).filter(value => value.value && value.key);\n  }\n\n  private getListItemFromViewType(viewType: ViewType | string): TaskListColumnListItem {\n    return {\n      content: this.translateService.instant(`listColumnDisplayType.${viewType}`),\n      key: viewType,\n    } as TaskListColumnListItem;\n  }\n\n  private getMultiInputValuesFromTaskListColumnEnum(\n    taskListColumnEnum: TaskListColumnEnum\n  ): MultiInputValues {\n    return Object.keys(taskListColumnEnum).reduce(\n      (acc, curr) => [...acc, {key: curr, value: taskListColumnEnum[curr]}],\n      [] as MultiInputValues\n    );\n  }\n\n  private prefillForm(column: TaskListColumn): void {\n    if (\n      column?.displayType?.type === ViewType.ENUM &&\n      column?.displayType?.displayTypeParameters?.enum\n    ) {\n      const prefilledEnum = this.getMultiInputValuesFromTaskListColumnEnum(\n        column.displayType.displayTypeParameters.enum\n      );\n      this._enumValues$.next(prefilledEnum);\n      this._enumInitialValues$.next(prefilledEnum);\n    }\n\n    if (\n      column?.displayType?.type === ViewType.BOOLEAN &&\n      column?.displayType?.displayTypeParameters?.enum\n    ) {\n      const prefilledYesNo = this.getMultiInputValuesFromTaskListColumnEnum(\n        column.displayType.displayTypeParameters.enum\n      );\n      this._yesNoValues$.next(prefilledYesNo);\n      this._yesNoInitialValues$.next(prefilledYesNo);\n    }\n\n    this.formGroup.patchValue({\n      key: column.key,\n      path: column.path,\n      sortable: column.sortable,\n      displayType: this.getListItemFromViewType(column.displayType.type),\n      ...(column.title && {title: column.title}),\n      ...(!column.defaultSort && {\n        defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),\n      }),\n      ...(column.defaultSort === 'ASC' && {defaultSort: this._SORT_ASC_ITEM}),\n      ...(column.defaultSort === 'DESC' && {defaultSort: this._SORT_DESC_ITEM}),\n      ...(column.displayType?.type === ViewType.DATE && {\n        dateFormat: column.displayType?.displayTypeParameters?.dateFormat,\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\n  *ngIf=\"{\n    show: show$ | async,\n    type: type$ | async,\n    isAdd: isAdd$ | async,\n    isEdit: isEdit$ | async,\n    disabled: disabled$ | async,\n    showDateFormat: showDateFormat$ | async,\n    showEnum: showEnum$ | async,\n    showYesNo: showYesNo$ | async,\n    disableDefaultSort: disableDefaultSort$ | async,\n    enumInitialValues: enumInitialValues$ | async,\n    enumValid: enumValid$ | async,\n    yesNoInitialValues: yesNoInitialValues$ | async,\n    viewTypeItems: viewTypeItems$ | async,\n    sortItems: sortItems$ | async,\n    displaySortable: displaySortable$ | async,\n  } as obs\"\n>\n  <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal (close)=\"closeModal()\">\n    <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n      <h3 cdsModalHeaderHeading>\n        {{\n          obs.type === 'add'\n            ? ('listColumn.addButtonText' | translate)\n            : ('listColumn.editColumnTitle' | translate)\n        }}\n      </h3>\n    </cds-modal-header>\n\n    <form cdsModalContent [formGroup]=\"formGroup\" class=\"list-column-form\">\n      <div class=\"cds--text-input__field-wrapper\">\n        <cds-label [disabled]=\"obs.disabled\">\n          <span class=\"label-with-tooltip\">\n            {{ 'listColumn.titleTitle' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.titleTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <input cdsText cdsLayer formControlName=\"title\" />\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\">\n        <cds-label\n          [invalid]=\"key?.touched && key?.invalid\"\n          [disabled]=\"obs.disabled || obs.isEdit\"\n          [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n        >\n          <span class=\"label-with-tooltip\">\n            {{ 'listColumn.key' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.keyTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <input cdsText cdsLayer formControlName=\"key\" />\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\">\n        <cds-label [disabled]=\"obs.disabled\">\n          <span class=\"label-with-tooltip\">\n            {{ 'listColumn.path' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.pathTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <valtimo-value-path-selector\n            formControlName=\"path\"\n            [caseDefinitionKey]=\"caseDefinitionKey\"\n          ></valtimo-value-path-selector>\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\">\n        <cds-label [disabled]=\"obs.disabled\">\n          <span class=\"label-with-tooltip select-label\">\n            {{ 'listColumn.displayType' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <cds-dropdown\n            *ngIf=\"obs.viewTypeItems\"\n            cdsLayer\n            formControlName=\"displayType\"\n            [disabled]=\"obs.disabled\"\n          >\n            <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n          </cds-dropdown>\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n        <cds-label [disabled]=\"obs.disabled\">\n          <span class=\"label-with-tooltip\">\n            {{ 'listColumn.dateFormat' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <input cdsText cdsLayer formControlName=\"dateFormat\" />\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n        <cds-label [disabled]=\"obs.disabled\">\n          <span class=\"label-with-tooltip select-label\">\n            {{ 'listColumn.enumTitle' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.enumTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <valtimo-carbon-multi-input\n            *ngIf=\"obs.showEnum\"\n            [fullWidth]=\"true\"\n            [carbonTheme]=\"CARBON_THEME_WHITE\"\n            [defaultValues]=\"obs.enumInitialValues\"\n            type=\"keyValue\"\n            (valueChange)=\"enumValueChange($event)\"\n          ></valtimo-carbon-multi-input>\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n        <cds-label [disabled]=\"obs.disabled\">\n          <span class=\"label-with-tooltip select-label\">\n            {{ 'listColumn.enumTitleOptional' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <valtimo-carbon-multi-input\n            *ngIf=\"obs.showYesNo\"\n            [fullWidth]=\"true\"\n            [defaultValues]=\"obs.yesNoInitialValues\"\n            type=\"keyValue\"\n            [hideAddButton]=\"true\"\n            [hideDeleteButton]=\"true\"\n            [maxRows]=\"1\"\n            [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n            [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n            (valueChange)=\"yesNoValueChange($event)\"\n          ></valtimo-carbon-multi-input>\n        </cds-label>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.displaySortable\">\n        <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n          >{{ 'listColumn.sortable' | translate }}\n        </cds-checkbox>\n      </div>\n\n      <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.displaySortable\">\n        <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n          <span class=\"label-with-tooltip select-label\">\n            {{ 'listColumn.defaultSortTitle' | translate }}\n\n            <v-tooltip-icon\n              [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n              [disabled]=\"obs.disabled\"\n            ></v-tooltip-icon>\n          </span>\n\n          <cds-dropdown\n            formControlName=\"defaultSort\"\n            [disabled]=\"obs.disabled\"\n            cdsLayer\n            *ngIf=\"obs.sortItems\"\n          >\n            <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n          </cds-dropdown>\n        </cds-label>\n      </div>\n    </form>\n\n    <cds-modal-footer>\n      <button (click)=\"closeModal()\" cdsButton=\"secondary\" [disabled]=\"obs.disabled\">\n        {{ 'listColumn.close' | translate }}\n      </button>\n\n      <button\n        (click)=\"save()\"\n        cdsButton=\"primary\"\n        [disabled]=\"obs.disabled || formGroup.invalid || (obs.showEnum && !obs.enumValid)\"\n      >\n        {{ (obs.type === 'add' ? 'interface.create' : 'listColumn.save') | translate }}\n      </button>\n    </cds-modal-footer>\n  </cds-modal>\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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n  ActionItem,\n  CARBON_CONSTANTS,\n  CARBON_THEME,\n  CarbonListModule,\n  ColumnConfig,\n  ConfirmationModalModule,\n  MoveRowDirection,\n  MoveRowEvent,\n} from '@valtimo/components';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {\n  TaskListColumn,\n  TaskListColumnDisplayTypeParameters,\n  TaskListColumnModalCloseEvent,\n  TaskListColumnModalType,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, switchMap, take, tap} from 'rxjs';\nimport {TaskManagementApiService, TaskManagementService} from '../../services';\nimport {TaskManagementColumnModalComponent} from '../task-management-column-modal/task-management-column-modal.component';\n\n@Component({\n  selector: 'valtimo-task-management-columns',\n  templateUrl: './task-management-columns.component.html',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    CarbonListModule,\n    TranslateModule,\n    TabsModule,\n    TaskManagementColumnModalComponent,\n    ButtonModule,\n    IconModule,\n    ConfirmationModalModule,\n  ],\n  providers: [TaskManagementService],\n})\nexport class TaskManagementColumnsComponent {\n  @Input() public carbonTheme: CARBON_THEME = CARBON_THEME.G10;\n\n  private readonly _refreshColumns$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n  public readonly caseDefinitionKey$: Observable<string> = getCaseManagementRouteParams(\n    this.route\n  ).pipe(\n    map((params: CaseManagementParams | undefined) => (!params ? '' : params.caseDefinitionKey))\n  );\n\n  public readonly loadingColumns$ = new BehaviorSubject<boolean>(true);\n\n  public readonly selectedTaskListColumn$ = new Subject<TaskListColumn | null>();\n\n  public readonly cachedTaskListColumns$ = new BehaviorSubject<TaskListColumn[]>([]);\n\n  public readonly taskListColumns$: Observable<TaskListColumn[]> = combineLatest([\n    this.caseDefinitionKey$,\n    this._refreshColumns$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    tap(([_, refresh]) => {\n      if (refresh !== 'noAnimation') this.loadingColumns$.next(true);\n    }),\n    switchMap(([caseDefinitionKey]) =>\n      this.taskManagementApiService.getTaskListColumns(caseDefinitionKey)\n    ),\n    tap(columns => {\n      this.cachedTaskListColumns$.next(columns);\n    }),\n    map(columns =>\n      columns.map(column => ({\n        ...column,\n        title: column.title || '-',\n        sortable: column.sortable\n          ? this.translateService.instant('listColumn.sortableYes')\n          : this.translateService.instant('listColumn.sortableNo'),\n        defaultSort:\n          (column.defaultSort === 'ASC' &&\n            this.translateService.instant('listColumn.sortableAsc')) ||\n          (column.defaultSort === 'DESC' &&\n            this.translateService.instant('listColumn.sortableDesc')) ||\n          '-',\n        displayType: this.translateService.instant(\n          `listColumnDisplayType.${column?.displayType?.type}`\n        ),\n        displayTypeParameters: this.getDisplayTypeParametersView(\n          column?.displayType?.displayTypeParameters\n        ),\n      }))\n    ),\n    tap(() => {\n      this.enable();\n      this.loadingColumns$.next(false);\n    })\n  );\n\n  public readonly showDeleteModal$ = new Subject<boolean>();\n  public readonly deleteColumnKey$ = new BehaviorSubject<string>('');\n\n  public readonly disabled$ = new BehaviorSubject<boolean>(true);\n\n  public readonly fields: Array<ColumnConfig> = [\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'title',\n      label: 'listColumn.title',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'key',\n      label: 'listColumn.key',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'path',\n      label: 'listColumn.path',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'displayType',\n      label: 'listColumn.displayType',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'displayTypeParameters',\n      label: 'listColumn.displayTypeParameters',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'sortable',\n      label: 'listColumn.sortable',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      key: 'defaultSort',\n      label: 'listColumn.defaultSort',\n    },\n  ];\n\n  public readonly actionItems: ActionItem[] = [\n    {\n      label: 'interface.edit',\n      callback: this.editColumn.bind(this),\n    },\n    {\n      label: 'interface.delete',\n      callback: this.deleteColumn.bind(this),\n      type: 'danger',\n    },\n  ];\n\n  public readonly modalType$ = new Subject<TaskListColumnModalType>();\n  public readonly showModal$ = new Subject<boolean>();\n\n  constructor(\n    private readonly route: ActivatedRoute,\n    private readonly taskManagementApiService: TaskManagementApiService,\n    private readonly translateService: TranslateService\n  ) {}\n\n  public refreshColumns(noAnimation = false): void {\n    this._refreshColumns$.next(noAnimation ? 'noAnimation' : null);\n  }\n\n  public deleteColumn(taskListColumn: TaskListColumn): void {\n    this.showDeleteModal$.next(true);\n    this.deleteColumnKey$.next(taskListColumn.key);\n  }\n\n  public onItemsReordered(reorderedItems: TaskListColumn[], caseDefinitionKey: string): void {\n    this.disable();\n\n    this.taskManagementApiService\n      .updateTaskListColumnOrder(\n        caseDefinitionKey,\n        reorderedItems.map((column: TaskListColumn) => column.key)\n      )\n      .subscribe({\n        next: () => {\n          this.refreshColumns(true);\n        },\n        error: () => this.enable(),\n      });\n  }\n\n  public editColumn(columnItem: TaskListColumn): void {\n    this.cachedTaskListColumns$.pipe(take(1)).subscribe(cachedTaskListColumns => {\n      const selectedTaskListColumn = cachedTaskListColumns.find(\n        column => column.key === columnItem.key\n      );\n\n      this.selectedTaskListColumn$.next(selectedTaskListColumn ?? null);\n      this.showModal('edit');\n    });\n  }\n\n  public showModal(type: TaskListColumnModalType): void {\n    this.modalType$.next(type);\n    this.showModal$.next(true);\n  }\n\n  public onModalCloseEvent(event: TaskListColumnModalCloseEvent): void {\n    this.showModal$.next(false);\n\n    if (event === 'refresh') {\n      this.disable();\n      this.refreshColumns();\n    }\n\n    setTimeout(() => {\n      this.clearSelectedTaskListColumn();\n    }, CARBON_CONSTANTS.modalAnimationMs);\n  }\n\n  public deleteColumnConfirmation(columnKey: string, caseDefinitionKey: string): void {\n    this.disable();\n\n    this.taskManagementApiService.deleteTaskListColumn(caseDefinitionKey, columnKey).subscribe({\n      next: () => {\n        this.refreshColumns(true);\n      },\n      error: () => this.enable(),\n    });\n  }\n\n  private getDisplayTypeParametersView(\n    displayTypeParameters: TaskListColumnDisplayTypeParameters | undefined\n  ): string {\n    if (!displayTypeParameters) return '-';\n\n    if (displayTypeParameters?.dateFormat) {\n      return displayTypeParameters.dateFormat;\n    } else if (displayTypeParameters?.enum) {\n      return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n        const keyValuePairString = `${curr}: ${displayTypeParameters?.enum?.[curr]}`;\n\n        if (!acc) return `${keyValuePairString}`;\n\n        return `${acc}, ${keyValuePairString}`;\n      }, '');\n    }\n\n    return '-';\n  }\n\n  private disable(): void {\n    this.disabled$.next(true);\n  }\n\n  private enable(): void {\n    this.disabled$.next(false);\n  }\n\n  private clearSelectedTaskListColumn(): void {\n    this.selectedTaskListColumn$.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<ng-container\n  *ngIf=\"{\n    taskListColumns: taskListColumns$ | async,\n    cachedTaskListColumns: cachedTaskListColumns$ | async,\n    caseDefinitionKey: caseDefinitionKey$ | async,\n    loadingColumns: loadingColumns$ | async,\n    modalType: modalType$ | async,\n    showModal: showModal$ | async,\n  } as obs\"\n>\n  <valtimo-carbon-list\n    [actionItems]=\"actionItems\"\n    [items]=\"obs.taskListColumns\"\n    [loading]=\"obs.loadingColumns\"\n    [fields]=\"fields\"\n    [header]=\"false\"\n    [dragAndDrop]=\"true\"\n    (rowClicked)=\"editColumn($event)\"\n    (itemsReordered)=\"onItemsReordered($event, obs.caseDefinitionKey)\"\n  >\n    <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addButton\"></ng-container>\n\n    <valtimo-no-results\n      [action]=\"addButton\"\n      [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n      [description]=\"'listColumn.noConfigWarning' | translate\"\n      illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n    ></valtimo-no-results>\n  </valtimo-carbon-list>\n\n  <valtimo-task-management-column-modal\n    [taskListColumns]=\"obs.cachedTaskListColumns\"\n    [type]=\"obs.modalType\"\n    [show]=\"obs.showModal\"\n    [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n    [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n    (closeEvent)=\"onModalCloseEvent($event)\"\n  ></valtimo-task-management-column-modal>\n\n  <valtimo-confirmation-modal\n    [showModalSubject$]=\"showDeleteModal$\"\n    [outputOnConfirm]=\"deleteColumnKey$ | async\"\n    (confirmEvent)=\"deleteColumnConfirmation($event, obs.caseDefinitionKey)\"\n    confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n    titleTranslationKey=\"listColumn.deleteColumn\"\n    contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n  ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n  <button\n    carbonToolbarContent\n    cdsButton=\"primary\"\n    [disabled]=\"disabled$ | async\"\n    (click)=\"showModal('add')\"\n  >\n    {{ 'listColumn.addButtonText' | translate }}\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></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 {CommonModule} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  FormArray,\n  FormBuilder,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validators,\n} from '@angular/forms';\nimport {InformationFilled16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n  CARBON_CONSTANTS,\n  CarbonListModule,\n  ColumnConfig,\n  InputLabelModule,\n  ValuePathSelectorComponent,\n  ValuePathSelectorPrefix,\n  ViewType,\n} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n  TaskListSearchDropdownDataProvider,\n  TaskListSearchDropdownValue,\n  TaskListSearchField,\n  TaskListSearchFieldDataType,\n  TaskListSearchFieldFieldType,\n  TaskListSearchFieldMatchType,\n} from '@valtimo/task';\nimport {\n  ButtonModule,\n  DropdownModule,\n  IconModule,\n  IconService,\n  InputModule,\n  LayerModule,\n  ListItem,\n  ModalModule,\n} from 'carbon-components-angular';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  distinctUntilChanged,\n  filter,\n  map,\n  Observable,\n  of,\n  startWith,\n  switchMap,\n} from 'rxjs';\n\n@Component({\n  selector: 'valtimo-task-management-search-fields-modal',\n  templateUrl: './task-management-search-fields-modal.component.html',\n  styleUrl: './task-management-search-fields-modal.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    CommonModule,\n    TranslateModule,\n    ButtonModule,\n    DropdownModule,\n    InputModule,\n    ModalModule,\n    ReactiveFormsModule,\n    IconModule,\n    CarbonListModule,\n    InputLabelModule,\n    ValuePathSelectorComponent,\n    LayerModule,\n  ],\n})\nexport class TaskManagementSearchFieldsModalComponent implements OnInit {\n  @Input({required: true}) open: boolean;\n\n  public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n  @Input({required: true}) public set caseDefinitionKey(value: string) {\n    this.caseDefinitionKey$.next(value);\n  }\n\n  private _prefillData: TaskListSearchField | null;\n  @Input() public set prefillData(value: TaskListSearchField | null) {\n    this._prefillData = value;\n    this.setPrefilledForm(value);\n  }\n  public get prefillData(): TaskListSearchField | null {\n    return this._prefillData;\n  }\n  @Output() closeEvent = new EventEmitter<Partial<TaskListSearchField> | null>();\n\n  public readonly form = this.fb.group({\n    key: this.fb.control<string>('', Validators.required),\n    title: this.fb.control<string>(''),\n    path: this.fb.control<string>('', Validators.required),\n    dataType: this.fb.control<ListItem | null>(null, Validators.required),\n    matchType: this.fb.control<ListItem | null>(null, this.matchTypeValidator),\n    fieldType: this.fb.control<ListItem | null>(null, Validators.required),\n    dropdownDataProvider: this.fb.control<ListItem | null>(null),\n    dropdownValues: this.fb.array<{key: string; value: string}>([]),\n  });\n\n  public get dataType(): AbstractControl<ListItem | null> | null {\n    return this.form.get('dataType');\n  }\n  public get dataTypeValue$(): Observable<ListItem | null> {\n    return this.dataType?.valueChanges.pipe(startWith(this.dataType.value)) ?? of(null);\n  }\n\n  public get matchType(): AbstractControl<ListItem | null> | null {\n    return this.form.get('matchType');\n  }\n  public get matchTypeValue$(): Observable<ListItem | null> {\n    return this.matchType?.valueChanges.pipe(startWith(this.matchType.value)) ?? of(null);\n  }\n\n  public get dropdownDataProvider(): AbstractControl<ListItem | null> | null {\n    return this.form.get('dropdownDataProvider');\n  }\n\n  public get dropdownDataProviderValue$(): Observable<ListItem | null> {\n    return (\n      this.dropdownDataProvider?.valueChanges.pipe(startWith(this.dropdownDataProvider.value)) ??\n      of(null)\n    );\n  }\n\n  public get fieldType(): AbstractControl<ListItem | null> | null {\n    return this.form.get('fieldType');\n  }\n  public get fieldTypeValue$(): Observable<ListItem | null> {\n    return this.fieldType?.valueChanges.pipe(startWith(this.fieldType.value)) ?? of(null);\n  }\n\n  public readonly TaskListSearchFieldDataType = TaskListSearchFieldDataType;\n  public readonly TaskListSearchFieldFieldType = TaskListSearchFieldFieldType;\n  public readonly TaskListSearchDropdownDataProvider = TaskListSearchDropdownDataProvider;\n\n  public get keyValue(): string | null {\n    const controlValue = this.form.get('key')?.value;\n\n    return !controlValue ? null : controlValue;\n  }\n\n  public get dataTypeValue(): string | null {\n    const controlValue = this.form.get('dataType')?.value;\n    this._dataTypeValue$.next(controlValue?.id);\n\n    return !controlValue ? null : controlValue.id;\n  }\n\n  public get fieldTypeValue(): string | null {\n    const controlValue = this.form.get('fieldType')?.value;\n\n    return !controlValue ? null : controlValue.id;\n  }\n\n  public get dropdownDataProviderValue(): string | null {\n    const controlValue = this.form.get('dropdownDataProvider')?.value;\n    this._dropdownProviderValue$.next(controlValue?.id);\n\n    return !controlValue ? null : controlValue.id;\n  }\n\n  public get dropdownValuesArray(): FormArray | null {\n    const formArray = this.form.get('dropdownValues');\n\n    return !formArray ? null : (formArray as FormArray);\n  }\n\n  public readonly DROPDOWN_FIELDS: ColumnConfig[] = [\n    {\n      key: 'key',\n      label: 'searchFieldsOverview.key',\n      viewType: ViewType.TEXT,\n    },\n    {\n      key: 'value',\n      label: 'searchFieldsOverview.text',\n      viewType: ViewType.TEXT,\n    },\n  ];\n\n  private readonly _dataTypeValue$ = new BehaviorSubject<\n    TaskListSearchFieldDataType | null | undefined\n  >(null);\n\n  private readonly _dropdownProviderValue$ = new BehaviorSubject<\n    TaskListSearchDropdownDataProvider | null | undefined\n  >(null);\n  public readonly dropdownReadonlyItems$ = this._dropdownProviderValue$.pipe(\n    distinctUntilChanged(),\n    filter(val => !!val && val === TaskListSearchDropdownDataProvider.JSON),\n    switchMap((provider: TaskListSearchDropdownDataProvider | null | undefined) =>\n      this.documentService.getDropdownData(\n        provider ?? '',\n        this.caseDefinitionKey$.getValue() ?? '',\n        this.keyValue ?? ''\n      )\n    ),\n    map(dropdownData =>\n      dropdownData ? Object.entries(dropdownData).map(([key, value]) => ({key, value})) : []\n    )\n  );\n\n  public readonly dataTypeItems$: Observable<ListItem[]> = combineLatest([\n    this.dataTypeValue$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([dataTypeValue]) =>\n      [\n        {\n          content: this.translateService.instant('searchFields.text'),\n          id: TaskListSearchFieldDataType.TEXT,\n        },\n        {\n          content: this.translateService.instant('searchFields.boolean'),\n          id: TaskListSearchFieldDataType.BOOLEAN,\n        },\n        {\n          content: this.translateService.instant('searchFields.date'),\n          id: TaskListSearchFieldDataType.DATE,\n        },\n        {\n          content: this.translateService.instant('searchFields.datetime'),\n          id: TaskListSearchFieldDataType.DATETIME,\n        },\n        {\n          content: this.translateService.instant('searchFields.number'),\n          id: TaskListSearchFieldDataType.NUMBER,\n        },\n        {\n          content: this.translateService.instant('searchFields.time'),\n          id: TaskListSearchFieldDataType.TIME,\n        },\n      ].map(item => ({...item, selected: item.id === dataTypeValue?.id}))\n    )\n  );\n\n  public readonly fieldTypeItems$: Observable<ListItem[]> = combineLatest([\n    this._dataTypeValue$.pipe(distinctUntilChanged()),\n    this.fieldTypeValue$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([dataTypeValue, fieldTypeValue]) =>\n      [\n        {\n          content: this.translateService.instant('searchFieldsOverview.single'),\n          id: TaskListSearchFieldFieldType.SINGLE,\n        },\n        {\n          content: this.translateService.instant('searchFieldsOverview.range'),\n          id: TaskListSearchFieldFieldType.RANGE,\n        },\n        ...(dataTypeValue === TaskListSearchFieldDataType.TEXT\n          ? [\n              {\n                content: this.translateService.instant(\n                  'searchFieldsOverview.single-select-dropdown'\n                ),\n                id: TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n              },\n              {\n                content: this.translateService.instant(\n                  'searchFieldsOverview.multi-select-dropdown'\n                ),\n                id: TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n              },\n            ]\n          : []),\n      ].map(item => ({...item, selected: item.id === fieldTypeValue?.id}))\n    )\n  );\n\n  public readonly dataProviderItems$: Observable<ListItem[]> = this.translateService\n    .stream('key')\n    .pipe(\n      switchMap(() => this.dropdownDataProviderValue$),\n      map(dataProviderValue =>\n        [\n          {\n            content: this.translateService.instant(\n              'searchFieldsOverview.dropdownDatabaseDataProvider'\n            ),\n            id: TaskListSearchDropdownDataProvider.DATABASE,\n          },\n          {\n            content: this.translateService.instant(\n              'searchFieldsOverview.dropdownJsonFileDataProvider'\n            ),\n            id: TaskListSearchDropdownDataProvider.JSON,\n          },\n        ].map(item => ({...item, selected: item.id === dataProviderValue?.id}))\n      )\n    );\n\n  public readonly matchTypeItems$: Observable<ListItem[]> = this.translateService\n    .stream('key')\n    .pipe(\n      switchMap(() => this.matchTypeValue$),\n      map(matchTypeValue =>\n        [\n          {\n            content: this.translateService.instant('searchFieldsOverview.like'),\n            id: TaskListSearchFieldMatchType.LIKE,\n          },\n          {\n            content: this.translateService.instant('searchFieldsOverview.exact'),\n            id: TaskListSearchFieldMatchType.EXACT,\n          },\n        ].map(item => ({...item, selected: item.id === matchTypeValue?.id}))\n      )\n    );\n\n  public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n  constructor(\n    private readonly documentService: DocumentService,\n    private readonly iconService: IconService,\n    private readonly fb: FormBuilder,\n    private readonly translateService: TranslateService\n  ) {\n    this.iconService.registerAll([TrashCan16, InformationFilled16]);\n  }\n\n  public ngOnInit(): void {\n    this.form.setValidators([this.dropdownDataProviderValidator, this.dropdownValuesValidator]);\n  }\n\n  public addDropdownValue(prefillValue?: {key: string; value: string}): void {\n    if (!this.dropdownValuesArray) return;\n\n    this.dropdownValuesArray.push(\n      this.fb.group({\n        key: this.fb.control(prefillValue?.key ?? '', Validators.required),\n        value: this.fb.control(prefillValue?.value ?? '', Validators.required),\n      })\n    );\n  }\n\n  public removeDropdownValue(index: number): void {\n    if (!this.dropdownValuesArray) return;\n\n    this.dropdownValuesArray.removeAt(index);\n  }\n\n  public onCancel(): void {\n    this.closeEvent.emit(null);\n    this.resetForm();\n  }\n\n  public onSave(): void {\n    const groupValue = this.form.getRawValue();\n    this.closeEvent.emit({\n      ...(groupValue.title && {title: groupValue.title}),\n      ...(groupValue.key && {key: groupValue.key}),\n      ...(groupValue.path && {path: groupValue.path}),\n      ...(groupValue.dataType?.content && {dataType: groupValue.dataType.id}),\n      ...(groupValue.matchType?.content && {matchType: groupValue.matchType.id}),\n      ...(groupValue.fieldType?.content && {fieldType: groupValue.fieldType.id}),\n      ...(groupValue.dropdownDataProvider?.content && {\n        dropdownDataProvider: groupValue.dropdownDataProvider.id,\n      }),\n      ...(groupValue.dropdownValues && {\n        dropdownValues: groupValue.dropdownValues.reduce(\n          (acc, curr) => ({...acc, ...(!!curr?.key && {[curr.key]: curr.value})}),\n          {}\n        ),\n      }),\n    });\n\n    this.resetForm();\n  }\n\n  private setPrefilledForm(prefillData: TaskListSearchField | null): void {\n    if (!prefillData) return;\n\n    this.form.patchValue({\n      ...prefillData,\n      dataType: !prefillData.dataType\n        ? null\n        : {\n            content: prefillData.dataType,\n            id: prefillData.dataType,\n            selected: true,\n          },\n      matchType: !prefillData.matchType\n        ? null\n        : {\n            content: prefillData.matchType,\n            id: prefillData.matchType,\n            selected: true,\n          },\n      fieldType: !prefillData.fieldType\n        ? null\n        : {\n            content: prefillData.fieldType,\n            id: prefillData.fieldType,\n            selected: true,\n          },\n      dropdownDataProvider: !prefillData.dropdownDataProvider\n        ? null\n        : {\n            content: prefillData.dropdownDataProvider,\n            id: prefillData.dropdownDataProvider,\n            selected: true,\n          },\n      dropdownValues: [],\n    });\n\n    if (prefillData.dropdownDataProvider && prefillData.dropdownValues)\n      this.setPrefilledDropdownValues(prefillData.dropdownValues);\n    this.form.get('key')?.disable();\n  }\n\n  private setPrefilledDropdownValues(dropdownValue: TaskListSearchDropdownValue): void {\n    if (!this.dropdownValuesArray || !this.dropdownDataProviderValue) return;\n\n    Object.entries(dropdownValue).forEach(([key, value]) => {\n      this.addDropdownValue({key, value});\n    });\n  }\n\n  private matchTypeValidator(control: AbstractControl): null | {[key: string]: string} {\n    const controlValue: ListItem | undefined = control.value;\n    const dataTypeControlValue: ListItem | null | undefined =\n      control.parent?.get('dataType')?.value;\n\n    if (\n      dataTypeControlValue?.id === TaskListSearchFieldDataType.TEXT &&\n      (!controlValue || !controlValue.selected)\n    )\n      return {error: 'Match type not selected'};\n\n    return null;\n  }\n\n  private dropdownDataProviderValidator(group: typeof this.form): ValidationErrors | null {\n    const controlValue: ListItem | undefined | null = group.get('dropdownDataProvider')?.value;\n    const fieldTypeControlValue: ListItem | null | undefined = group.get('fieldType')?.value;\n\n    if (\n      [\n        TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n        TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n      ].includes(fieldTypeControlValue?.id) &&\n      !controlValue\n    )\n      return {error: 'Dropdown source provider is not specified'};\n\n    return null;\n  }\n\n  private dropdownValuesValidator(group: typeof this.form): ValidationErrors | null {\n    const controlValue: ({key: string; value: string} | null)[] | undefined =\n      group.get('dropdownValues')?.value;\n    const fieldTypeControlValue = group.get('fieldType')?.value?.id;\n    const dropdownProviderValue = group.get('dropdownDataProvider')?.value?.id;\n\n    if (\n      [\n        TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n        TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n      ].includes(fieldTypeControlValue) &&\n      (!controlValue || controlValue?.length === 0) &&\n      dropdownProviderValue === TaskListSearchDropdownDataProvider.DATABASE\n    )\n      return {error: 'Dropdown source provider is not specified or is empty'};\n\n    return null;\n  }\n\n  private resetForm(): void {\n    setTimeout(() => {\n      while (!!this.dropdownValuesArray?.length) {\n        this.dropdownValuesArray.removeAt(0);\n      }\n      this.form.reset();\n      this.form.enable();\n    }, CARBON_CONSTANTS.modalAnimationMs);\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<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n  <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n    <h3 cdsModalHeaderHeading>\n      {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n    </h3>\n  </cds-modal-header>\n\n  <form\n    cdsModalContent\n    [formGroup]=\"form\"\n    class=\"valtimo-task-management-search-fields-modal__content\"\n  >\n    <div class=\"valtimo-task-management-search-fields-modal__input\">\n      <v-input-label\n        [title]=\"'searchFieldsOverview.title' | translate\"\n        [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n      >\n      </v-input-label>\n\n      <input\n        data-testid=\"task-management-search-title\"\n        cdsText\n        type=\"text\"\n        formControlName=\"title\"\n        cdsLayer\n      />\n    </div>\n\n    <div class=\"valtimo-task-management-search-fields-modal__input\">\n      <v-input-label\n        [title]=\"'searchFieldsOverview.key' | translate\"\n        [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n      >\n      </v-input-label>\n\n      <input\n        cdsLayer\n        data-testid=\"task-management-search-key\"\n        cdsText\n        type=\"text\"\n        formControlName=\"key\"\n      />\n    </div>\n\n    <div class=\"valtimo-task-management-search-fields-modal__input\">\n      <v-input-label\n        [title]=\"'searchFieldsOverview.path' | translate\"\n        [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n      >\n      </v-input-label>\n\n      <valtimo-value-path-selector\n        formControlName=\"path\"\n        [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n      ></valtimo-value-path-selector>\n    </div>\n\n    <div class=\"valtimo-task-management-search-fields-modal__input\">\n      <v-input-label\n        [title]=\"'searchFieldsOverview.dataType' | translate\"\n        [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n      >\n      </v-input-label>\n\n      <cds-dropdown\n        cdsLayer\n        data-testid=\"task-management-search-dataType\"\n        formControlName=\"dataType\"\n      >\n        <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n      </cds-dropdown>\n    </div>\n\n    @if (dataTypeValue === TaskListSearchFieldDataType.TEXT) {\n      <div class=\"valtimo-task-management-search-fields-modal__input\">\n        <v-input-label\n          [title]=\"'searchFieldsOverview.matchType' | translate\"\n          [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n        >\n        </v-input-label>\n\n        <cds-dropdown\n          cdsLayer\n          data-testid=\"task-management-search-matchType\"\n          formControlName=\"matchType\"\n        >\n          <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n        </cds-dropdown>\n      </div>\n    }\n\n    <div class=\"valtimo-task-management-search-fields-modal__input\">\n      <v-input-label\n        [title]=\"'searchFieldsOverview.fieldType' | translate\"\n        [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n      >\n      </v-input-label>\n\n      <cds-dropdown\n        cdsLayer\n        data-testid=\"task-management-search-fieldType\"\n        formControlName=\"fieldType\"\n      >\n        <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n      </cds-dropdown>\n    </div>\n\n    @if (\n      dataTypeValue === TaskListSearchFieldDataType.TEXT &&\n      (fieldTypeValue === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n        fieldTypeValue === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n    ) {\n      <div class=\"valtimo-task-management-search-fields-modal__input\">\n        <v-input-label\n          [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n          [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n        >\n        </v-input-label>\n\n        <cds-dropdown\n          data-testid=\"task-management-search-dropdownDataProvider\"\n          formControlName=\"dropdownDataProvider\"\n          cdsLayer\n        >\n          <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n        </cds-dropdown>\n      </div>\n\n      @if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.DATABASE) {\n        <div\n          class=\"valtimo-task-management-search-fields-modal__list\"\n          formArrayName=\"dropdownValues\"\n        >\n          <v-input-label\n            [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n            [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n            [noMargin]=\"true\"\n          >\n          </v-input-label>\n\n          @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n            <form\n              [formGroup]=\"dropdownValue\"\n              class=\"valtimo-task-management-search-fields-modal__dropdown-values\"\n            >\n              <cds-text-label>\n                {{ 'interface.value' | translate }}\n\n                <input\n                  data-testid=\"task-management-search-dropdownKey\"\n                  cdsText\n                  type=\"text\"\n                  formControlName=\"key\"\n                  cdsLayer\n                />\n              </cds-text-label>\n\n              <cds-text-label>\n                {{ 'interface.display' | translate }}\n\n                <input\n                  data-testid=\"task-management-search-dropdownValue\"\n                  cdsText\n                  type=\"text\"\n                  formControlName=\"value\"\n                  cdsLayer\n                />\n              </cds-text-label>\n\n              <button\n                cdsButton=\"danger\"\n                data-testid=\"task-management-search-deleteEnum\"\n                [disabled]=\"$count === 1\"\n                [iconOnly]=\"true\"\n                (click)=\"removeDropdownValue($index)\"\n              >\n                <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n              </button>\n            </form>\n          }\n\n          <button\n            data-testid=\"task-management-search-addDropdownValue\"\n            cdsButton=\"primary\"\n            (click)=\"addDropdownValue()\"\n          >\n            {{ 'interface.addRow' | translate }}\n\n            <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n          </button>\n        </div>\n      } @else if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.JSON) {\n        <valtimo-carbon-list\n          [header]=\"false\"\n          [hideToolbar]=\"true\"\n          [fields]=\"DROPDOWN_FIELDS\"\n          [items]=\"dropdownReadonlyItems$ | async\"\n        ></valtimo-carbon-list>\n      }\n    }\n  </form>\n\n  <cds-modal-footer>\n    <button data-testid=\"task-management-search-cancel\" cdsButton=\"secondary\" (click)=\"onCancel()\">\n      {{ 'interface.cancel' | translate }}\n    </button>\n\n    <button\n      data-testid=\"task-management-search-save\"\n      cdsButton=\"primary\"\n      [disabled]=\"form.invalid\"\n      (click)=\"onSave()\"\n    >\n      {{ (!prefillData ? 'interface.create' : 'interface.save') | 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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n  ActionItem,\n  CarbonListModule,\n  ColumnConfig,\n  ConfirmationModalModule,\n  ViewType,\n} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n  TaskListSearchDropdownValue,\n  TaskListSearchField,\n  TaskListSearchFieldFieldType,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  filter,\n  map,\n  Observable,\n  of,\n  switchMap,\n  take,\n  tap,\n} from 'rxjs';\nimport {TaskManagementSearchFieldsService} from '../../services';\nimport {TaskManagementSearchFieldsModalComponent} from '../task-management-search-fields-modal/task-management-search-fields-modal.component';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\n\n@Component({\n  selector: 'valtimo-task-management-search-fields',\n  templateUrl: 'task-management-search-fields.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    CommonModule,\n    TranslateModule,\n    CarbonListModule,\n    ButtonModule,\n    IconModule,\n    TaskManagementSearchFieldsModalComponent,\n    ConfirmationModalModule,\n  ],\n})\nexport class TaskManagementSearchFieldsComponent {\n  public readonly caseDefinitionKey$: Observable<string> = getCaseManagementRouteParams(\n    this.route\n  ).pipe(\n    map((params: CaseManagementParams | undefined) => (!params ? '' : params.caseDefinitionKey)),\n    tap((caseDefinitionKey: string) =>\n      this.searchFieldsService.setCaseDefinitionKey(caseDefinitionKey)\n    )\n  );\n\n  private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n  public readonly searchFields$: Observable<TaskListSearchField[]> = combineLatest([\n    this.caseDefinitionKey$,\n    this._refresh$,\n    this.trasnlateService.stream('key'),\n  ]).pipe(\n    switchMap(() => this.searchFieldsService.getTaskListSearchFields()),\n    map((searchFields: TaskListSearchField[]) => this.mapTranslations(searchFields))\n  );\n\n  public readonly fields$: Observable<ColumnConfig[]> = this.trasnlateService.stream('key').pipe(\n    map(() => [\n      {\n        key: 'title',\n        label: 'searchFieldsOverview.title',\n        viewType: ViewType.TEXT,\n      },\n      {\n        key: 'key',\n        label: 'searchFieldsOverview.key',\n        viewType: ViewType.TEXT,\n      },\n      {\n        key: 'path',\n        label: 'searchFieldsOverview.path',\n        viewType: ViewType.TEXT,\n      },\n      {\n        key: 'dataTypeTranslation',\n        label: 'searchFieldsOverview.dataType',\n        viewType: ViewType.TEXT,\n      },\n      {\n        key: 'fieldTypeTranslation',\n        label: 'searchFieldsOverview.fieldType',\n        viewType: ViewType.TEXT,\n      },\n    ])\n  );\n\n  public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n  public readonly fieldModalOpen$ = new BehaviorSubject<boolean>(false);\n  public readonly itemToDelete$ = new BehaviorSubject<TaskListSearchField | null>(null);\n  public readonly prefillData$ = new BehaviorSubject<TaskListSearchField | null>(null);\n\n  public readonly ACTION_ITEMS: ActionItem[] = [\n    {\n      label: 'interface.edit',\n      callback: this.editField.bind(this),\n      type: 'normal',\n    },\n    {\n      label: 'interface.delete',\n      callback: this.deleteField.bind(this),\n      type: 'danger',\n    },\n  ];\n\n  constructor(\n    private readonly documentService: DocumentService,\n    private readonly route: ActivatedRoute,\n    private readonly searchFieldsService: TaskManagementSearchFieldsService,\n    private readonly trasnlateService: TranslateService\n  ) {}\n\n  public editField(item: TaskListSearchField): void {\n    if (!!item.dropdownDataProvider) {\n      this.documentService\n        .getDropdownData(item.dropdownDataProvider, item.ownerId, item.key)\n        .pipe(take(1))\n        .subscribe(dropdownValues => {\n          item.dropdownValues = dropdownValues as TaskListSearchDropdownValue;\n          this.prefillData$.next(item);\n          this.fieldModalOpen$.next(true);\n        });\n\n      return;\n    }\n    this.prefillData$.next(item);\n    this.fieldModalOpen$.next(true);\n  }\n\n  public onItemsReordered(event): void {\n    this.searchFieldsService\n      .orderTaskListSearchFields(event)\n      .pipe(take(1))\n      .subscribe(() => this._refresh$.next(null));\n  }\n\n  public onAddButtonClick(): void {\n    this.fieldModalOpen$.next(true);\n  }\n\n  public onCloseEvent(\n    searchField: TaskListSearchField | null,\n    prefillData: TaskListSearchField | null\n  ): void {\n    this.fieldModalOpen$.next(false);\n    this.prefillData$.next(null);\n    if (!searchField) return;\n\n    const hasDropdownValues: boolean =\n      searchField.fieldType === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n      searchField.fieldType === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN;\n\n    (!prefillData\n      ? this.searchFieldsService.createTaskListSearchField(searchField)\n      : this.searchFieldsService.updateTaskListSearchField(searchField)\n    )\n      .pipe(\n        take(1),\n        switchMap((field: TaskListSearchField) => {\n          return hasDropdownValues\n            ? this.documentService.postDropdownData(\n                field.dropdownDataProvider ?? '',\n                field.ownerId,\n                field.key,\n                searchField.dropdownValues ?? {}\n              )\n            : of(field);\n        })\n      )\n      .subscribe(() => this._refresh$.next(null));\n  }\n\n  public onDeleteFieldConfirm(item: TaskListSearchField | null): void {\n    if (!item) return;\n\n    combineLatest([\n      this.searchFieldsService.deleteTaskListSearchField(item.key),\n      item.dropdownDataProvider\n        ? this.documentService.deleteDropdownData(item.dropdownDataProvider, item.ownerId, item.key)\n        : of(null),\n    ])\n      .pipe(take(1))\n      .subscribe(() => this._refresh$.next(null));\n  }\n\n  private deleteField(item: TaskListSearchField): void {\n    this.itemToDelete$.next(item);\n    this.deleteModalOpen$.next(true);\n  }\n\n  private mapTranslations(\n    searchFields: TaskListSearchField[]\n  ): (TaskListSearchField & {dataTypeTranslation: string; fieldTypeTranslation: string})[] {\n    return searchFields.map((searchField: TaskListSearchField) => ({\n      ...searchField,\n      dataTypeTranslation: this.trasnlateService.instant(\n        `searchFields.${searchField.dataType.toLowerCase()}`\n      ),\n      fieldTypeTranslation: this.trasnlateService.instant(\n        `searchFieldsOverview.${this.fieldTypeTranslation(searchField.fieldType)}`\n      ),\n    }));\n  }\n\n  private fieldTypeTranslation(fieldType: TaskListSearchFieldFieldType): string {\n    switch (fieldType) {\n      case TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN:\n        return 'single-select-dropdown';\n      case TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN:\n        return 'multi-select-dropdown';\n      default:\n        return fieldType.toLowerCase();\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    fieldModalOpen: fieldModalOpen$ | async,\n    fields: fields$ | async,\n    itemToDelete: itemToDelete$ | async,\n    prefillData: prefillData$ | async,\n    searchFields: searchFields$ | async,\n  } as obs\"\n>\n  <valtimo-carbon-list\n    [actionItems]=\"ACTION_ITEMS\"\n    [fields]=\"obs.fields\"\n    [items]=\"obs.searchFields\"\n    [dragAndDrop]=\"true\"\n    (itemsReordered)=\"onItemsReordered($event)\"\n    (rowClicked)=\"editField($event)\"\n  >\n    <ng-container carbonToolbarContent>\n      <ng-container [ngTemplateOutlet]=\"addButton\"></ng-container>\n    </ng-container>\n\n    <valtimo-no-results\n      [action]=\"addButton\"\n      [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n      [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n    ></valtimo-no-results>\n  </valtimo-carbon-list>\n\n  <valtimo-task-management-search-fields-modal\n    [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n    [open]=\"obs.fieldModalOpen\"\n    [prefillData]=\"obs.prefillData\"\n    (closeEvent)=\"onCloseEvent($event, obs.prefillData)\"\n  ></valtimo-task-management-search-fields-modal>\n\n  <valtimo-confirmation-modal\n    confirmButtonTextTranslationKey=\"interface.delete\"\n    confirmButtonType=\"danger\"\n    contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n    [outputOnConfirm]=\"obs.itemToDelete\"\n    [showModalSubject$]=\"deleteModalOpen$\"\n    titleTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n    (confirmEvent)=\"onDeleteFieldConfirm($event)\"\n  ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n  <button cdsButton=\"primary\" (click)=\"onAddButtonClick()\">\n    <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n    {{ 'searchFieldsOverview.add' | translate }}\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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TabsModule} from 'carbon-components-angular';\nimport {TaskManagementTab} from '../../models';\nimport {TaskManagementService} from '../../services';\nimport {TaskManagementColumnsComponent} from '../task-management-columns/task-management-columns.component';\nimport {TaskManagementSearchFieldsComponent} from '../task-management-search-fields/task-management-search-fields.component';\n\n@Component({\n  templateUrl: './task-management-detail.component.html',\n  styleUrl: './task-management-detail.component.scss',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    CarbonListModule,\n    TranslateModule,\n    TabsModule,\n    TaskManagementColumnsComponent,\n    TaskManagementSearchFieldsComponent,\n  ],\n  providers: [TaskManagementService],\n})\nexport class TaskManagementDetailComponent {\n  public readonly activeTab$ = this.taskManagementService.activeTab$;\n\n  public readonly TaskManagementTab = TaskManagementTab;\n\n  constructor(private readonly taskManagementService: TaskManagementService) {}\n\n  public setActiveTab(tab: TaskManagementTab): void {\n    this.taskManagementService.setActiveTab(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\n@if (activeTab$ | async; as activeTab) {\n  <cds-tabs type=\"contained\">\n    <cds-tab\n      [active]=\"activeTab === TaskManagementTab.COLUMNS\"\n      [heading]=\"'taskManagement.columns' | translate\"\n      (selected)=\"setActiveTab(TaskManagementTab.COLUMNS)\"\n    >\n      <valtimo-task-management-columns *ngIf=\"activeTab === TaskManagementTab.COLUMNS\">\n      </valtimo-task-management-columns>\n    </cds-tab>\n\n    <cds-tab\n      [active]=\"activeTab === TaskManagementTab.SEARCH_FIELDS\"\n      [heading]=\"'taskManagement.searchFields' | translate\"\n      (selected)=\"setActiveTab(TaskManagementTab.SEARCH_FIELDS)\"\n    >\n      <valtimo-task-management-search-fields *ngIf=\"activeTab === TaskManagementTab.SEARCH_FIELDS\">\n      </valtimo-task-management-search-fields>\n    </cds-tab>\n  </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './task-management-column-modal/task-management-column-modal.component';\nexport * from './task-management-columns/task-management-columns.component';\nexport * from './task-management-detail/task-management-detail.component';\nexport * from './task-management-search-fields/task-management-search-fields.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of task\n */\n\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TaskManagementApiService","i4","i5","i3","i6","distinctUntilChanged","i2","i3.TaskManagementSearchFieldsService","i7","i1.TaskManagementService"],"mappings":"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"}