{"version":3,"file":"valtimo-object-management.mjs","sources":["../../../../projects/valtimo/object-management/src/lib/models/object-management.model.ts","../../../../projects/valtimo/object-management/src/lib/services/object-management.service.ts","../../../../projects/valtimo/object-management/src/lib/services/tab.enum.ts","../../../../projects/valtimo/object-management/src/lib/services/object-management-state.service.ts","../../../../projects/valtimo/object-management/src/lib/services/tab.service.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-modal/object-management-modal.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-modal/object-management-modal.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/object-management-detail-container.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-detail-container/object-management-detail-container.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-upload-modal/object-management-upload-modal.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-upload-modal/object-management-upload-modal.component.html","../../../../projects/valtimo/object-management/src/lib/components/object-management-list/object-management-list.component.ts","../../../../projects/valtimo/object-management/src/lib/components/object-management-list/object-management-list.component.html","../../../../projects/valtimo/object-management/src/lib/object-management-routing.module.ts","../../../../projects/valtimo/object-management/src/lib/object-management.module.ts","../../../../projects/valtimo/object-management/src/public-api.ts","../../../../projects/valtimo/object-management/src/valtimo-object-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\ninterface Objecttype {\n  id: string;\n  title: string;\n  objecttypenApiPluginConfigurationId: string;\n  objecttypeId: string;\n  objecttypeVersion: number;\n  objectenApiPluginConfigurationId: string;\n  showInDataMenu: boolean;\n  formDefinitionView?: string;\n  formDefinitionEdit?: string;\n  suppressOutbox?: boolean;\n}\n\nexport interface SearchListColumn {\n  ownerId?: string;\n  title: string;\n  key: string;\n  path: string;\n  displayType: DisplayType;\n  sortable: boolean;\n  defaultSort: string;\n}\n\nexport interface SearchColumn {\n  propertyName: string;\n  translationKey: string;\n  sortable?: boolean;\n  viewType?: string;\n  default?: boolean | string;\n  enum?: Array<string> | {[key: string]: string};\n  title?: string;\n  format?: string;\n  key?: string;\n}\n\nexport interface SearchListColumnView {\n  title: string;\n  key: string;\n  path: string;\n  displayType: string;\n  displayTypeParameters: string;\n  sortable: boolean;\n  defaultSort: string;\n}\n\nexport interface DisplayType {\n  type: string;\n  displayTypeParameters: DisplayTypeParameters;\n}\n\nexport interface DisplayTypeParameters {\n  enum?: {\n    [key: string]: string;\n  };\n  dateFormat?: string;\n}\n\ntype ObjecttypeKeys = keyof Objecttype;\n\nexport {Objecttype, ObjecttypeKeys};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService, SearchField} from '@valtimo/shared';\nimport {Objecttype, SearchListColumn} from '../models/object-management.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ObjectManagementService {\n  private valtimoEndpointUri: string;\n\n  constructor(\n    private http: HttpClient,\n    configService: ConfigService\n  ) {\n    this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n  }\n\n  public getAllObjects(): Observable<Objecttype[]> {\n    return this.http.get<Objecttype[]>(\n      `${this.valtimoEndpointUri}v1/object/management/configuration`\n    );\n  }\n\n  public getObjectById(id: string): Observable<Objecttype> {\n    return this.http.get<Objecttype>(\n      `${this.valtimoEndpointUri}v1/object/management/configuration/${id}`\n    );\n  }\n\n  public createObject(payload: Objecttype): Observable<Objecttype> {\n    return this.http.post<Objecttype>(\n      `${this.valtimoEndpointUri}v1/object/management/configuration`,\n      payload\n    );\n  }\n\n  public editObject(payload: Objecttype): Observable<Objecttype> {\n    return this.http.put<Objecttype>(\n      `${this.valtimoEndpointUri}v1/object/management/configuration`,\n      payload\n    );\n  }\n\n  getSearchList(ownerId: string): Observable<Array<SearchListColumn>> {\n    return this.http.get<Array<SearchListColumn>>(\n      `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}`\n    );\n  }\n\n  postSearchList(ownerId: string, request: SearchListColumn): Observable<SearchListColumn> {\n    return this.http.post<SearchListColumn>(\n      `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}`,\n      {...request, ownerId}\n    );\n  }\n\n  putSearchList(\n    ownerId: string,\n    columnKey: string,\n    request: SearchListColumn\n  ): Observable<Array<SearchListColumn>> {\n    return this.http.put<Array<SearchListColumn>>(\n      `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/${columnKey}`,\n      {...request, ownerId}\n    );\n  }\n\n  putSearchListColumns(\n    ownerId: string,\n    request: Array<SearchListColumn>\n  ): Observable<Array<SearchListColumn>> {\n    return this.http.put<Array<SearchListColumn>>(\n      `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/search-list-columns`,\n      [...request]\n    );\n  }\n\n  deleteSearchList(ownerId: string, columnKey: string): Observable<SearchListColumn> {\n    return this.http.delete<SearchListColumn>(\n      `${this.valtimoEndpointUri}v1/search/list-column/${ownerId}/${columnKey}`\n    );\n  }\n\n  getSearchField(ownerId: string): Observable<Array<SearchField>> {\n    return this.http.get<Array<SearchField>>(\n      `${this.valtimoEndpointUri}v1/search/field/Legacy/${ownerId}`\n    );\n  }\n\n  postSearchField(ownerId: string, request: SearchField): Observable<SearchField> {\n    return this.http.post<SearchField>(`${this.valtimoEndpointUri}v1/search/field/${ownerId}`, {\n      ...request,\n      ownerId,\n    });\n  }\n\n  putSearchField(\n    ownerId: string,\n    key: string,\n    request: SearchField\n  ): Observable<Array<SearchField>> {\n    return this.http.put<Array<SearchField>>(\n      `${this.valtimoEndpointUri}v1/search/field/${ownerId}/${key}`,\n      {...request, ownerId}\n    );\n  }\n\n  putSearchFields(ownerId: string, request: Array<SearchField>): Observable<Array<SearchField>> {\n    return this.http.put<Array<SearchField>>(\n      `${this.valtimoEndpointUri}v1/search/field/${ownerId}/fields`,\n      [...request]\n    );\n  }\n\n  deleteSearchField(ownerId: string, key: string): Observable<SearchField> {\n    return this.http.delete<SearchField>(\n      `${this.valtimoEndpointUri}v1/search/field/Legacy/${ownerId}/${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\nexport enum TabEnum {\n  GENERAL = 'general',\n  LIST = 'list',\n  SEARCH = 'search',\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ObjectManagementStateService {\n  private readonly _showModal$ = new Subject();\n  private readonly _hideModal$ = new Subject();\n  private readonly _refresh$ = new BehaviorSubject<null>(null);\n  private readonly _modalType$ = new BehaviorSubject<any>('add');\n\n  constructor() {}\n\n  get showModal$(): Observable<any> {\n    return this._showModal$.asObservable();\n  }\n\n  get hideModal$(): Observable<any> {\n    return this._hideModal$.asObservable();\n  }\n\n  get refresh$(): Observable<any> {\n    return this._refresh$.asObservable();\n  }\n\n  get modalType$(): Observable<any> {\n    return this._modalType$.asObservable();\n  }\n\n  showModal(): void {\n    this._showModal$.next(null);\n  }\n\n  hideModal(): void {\n    this._hideModal$.next(null);\n  }\n\n  refresh(): void {\n    this._refresh$.next(null);\n  }\n\n  setModalType(type: any): void {\n    this._modalType$.next(type);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TabEnum} from './tab.enum';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TabService {\n  private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.GENERAL);\n\n  public get currentTab$(): Observable<TabEnum> {\n    return this._currentTab$.asObservable();\n  }\n\n  public set currentTab(tab: TabEnum) {\n    this._currentTab$.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 {AfterViewInit, Component, Input, OnDestroy, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {PluginConfiguration, PluginManagementService} from '@valtimo/plugin';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {Objecttype} from '../../models/object-management.model';\nimport {FormService} from '@valtimo/form';\nimport {VModalComponent, ModalService} from '@valtimo/components';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-modal',\n  templateUrl: './object-management-modal.component.html',\n  styleUrls: ['./object-management-modal.component.scss'],\n})\nexport class ObjectManagementModalComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('objectManagementModal') objectManagementModal: VModalComponent;\n  @Input() prefillObject$!: Observable<Objecttype>;\n\n  readonly disabled$!: Observable<boolean>;\n  readonly valid$ = new BehaviorSubject<boolean>(false);\n  readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n  readonly modalType$: Observable<any> = this.objectManagementState.modalType$;\n  readonly formData$ = new BehaviorSubject<any>(null);\n\n  showSubscription!: Subscription;\n  hideSubscription!: Subscription;\n\n  readonly selectedObjecttype$ = new BehaviorSubject<string | null>(null);\n\n  readonly formDefinitions$: Observable<Array<{id: string; text: string}>> = this.formService\n    .getAllUnlinkedFormDefinitions()\n    .pipe(\n      map(results =>\n        results?.map(configuration => ({\n          id: configuration.name,\n          text: configuration.name,\n        }))\n      )\n    );\n\n  readonly configurationInstances$: Observable<Array<PluginConfiguration>> =\n    this.pluginManagementService\n      .getAllPluginConfigurations()\n      .pipe(map(configurations => configurations));\n\n  readonly objectsApiConfigurations$: Observable<any> = this.configurationInstances$.pipe(\n    map(configurations => {\n      const filteredObjectsApiConfigurations = configurations.filter(\n        configuration => configuration?.pluginDefinition?.key === 'objectenapi'\n      );\n      return filteredObjectsApiConfigurations.map(configuration => ({\n        id: configuration.id,\n        text: configuration.title,\n      }));\n    })\n  );\n\n  readonly objecttypesApiConfigurations$: Observable<any> = this.configurationInstances$.pipe(\n    map(configurations => {\n      const filteredObjecttypesApiConfigurations = configurations.filter(\n        configuration => configuration?.pluginDefinition?.key === 'objecttypenapi'\n      );\n      return filteredObjecttypesApiConfigurations.map(configuration => ({\n        id: configuration.id,\n        text: configuration.title,\n        properties: configuration.properties,\n      }));\n    })\n  );\n\n  constructor(\n    private readonly objectManagementState: ObjectManagementStateService,\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly formService: FormService,\n    private readonly pluginManagementService: PluginManagementService,\n    private readonly modalService: ModalService\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.openShowSubscription();\n    this.openHideSubscription();\n  }\n\n  ngOnDestroy(): void {\n    this.showSubscription?.unsubscribe();\n    this.hideSubscription?.unsubscribe();\n  }\n\n  hide(): void {\n    this.formData$.next(null);\n    this.valid$.next(false);\n    this.modalService.closeModal();\n  }\n\n  cancel(): void {\n    this.hide();\n  }\n\n  save(): void {\n    combineLatest([this.valid$, this.formData$, this.modalType$])\n      .pipe(take(1))\n      .subscribe(([valid, formData, modalType]) => {\n        if (valid) {\n          if (modalType === 'add') {\n            this.objectManagementService.createObject({...formData}).subscribe(() => {\n              this.objectManagementState.refresh();\n              this.objectManagementState.hideModal();\n            });\n          } else if (modalType === 'edit') {\n            this.objectManagementService.editObject({...formData}).subscribe(() => {\n              this.objectManagementState.refresh();\n              this.objectManagementState.hideModal();\n            });\n          }\n        }\n      });\n  }\n\n  private openShowSubscription(): void {\n    this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {\n      this.show();\n    });\n  }\n\n  private openHideSubscription(): void {\n    this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {\n      this.hide();\n    });\n  }\n\n  private show(): void {\n    this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {\n      if (modalType === 'edit' || modalType === 'add') {\n        this.modalService.openModal(this.objectManagementModal);\n      }\n    });\n  }\n\n  formValueChange(data: any): void {\n    if (data.showInDataMenu === '') {\n      data.showInDataMenu = false;\n    }\n    if (data.suppressOutbox === '') {\n      data.suppressOutbox = false;\n    }\n    this.formData$.next(data);\n    this.setValid(data);\n  }\n\n  private setValid(data: any): void {\n    this.valid$.next(\n      !!(\n        data.title &&\n        data.objectenApiPluginConfigurationId &&\n        data.objecttypenApiPluginConfigurationId &&\n        data.objecttypeId &&\n        data.objecttypeVersion\n      )\n    );\n  }\n\n  selectObjectType(objecttype): void {\n    this.selectedObjecttype$.next(objecttype);\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<v-modal\n  #objectManagementModal\n  *ngIf=\"{\n    disabled: disabled$ | async,\n    valid: valid$ | async,\n    modalType: modalType$ | async,\n    prefillObject: prefillObject$ | async,\n  } as obs\"\n>\n  <div role=\"header\">\n    <div class=\"add-title\">\n      <h4>\n        {{\n          (obs.modalType === 'add'\n            ? 'objectManagement.createObjecttype'\n            : 'objectManagement.editObjecttype'\n          ) | translate\n        }}\n      </h4>\n    </div>\n  </div>\n  <div role=\"content\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        form;\n        context: {prefillObject: obs.prefillObject, modalType: obs.modalType}\n      \"\n    ></ng-container>\n  </div>\n  <div role=\"footer\">\n    <div class=\"buttons\">\n      <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n        {{ 'objectManagement.cancel' | translate }}\n      </button>\n\n      <button cdsButton=\"primary\" (click)=\"save()\" [disabled]=\"obs.disabled || !obs.valid\">\n        {{\n          (obs.modalType === 'add' ? 'objectManagement.add' : 'objectManagement.edit') | translate\n        }}\n      </button>\n    </div>\n  </div>\n</v-modal>\n\n<ng-template #form let-prefillObject=\"prefillObject\" let-modalType=\"modalType\">\n  <ng-container *ngIf=\"showForm$ | async\">\n    <v-form (valueChange)=\"formValueChange($event)\">\n      <v-input\n        *ngIf=\"modalType === 'edit'\"\n        hidden\n        [disabled]=\"true\"\n        [defaultValue]=\"prefillObject?.id\"\n        name=\"id\"\n      ></v-input>\n\n      <v-input\n        [margin]=\"true\"\n        [required]=\"true\"\n        [title]=\"'objectManagement.labels.title' | translate\"\n        [tooltip]=\"'objectManagement.tooltips.title' | translate\"\n        [widthPx]=\"350\"\n        [defaultValue]=\"prefillObject?.title\"\n        name=\"title\"\n      ></v-input>\n\n      <ng-container\n        *ngIf=\"{\n          connectionInstances: configurationInstances$ | async,\n          objectsApiConfigurations: objectsApiConfigurations$ | async,\n          objecttypesApiConfigurations: objecttypesApiConfigurations$ | async,\n        } as objectObs\"\n      >\n        <v-select\n          [items]=\"objectObs.objectsApiConfigurations\"\n          [margin]=\"true\"\n          [widthInPx]=\"350\"\n          name=\"objectenApiPluginConfigurationId\"\n          [title]=\"'objectManagement.labels.objects' | translate\"\n          [defaultSelectionId]=\"prefillObject?.objectenApiPluginConfigurationId\"\n          [required]=\"true\"\n        ></v-select>\n\n        <v-select\n          [items]=\"objectObs.objecttypesApiConfigurations\"\n          [margin]=\"true\"\n          [widthInPx]=\"350\"\n          name=\"objecttypenApiPluginConfigurationId\"\n          [title]=\"'objectManagement.labels.objecttypes' | translate\"\n          [defaultSelectionId]=\"prefillObject?.objecttypenApiPluginConfigurationId\"\n          [required]=\"true\"\n          (selectedChange)=\"selectObjectType($event)\"\n        ></v-select>\n      </ng-container>\n\n      <v-input\n        [margin]=\"true\"\n        [required]=\"true\"\n        [title]=\"'objectManagement.labels.objecttypeId' | translate\"\n        [tooltip]=\"'objectManagement.tooltips.objecttypeId' | translate\"\n        [widthPx]=\"350\"\n        [defaultValue]=\"prefillObject?.objecttypeId\"\n        name=\"objecttypeId\"\n      ></v-input>\n\n      <v-input\n        [margin]=\"true\"\n        [required]=\"true\"\n        [title]=\"'objectManagement.labels.objecttypeVersion' | translate\"\n        [tooltip]=\"'objectManagement.tooltips.objecttypeVersion' | translate\"\n        [widthPx]=\"350\"\n        [defaultValue]=\"prefillObject?.objecttypeVersion\"\n        [min]=\"1\"\n        type=\"number\"\n        name=\"objecttypeVersion\"\n      ></v-input>\n\n      <ng-container *ngIf=\"{formDefinitions: formDefinitions$ | async} as formObs\">\n        <v-select\n          [items]=\"formObs.formDefinitions\"\n          [margin]=\"true\"\n          [widthInPx]=\"350\"\n          name=\"formDefinitionView\"\n          [title]=\"'objectManagement.labels.formDefinitionView' | translate\"\n          [tooltip]=\"'objectManagement.tooltips.formDefinitionView' | translate\"\n          [defaultSelectionId]=\"prefillObject?.formDefinitionView\"\n        ></v-select>\n\n        <v-select\n          [items]=\"formObs.formDefinitions\"\n          [margin]=\"true\"\n          [widthInPx]=\"350\"\n          name=\"formDefinitionEdit\"\n          [title]=\"'objectManagement.labels.formDefinitionEdit' | translate\"\n          [tooltip]=\"'objectManagement.tooltips.formDefinitionEdit' | translate\"\n          [defaultSelectionId]=\"prefillObject?.formDefinitionEdit\"\n        ></v-select>\n      </ng-container>\n\n      <v-input\n        [margin]=\"true\"\n        type=\"checkbox\"\n        [title]=\"'objectManagement.labels.showInDataMenu' | translate\"\n        [tooltip]=\"'objectManagement.tooltips.showInDataMenu' | translate\"\n        name=\"showInDataMenu\"\n        [defaultValue]=\"prefillObject?.showInDataMenu\"\n      ></v-input>\n\n      <v-input\n        [margin]=\"true\"\n        type=\"checkbox\"\n        [title]=\"'objectManagement.labels.suppressOutbox' | translate\"\n        [tooltip]=\"'objectManagement.tooltips.suppressOutbox' | translate\"\n        name=\"suppressOutbox\"\n        [defaultValue]=\"prefillObject?.suppressOutbox\"\n      ></v-input>\n    </v-form>\n  </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, Input} from '@angular/core';\nimport {Objecttype} from '../../../../models/object-management.model';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\nimport {ObjectManagementStateService} from '../../../../services/object-management-state.service';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-detail',\n  templateUrl: './object-management-detail.component.html',\n  styleUrls: ['./object-management-detail.component.scss'],\n})\nexport class ObjectManagementDetailComponent {\n  @Input() object$: Observable<Objecttype>;\n  readonly loading$ = new BehaviorSubject<boolean>(false);\n\n  constructor(\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly objectManagementState: ObjectManagementStateService\n  ) {}\n\n  downloadDefinition(object): void {\n    this.loading$.next(true);\n    const dataString =\n      'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(object, null, 2));\n    const downloadAnchorElement = document.getElementById('downloadAnchorElement');\n    downloadAnchorElement.setAttribute('href', dataString);\n    downloadAnchorElement.setAttribute('download', `${object.id}.json`);\n    downloadAnchorElement.click();\n    this.loading$.next(false);\n  }\n\n  showEditModal(): void {\n    this.loading$.next(true);\n    this.objectManagementState.setModalType('edit');\n    this.objectManagementState.showModal();\n    this.loading$.next(false);\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n<div\n  id=\"object-datail-content\"\n  class=\"pt-0\"\n  *ngIf=\"{\n    object: object$ | async,\n    loading: loading$ | async,\n  } as obs\"\n>\n  <ng-container\n    *ngTemplateOutlet=\"buttons; context: {object: obs.object, loading: obs.loading}\"\n  ></ng-container>\n  <div class=\"clearfix\"></div>\n  <ng-container\n    *ngTemplateOutlet=\"widget; context: {object: obs.object, loading: obs.loading}\"\n  ></ng-container>\n</div>\n\n<ng-template #buttons let-object=\"object\" let-loading=\"loading\">\n  <div class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n    <button\n      (click)=\"downloadDefinition(object)\"\n      cdsButton=\"secondary\"\n      size=\"md\"\n      [disabled]=\"loading\"\n      class=\"ml-3\"\n    >\n      {{ 'objectManagement.download' | translate }}\n      <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n    </button>\n    <a id=\"downloadAnchorElement\" class=\"d-none\"></a>\n    <button\n      (click)=\"showEditModal()\"\n      cdsButton=\"primary\"\n      size=\"md\"\n      [disabled]=\"loading\"\n      class=\"ml-3\"\n    >\n      {{ 'objectManagement.editObjecttype' | translate }}\n      <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n    </button>\n  </div>\n</ng-template>\n\n<ng-template #widget let-object=\"object\">\n  <valtimo-widget>\n    <div class=\"row bg-white mt-5 mb-2 pl-2 pr-2\">\n      <div class=\"col-5 bg-red\">\n        <textarea class=\"w-100 object-schema\" disabled rows=\"25\">{{ object | json }}</textarea>\n      </div>\n    </div>\n  </valtimo-widget>\n</ng-template>\n\n<valtimo-object-management-modal [prefillObject$]=\"object$\"></valtimo-object-management-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, TemplateRef, ViewChild} from '@angular/core';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  delay,\n  filter,\n  map,\n  Observable,\n  of,\n  startWith,\n  Subject,\n  switchMap,\n  tap,\n} from 'rxjs';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {ConfigService, DefinitionColumn} from '@valtimo/shared';\nimport {ListField, MultiInputValues} from '@valtimo/components';\nimport {catchError, take} from 'rxjs/operators';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListColumnModal} from '@valtimo/case-management';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\nimport {\n  DisplayTypeParameters,\n  SearchListColumn,\n  SearchListColumnView,\n} from '../../../../models/object-management.model';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-list-columns',\n  templateUrl: './object-management-list-columns.component.html',\n  styleUrls: ['./object-management-list-columns.component.scss'],\n})\nexport class ObjectManagementListColumnsComponent {\n  @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n  readonly downloadName$ = new BehaviorSubject<string>('');\n  readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n  readonly loading$ = new BehaviorSubject<boolean>(true);\n  readonly currentModalType$ = new BehaviorSubject<ListColumnModal>('create');\n  readonly showModal$ = new BehaviorSubject<boolean>(false);\n  readonly modalShowing$ = this.showModal$.pipe(delay(250));\n  readonly disableInput$ = new BehaviorSubject<boolean>(false);\n  readonly showDeleteModal$ = new Subject<boolean>();\n  readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n  readonly defaultEnumValues$ = new BehaviorSubject<MultiInputValues>(undefined);\n\n  readonly INVALID_KEY = 'invalid';\n  readonly formGroup = new FormGroup({\n    title: new FormControl(''),\n    key: new FormControl('', Validators.required),\n    path: new FormControl('', Validators.required),\n    dateFormat: new FormControl(''),\n    displayType: new FormControl({\n      key: this.INVALID_KEY,\n    }),\n    sortable: new FormControl(false),\n    defaultSort: new FormControl({\n      key: this.INVALID_KEY,\n    }),\n    enum: new FormControl([]),\n  });\n  readonly DISPLAY_TYPES: Array<string> = [\n    'string',\n    'date',\n    'boolean',\n    'enum',\n    'arrayCount',\n    'underscoresToSpaces',\n  ];\n\n  private readonly COLUMNS: Array<DefinitionColumn> = [\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'title',\n      translationKey: 'title',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'key',\n      translationKey: 'key',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'path',\n      translationKey: 'path',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'displayType',\n      translationKey: 'displayType',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'displayTypeParameters',\n      translationKey: 'displayTypeParameters',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'sortable',\n      translationKey: 'sortable',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'defaultSort',\n      translationKey: 'defaultSort',\n    },\n  ];\n  private cachedObjectManagementListColumns: Array<SearchListColumn> = [];\n  private readonly refreshObjectManagementListColumns$ = new BehaviorSubject<null>(null);\n\n  readonly objectManagementFields$: Observable<Array<ListField>> = this.translateService\n    .stream('key')\n    .pipe(\n      map(() =>\n        this.COLUMNS.map(column => ({\n          key: column.propertyName,\n          label: this.translateService.instant(`listColumn.${column.translationKey}`),\n          sortable: column.sortable,\n          ...(column.viewType && {viewType: column.viewType}),\n          ...(column.enum && {enum: column.enum}),\n        }))\n      )\n    );\n\n  readonly objectId$: Observable<string> = this.route.params.pipe(\n    map(params => params.id || ''),\n    filter(objectId => !!objectId)\n  );\n\n  private readonly objectManagementListColumns$: Observable<Array<any>> = combineLatest([\n    this.objectId$,\n    this.refreshObjectManagementListColumns$,\n  ]).pipe(\n    switchMap(([objectId]) => this.objectManagementService.getSearchList(objectId)),\n    tap(objectManagementListColumns => {\n      this.objectId$.pipe(take(1)).subscribe(objectId => {\n        if (\n          objectManagementListColumns &&\n          Array.isArray(objectManagementListColumns) &&\n          objectManagementListColumns.length > 0\n        ) {\n          this.setDownload(objectId, objectManagementListColumns);\n        }\n      });\n    }),\n    tap(objectManagementListColumns => {\n      this.cachedObjectManagementListColumns = objectManagementListColumns;\n      this.loading$.next(false);\n      this.enableInput();\n    })\n  );\n\n  readonly translatedObjectManagementListColumns$: Observable<Array<SearchListColumnView>> =\n    combineLatest([this.objectManagementListColumns$, this.translateService.stream('key')]).pipe(\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    );\n\n  readonly disableDefaultSort$ = combineLatest([\n    this.currentModalType$,\n    this.formGroup.valueChanges,\n  ]).pipe(\n    map(\n      ([currentModalType]) =>\n        currentModalType === 'create' &&\n        this.cachedObjectManagementListColumns.find(column => !!column.defaultSort)\n    ),\n    startWith(false)\n  );\n\n  readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n    map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[1]),\n    tap(showDateFormat => {\n      if (showDateFormat === false && !!this.formGroup.value.dateFormat) {\n        this.formGroup.patchValue({dateFormat: ''});\n      }\n    }),\n    startWith(false)\n  );\n\n  readonly showEnum$ = this.formGroup.valueChanges.pipe(\n    map(\n      formValues =>\n        !!(\n          formValues.displayType?.key === this.DISPLAY_TYPES[3] ||\n          formValues.displayType?.key === this.DISPLAY_TYPES[2]\n        )\n    ),\n    tap(showEnum => {\n      const enumValue = this.formGroup.value.enum;\n      if (showEnum === false && Array.isArray(enumValue) && enumValue.length > 0) {\n        this.formGroup.patchValue({enum: []});\n      }\n    }),\n    startWith(false)\n  );\n\n  readonly isYesNo$ = this.formGroup.valueChanges.pipe(\n    map(formValues => formValues.displayType?.key === this.DISPLAY_TYPES[2])\n  );\n\n  readonly selectedViewTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n  readonly viewTypeItems$: Observable<Array<ListItem>> = combineLatest([\n    this.selectedViewTypeItemIndex$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([selectedViewTypeItemIndex]) =>\n      [\n        {\n          content: this.translateService.instant(`listColumnDisplayType.select`),\n          key: this.INVALID_KEY,\n        },\n        ...this.DISPLAY_TYPES.map(type => ({\n          content: this.translateService.instant(`listColumnDisplayType.${type}`),\n          key: type,\n        })),\n      ].map((item, index) => ({\n        ...item,\n        selected: index === selectedViewTypeItemIndex,\n      }))\n    )\n  );\n\n  readonly selectedSortItemIndex$ = new BehaviorSubject<number>(0);\n\n  readonly sortItems$: Observable<Array<ListItem>> = combineLatest([\n    this.selectedSortItemIndex$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([selectedSortItemIndex]) =>\n      [\n        {\n          content: this.translateService.instant(`listColumn.selectDefaultSort`),\n          key: this.INVALID_KEY,\n        },\n        {\n          content: this.translateService.instant(`listColumn.sortableAsc`),\n          key: 'ASC',\n        },\n        {\n          content: this.translateService.instant(`listColumn.sortableDesc`),\n          key: 'DESC',\n        },\n      ].map((item, index) => ({\n        ...item,\n        selected: index === selectedSortItemIndex,\n      }))\n    )\n  );\n\n  readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n    map(([formValues, currentModalType]) => {\n      const existingKeys = this.cachedObjectManagementListColumns.map(column => column.key);\n      return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n    }),\n    startWith(false)\n  );\n\n  readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n    map(\n      ([formValues, validKey]) =>\n        !!(\n          formValues.displayType?.key !== this.INVALID_KEY &&\n          formValues.path &&\n          validKey &&\n          (formValues.displayType.key === 'enum' ? formValues.enum?.length > 0 : true)\n        )\n    ),\n    startWith(false)\n  );\n\n  constructor(\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly route: ActivatedRoute,\n    private readonly translateService: TranslateService,\n    private readonly configService: ConfigService,\n    private readonly sanitizer: DomSanitizer\n  ) {}\n\n  openModal(modalType: ListColumnModal): void {\n    this.showModal$.next(true);\n    this.currentModalType$.next(modalType);\n\n    if (modalType === 'create') {\n      this.formGroup.controls['key'].enable();\n      this.resetFormGroup();\n    } else if (modalType === 'edit') {\n      this.formGroup.controls['key'].disable();\n    }\n  }\n\n  closeModal(): void {\n    this.showModal$.next(false);\n  }\n\n  deleteRow(searchListColumnRowIndex: number, clickEvent: MouseEvent): void {\n    clickEvent.stopPropagation();\n\n    this.showDeleteModal$.next(true);\n    this.deleteRowIndex$.next(searchListColumnRowIndex);\n  }\n\n  deleteRowConfirmation(searchListColumnRowIndex: number): void {\n    const columnKey = this.getColumnKey(searchListColumnRowIndex);\n\n    if (columnKey) {\n      this.disableInput();\n\n      this.objectId$\n        .pipe(\n          take(1),\n          switchMap(objectId => this.objectManagementService.deleteSearchList(objectId, columnKey)),\n          tap(() => this.refreshObjectManagementListColumns()),\n          catchError(() => {\n            this.enableInput();\n            return of(null);\n          })\n        )\n        .subscribe();\n    }\n  }\n\n  getColumnKey(searchListColumnRowIndex: number) {\n    return this.cachedObjectManagementListColumns[searchListColumnRowIndex]?.key;\n  }\n\n  moveRow(\n    searchListColumnRowIndex: number,\n    moveUp: boolean,\n    clickEvent: MouseEvent,\n    objectId: string\n  ): void {\n    const objectManagementListColumns = [...this.cachedObjectManagementListColumns];\n    const searchListColumnRow = objectManagementListColumns[searchListColumnRowIndex];\n\n    clickEvent.stopPropagation();\n    const searchListColumnIndex = objectManagementListColumns.findIndex(\n      field => field.key === searchListColumnRow.key\n    );\n    const foundSearchListColumn = {...objectManagementListColumns[searchListColumnIndex]};\n    const filteredSearchListColumns = objectManagementListColumns.filter(\n      field => field.key !== searchListColumnRow.key\n    );\n    const multipleSearchListColumns = objectManagementListColumns.length > 1;\n\n    if (multipleSearchListColumns && moveUp && searchListColumnIndex > 0) {\n      const searchListColumnBeforeKey = `${\n        objectManagementListColumns[searchListColumnIndex - 1].key\n      }`;\n      const searchListColumnBeforeIndex = filteredSearchListColumns.findIndex(\n        field => field.key === searchListColumnBeforeKey\n      );\n      filteredSearchListColumns.splice(searchListColumnBeforeIndex, 0, foundSearchListColumn);\n      this.updateObjectManagementListColumn(objectId, filteredSearchListColumns);\n    } else if (\n      multipleSearchListColumns &&\n      !moveUp &&\n      searchListColumnIndex < objectManagementListColumns.length\n    ) {\n      const caseListColumnAfterKey = `${\n        objectManagementListColumns[searchListColumnIndex + 1].key\n      }`;\n      const caseListColumnAfterIndex = filteredSearchListColumns.findIndex(\n        field => field.key === caseListColumnAfterKey\n      );\n      filteredSearchListColumns.splice(caseListColumnAfterIndex + 1, 0, foundSearchListColumn);\n      this.updateObjectManagementListColumn(objectId, filteredSearchListColumns);\n    }\n  }\n\n  saveCasListColumns(): void {\n    this.disableInput();\n\n    this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n      if (currentModalType === 'create') {\n        this.addColumn();\n      } else {\n        this.updateColumn();\n      }\n    });\n  }\n\n  enumValueChange(value: Array<{[key: string]: string}>): void {\n    this.formGroup.patchValue({enum: value});\n  }\n\n  columnRowClicked(row: {key: string}): void {\n    this.resetFormGroup();\n\n    combineLatest([this.viewTypeItems$, this.sortItems$])\n      .pipe(take(1))\n      .subscribe(([viewTypeItems, sortItems]) => {\n        const column = this.cachedObjectManagementListColumns.find(\n          cachedColumn => cachedColumn.key === row.key\n        );\n        const viewTypeItem = viewTypeItems.find(item => item.key === column.displayType.type);\n        const viewTypeItemIndex = viewTypeItems.findIndex(\n          item => item.key === column.displayType.type\n        );\n        const sortItem = sortItems.find(item => item.key === column.defaultSort);\n        const sortItemIndex = sortItems.findIndex(item => item.key === column.defaultSort);\n        const enumValues = column?.displayType?.displayTypeParameters?.enum;\n        const mappedEnumValues: MultiInputValues = [];\n        const columnDateFormat = column?.displayType?.displayTypeParameters?.dateFormat;\n\n        this.selectedViewTypeItemIndex$.next(viewTypeItemIndex);\n\n        if (sortItem) {\n          this.selectedSortItemIndex$.next(sortItemIndex);\n        }\n\n        if (enumValues) {\n          Object.keys(enumValues).forEach(key => {\n            mappedEnumValues.push({key, value: enumValues[key]});\n          });\n          this.defaultEnumValues$.next(mappedEnumValues);\n        } else {\n          this.defaultEnumValues$.next([{key: '', value: ''}]);\n        }\n\n        this.formGroup.patchValue({\n          key: column.key,\n          title: column.title,\n          path: column.path,\n          sortable: column.sortable,\n          // @ts-ignore\n          displayType: {...viewTypeItem},\n          // @ts-ignore\n          defaultSort: sortItem ? {...sortItem} : {...sortItems[0]},\n          ...(columnDateFormat && {\n            dateFormat: columnDateFormat,\n          }),\n        });\n\n        this.openModal('edit');\n      });\n  }\n\n  private updateObjectManagementListColumn(\n    objectId: string,\n    listColumn: Array<SearchListColumn>\n  ): void {\n    this.disableInput();\n    this.objectManagementService\n      .putSearchListColumns(objectId, listColumn)\n      .pipe(\n        tap(() => {\n          this.refreshObjectManagementListColumns();\n          localStorage.setItem(`list-search-${objectId}`, null);\n        }),\n        catchError(() => {\n          this.enableInput();\n          return of(null);\n        })\n      )\n      .subscribe();\n  }\n\n  private addColumn(): void {\n    const formValue = this.formGroup.value;\n\n    this.objectId$\n      .pipe(\n        take(1),\n        switchMap(objectId =>\n          this.objectManagementService.postSearchList(\n            objectId,\n            this.mapFormValuesToColumn(formValue)\n          )\n        ),\n        tap(() => {\n          this.closeModal();\n          this.refreshObjectManagementListColumns();\n        }),\n        catchError(() => {\n          this.enableInput();\n          return of(null);\n        })\n      )\n      .subscribe();\n  }\n\n  private getDisplayTypeParametersView(displayTypeParameters: DisplayTypeParameters): string {\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        if (!acc) {\n          return `${keyValuePairString}`;\n        }\n\n        return `${acc}, ${keyValuePairString}`;\n      }, '');\n    }\n\n    return '-';\n  }\n\n  private updateColumn(): void {\n    this.objectId$\n      .pipe(\n        take(1),\n        switchMap(objectId =>\n          this.objectManagementService.putSearchList(\n            objectId,\n            this.formGroup.value.key,\n            this.mapFormValuesToColumn(this.formGroup.value)\n          )\n        ),\n        tap(() => {\n          this.closeModal();\n          this.refreshObjectManagementListColumns();\n        }),\n        catchError(() => {\n          this.enableInput();\n          return of(null);\n        })\n      )\n      .subscribe();\n  }\n\n  private setDownload(\n    objectId: string,\n    ObjectManagementListColumns: Array<SearchListColumn>\n  ): void {\n    this.downloadName$.next(`${objectId}.json`);\n    this.downloadUrl$.next(\n      this.sanitizer.bypassSecurityTrustUrl(\n        'data:text/json;charset=UTF-8,' +\n          encodeURIComponent(JSON.stringify(ObjectManagementListColumns, null, 2))\n      )\n    );\n  }\n\n  private disableInput(): void {\n    this.disableInput$.next(true);\n    this.formGroup.disable();\n  }\n\n  private enableInput(): void {\n    this.disableInput$.next(false);\n    this.formGroup.enable();\n  }\n\n  private refreshObjectManagementListColumns(): void {\n    this.refreshObjectManagementListColumns$.next(null);\n  }\n\n  private resetFormGroup(): void {\n    this.formGroup.reset();\n    combineLatest([this.sortItems$, this.viewTypeItems$])\n      .pipe(take(1))\n      .subscribe(([sortItems, viewTypeItems]) => {\n        this.defaultEnumValues$.next([{key: '', value: ''}]);\n        this.selectedViewTypeItemIndex$.next(0);\n        // @ts-ignore\n        this.formGroup.patchValue({displayType: viewTypeItems[0]});\n        this.selectedSortItemIndex$.next(0);\n        // @ts-ignore\n        this.formGroup.patchValue({defaultSort: sortItems[0]});\n      });\n  }\n\n  private mapFormValuesToColumn(formValue: any): SearchListColumn {\n    return {\n      key: formValue.key,\n      sortable: formValue.sortable,\n      ...(formValue.defaultSort?.key !== this.INVALID_KEY && {\n        defaultSort: formValue.defaultSort?.key,\n      }),\n      title: formValue.title || '',\n      path: formValue.path,\n      displayType: {\n        type: formValue.displayType?.key,\n        displayTypeParameters: {\n          ...(formValue.dateFormat && {dateFormat: formValue.dateFormat}),\n          ...(Array.isArray(formValue.enum) &&\n            formValue.enum.length > 0 && {\n              enum: formValue.enum.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\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<ng-container\n  *ngIf=\"{\n    listColumn: translatedObjectManagementListColumns$ | async,\n    fields: objectManagementFields$ | async,\n    objectId: objectId$ | async,\n    downloadUrl: downloadUrl$ | async,\n    downloadName: downloadName$ | async,\n    loading: loading$ | async,\n  } as obs\"\n>\n  <div class=\"container-fluid pr-0 pl-0\">\n    <div class=\"text-right\">\n      <div class=\"btn-group mt-m3px mb-3 mr-2\">\n        <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n      </div>\n    </div>\n    <ng-container *ngIf=\"!obs.loading; else loading\">\n      <ng-container *ngIf=\"obs.listColumn?.length > 0; else noConfigWarning\">\n        <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n      </ng-container>\n    </ng-container>\n    <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n    <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n  </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n  <a\n    cdsLink\n    class=\"center-link\"\n    [href]=\"obs.downloadUrl\"\n    [download]=\"obs.downloadName\"\n    [disabled]=\"\n      !obs.downloadUrl ||\n      !obs.downloadName ||\n      obs.listColumn?.length < 1 ||\n      obs.disableInput ||\n      obs.loading\n    \"\n  >\n    {{ 'listColumn.downloadButtonText' | translate }}\n  </a>\n  <button\n    (click)=\"openModal('create')\"\n    cdsButton=\"primary\"\n    size=\"md\"\n    [disabled]=\"obs.loading\"\n    class=\"ml-3\"\n  >\n    {{ 'listColumn.addButtonText' | translate }}\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n  </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n  <div\n    class=\"move-row-buttons\"\n    *ngIf=\"{\n      disableInput: disableInput$ | async,\n      objectId: objectId$ | async,\n    } as obs\"\n  >\n    <i\n      class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n      (click)=\"deleteRow(index, $event)\"\n      [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n    ></i>\n    <i\n      class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n      (click)=\"moveRow(index, true, $event, obs.objectId)\"\n      [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n    ></i>\n    <i\n      class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n      (click)=\"moveRow(index, false, $event, obs.objectId)\"\n      [ngClass]=\"{\n        'disabled disabled-move-row-button': index === length - 1 || obs.disableInput,\n      }\"\n    ></i>\n  </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n  <valtimo-carbon-list\n    [items]=\"obs.listColumn\"\n    [fields]=\"obs.fields\"\n    [viewMode]=\"false\"\n    [header]=\"false\"\n    *ngIf=\"obs.listColumn; else loading\"\n    [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n    (rowClicked)=\"columnRowClicked($event)\"\n  >\n  </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n  <cds-modal\n    *ngIf=\"{\n      type: currentModalType$ | async,\n      show: showModal$ | async,\n      valid: valid$ | async,\n      disableInput: disableInput$ | async,\n      validKey: validKey$ | async,\n      disableDefaultSort: disableDefaultSort$ | async,\n      showEnum: showEnum$ | async,\n      isYesNo: isYesNo$ | async,\n    } as modalObs\"\n    [open]=\"modalObs.show\"\n    (close)=\"closeModal()\"\n  >\n    <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n      <h3 cdsModalHeaderHeading>\n        {{\n          modalObs.type === 'create'\n            ? ('listColumn.addButtonText' | translate)\n            : ('listColumn.editColumnTitle' | translate)\n        }}\n      </h3>\n    </cds-modal-header>\n    <section cdsModalContent>\n      <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n    </section>\n    <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n  </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n  <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip\">\n          {{ 'listColumn.titleTitle' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.titleTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"title\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label\n        [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n        [invalid]=\"modalObs.validKey === false\"\n        [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n      >\n        <span class=\"label-with-tooltip\">\n          {{ 'listColumn.key' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.keyTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip\">\n          {{ 'listColumn.path' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.objectsApiPathTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"path\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip select-label\">\n          {{ 'listColumn.displayType' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <cds-dropdown formControlName=\"displayType\" [disabled]=\"modalObs.disableInput\">\n          <cds-dropdown-list [items]=\"viewTypeItems$ | async\"></cds-dropdown-list>\n        </cds-dropdown>\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\" *ngIf=\"showDateFormat$ | async\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip\">\n          {{ 'listColumn.dateFormat' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"dateFormat\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\" *ngIf=\"modalObs.showEnum || modalObs.isYesNo\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip select-label\">\n          {{\n            modalObs.isYesNo\n              ? ('listColumn.enumTitleOptional' | translate)\n              : ('listColumn.enumTitle' | translate)\n          }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.enumTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <valtimo-carbon-multi-input\n          *ngIf=\"(showModal$ | async) || (modalShowing$ | async)\"\n          type=\"keyValue\"\n          (valueChange)=\"enumValueChange($event)\"\n          [defaultValues]=\"defaultEnumValues$ | async\"\n        ></valtimo-carbon-multi-input>\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-checkbox formControlName=\"sortable\"\n        >{{ 'listColumn.sortable' | translate }}\n      </cds-checkbox>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\">\n        <span class=\"label-with-tooltip select-label\">\n          {{ 'listColumn.defaultSortTitle' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <cds-dropdown\n          formControlName=\"defaultSort\"\n          [disabled]=\"modalObs.disableInput || modalObs.disableDefaultSort\"\n        >\n          <cds-dropdown-list [items]=\"sortItems$ | async\"></cds-dropdown-list>\n        </cds-dropdown>\n      </cds-label>\n    </div>\n  </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n  <cds-modal-footer>\n    <ng-container>\n      <button\n        cdsButton=\"secondary\"\n        [attr.modal-primary-focus]=\"true\"\n        (click)=\"closeModal()\"\n        [disabled]=\"modalObs.disableInput\"\n      >\n        {{ 'listColumn.close' | translate }}\n      </button>\n      <button\n        cdsButton=\"primary\"\n        [attr.modal-primary-focus]=\"true\"\n        [disabled]=\"modalObs.valid === false\"\n        (click)=\"saveCasListColumns()\"\n        [disabled]=\"\n          modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n        \"\n      >\n        {{ 'listColumn.save' | translate }}\n      </button>\n    </ng-container>\n  </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n  <valtimo-confirmation-modal\n    [showModalSubject$]=\"showDeleteModal$\"\n    [outputOnConfirm]=\"deleteRowIndex$ | async\"\n    (confirmEvent)=\"deleteRowConfirmation($event)\"\n    confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n    titleTranslationKey=\"listColumn.deleteColumn\"\n    contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n  ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n  <div class=\"pl-2 pr-2 pb-2\">\n    <cds-notification\n      [notificationObj]=\"{\n        type: 'info',\n        title: 'listColumn.noConfigWarningTitle' | translate,\n        showClose: false,\n      }\"\n    >\n    </cds-notification>\n  </div>\n</ng-template>\n\n<ng-template #loading>\n  <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, TemplateRef, ViewChild} from '@angular/core';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  filter,\n  map,\n  Observable,\n  of,\n  startWith,\n  Subject,\n  switchMap,\n  tap,\n} from 'rxjs';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {\n  ConfigService,\n  DefinitionColumn,\n  SearchField,\n  SearchFieldColumnView,\n  SearchFieldDataType,\n  SearchFieldFieldType,\n} from '@valtimo/shared';\nimport {ListField} from '@valtimo/components';\nimport {catchError, take} from 'rxjs/operators';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ObjectManagementService} from '../../../../services/object-management.service';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-list-search-fields',\n  templateUrl: './object-management-list-search-fields.component.html',\n  styleUrls: ['./object-management-list-search-fields.component.scss'],\n})\nexport class ObjectManagementListSearchFieldsComponent {\n  @ViewChild('moveRowButtons') public moveRowButtonsTemplateRef: TemplateRef<any>;\n  readonly downloadName$ = new BehaviorSubject<string>('');\n  readonly downloadUrl$ = new BehaviorSubject<SafeUrl>(undefined);\n  readonly loading$ = new BehaviorSubject<boolean>(true);\n  readonly currentModalType$ = new BehaviorSubject<string>('create');\n  readonly showModal$ = new BehaviorSubject<boolean>(false);\n  readonly disableInput$ = new BehaviorSubject<boolean>(false);\n  readonly showDeleteModal$ = new Subject<boolean>();\n  readonly deleteRowIndex$ = new BehaviorSubject<number>(0);\n\n  readonly INVALID_KEY = 'invalid';\n  readonly formGroup = new FormGroup({\n    title: new FormControl(''),\n    key: new FormControl('', Validators.required),\n    path: new FormControl('', Validators.required),\n    dataType: new FormControl({\n      key: this.INVALID_KEY,\n    }),\n    fieldType: new FormControl({\n      key: this.INVALID_KEY,\n    }),\n  });\n  private readonly COLUMNS: Array<DefinitionColumn> = [\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'title',\n      translationKey: 'title',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'key',\n      translationKey: 'key',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'path',\n      translationKey: 'path',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'dataType',\n      translationKey: 'dataType',\n    },\n    {\n      viewType: 'string',\n      sortable: false,\n      propertyName: 'fieldType',\n      translationKey: 'fieldType',\n    },\n  ];\n  readonly DATA_TYPES: Array<SearchFieldDataType> = [\n    'text',\n    'number',\n    'date',\n    'datetime',\n    'boolean',\n  ];\n  private readonly FIELD_TYPES: Array<SearchFieldFieldType> = ['single', 'range'];\n  private cachedObjectManagementListSearchFields: Array<SearchField> = [];\n  private readonly refreshObjectManagementListSearchFields$ = new BehaviorSubject<null>(null);\n\n  readonly objectManagementFields$: Observable<Array<ListField>> = this.translateService\n    .stream('key')\n    .pipe(\n      map(() =>\n        this.COLUMNS.map(column => ({\n          key: column.propertyName,\n          label: this.translateService.instant(`searchFieldsOverview.${column.translationKey}`),\n          sortable: column.sortable,\n          ...(column.viewType && {viewType: column.viewType}),\n        }))\n      )\n    );\n\n  readonly objectId$: Observable<string> = this.route.params.pipe(\n    map(params => params.id || ''),\n    filter(objectId => !!objectId)\n  );\n\n  private readonly objectManagementListSearchFields$: Observable<Array<any>> = combineLatest([\n    this.objectId$,\n    this.refreshObjectManagementListSearchFields$,\n  ]).pipe(\n    switchMap(([objectId]) => this.objectManagementService.getSearchField(objectId)),\n    tap(objectManagementListSearchFields => {\n      this.objectId$.pipe(take(1)).subscribe(objectId => {\n        if (\n          objectManagementListSearchFields &&\n          Array.isArray(objectManagementListSearchFields) &&\n          objectManagementListSearchFields.length > 0\n        ) {\n          this.setDownload(objectId, objectManagementListSearchFields);\n        }\n      });\n    }),\n    tap(objectManagementListSearchFields => {\n      this.cachedObjectManagementListSearchFields = objectManagementListSearchFields;\n      this.loading$.next(false);\n      this.enableInput();\n    })\n  );\n\n  readonly translatedObjectManagementListSearchFields$: Observable<Array<SearchFieldColumnView>> =\n    combineLatest([\n      this.objectManagementListSearchFields$,\n      this.translateService.stream('key'),\n    ]).pipe(\n      map(([columns]) =>\n        columns.map(column => ({\n          ...column,\n          title: column.title || '-',\n          dataType: this.translateService.instant(\n            `searchFields.${column?.dataType?.toLowerCase()}`\n          ),\n          fieldType: this.translateService.instant(\n            `searchFieldsOverview.${column?.fieldType?.toLowerCase()}`\n          ),\n        }))\n      )\n    );\n\n  readonly selectedDataTypeItemIndex$ = new BehaviorSubject<number>(0);\n\n  readonly dataTypeItems$: Observable<Array<ListItem>> = combineLatest([\n    this.selectedDataTypeItemIndex$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([selectedDataTypeItemIndex]) =>\n      [\n        {\n          content: this.translateService.instant(`searchFieldDataType.select`),\n          key: this.INVALID_KEY,\n        },\n        ...this.DATA_TYPES.map(type => ({\n          content: this.translateService.instant(`searchFields.${type}`),\n          key: type.toUpperCase(),\n        })),\n      ].map((item, index) => ({\n        ...item,\n        selected: index === selectedDataTypeItemIndex,\n      }))\n    )\n  );\n\n  readonly selectedFieldTypeItemIndex$ = new BehaviorSubject<number>(0);\n  readonly fieldTypeItems$: Observable<Array<ListItem>> = combineLatest([\n    this.selectedFieldTypeItemIndex$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([selectedFieldTypeItemIndex]) =>\n      [\n        {\n          content: this.translateService.instant(`searchFieldFieldType.select`),\n          key: this.INVALID_KEY,\n        },\n        ...this.FIELD_TYPES.map(type => ({\n          content: this.translateService.instant(`searchFieldsOverview.${type}`),\n          key: type.toUpperCase(),\n        })),\n      ].map((item, index) => ({\n        ...item,\n        selected: index === selectedFieldTypeItemIndex,\n      }))\n    )\n  );\n\n  readonly validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(\n    map(([formValues, currentModalType]) => {\n      const existingKeys = this.cachedObjectManagementListSearchFields.map(column => column.key);\n      return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;\n    }),\n    startWith(false)\n  );\n\n  readonly valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(\n    map(([formValues, validKey]) => !!(formValues.path && validKey)),\n    startWith(false)\n  );\n\n  constructor(\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly route: ActivatedRoute,\n    private readonly translateService: TranslateService,\n    private readonly configService: ConfigService,\n    private readonly sanitizer: DomSanitizer\n  ) {}\n\n  openModal(modalType: string): void {\n    this.showModal$.next(true);\n    this.currentModalType$.next(modalType);\n\n    if (modalType === 'create') {\n      this.formGroup.controls['key'].enable();\n      this.resetFormGroup();\n    } else if (modalType === 'edit') {\n      this.formGroup.controls['key'].disable();\n    }\n  }\n\n  closeModal(): void {\n    this.showModal$.next(false);\n  }\n\n  deleteRow(listSearchFieldRowIndex: number, clickEvent: MouseEvent): void {\n    clickEvent.stopPropagation();\n\n    this.showDeleteModal$.next(true);\n    this.deleteRowIndex$.next(listSearchFieldRowIndex);\n  }\n\n  deleteRowConfirmation(listSearchFieldRowIndex: number): void {\n    const columnKey = this.getColumnKey(listSearchFieldRowIndex);\n\n    if (columnKey) {\n      this.disableInput();\n\n      this.objectId$\n        .pipe(\n          take(1),\n          switchMap(objectId =>\n            this.objectManagementService.deleteSearchField(objectId, columnKey)\n          ),\n          tap(() => this.refreshObjectManagementListSearchFields()),\n          catchError(() => {\n            this.enableInput();\n            return of(null);\n          })\n        )\n        .subscribe();\n    }\n  }\n\n  getColumnKey(listSearchFieldRowIndex: number) {\n    return this.cachedObjectManagementListSearchFields[listSearchFieldRowIndex]?.key;\n  }\n\n  moveRow(\n    listSearchFieldRowIndex: number,\n    moveUp: boolean,\n    clickEvent: MouseEvent,\n    objectId: string\n  ): void {\n    const objectManagementListSearchFields = [...this.cachedObjectManagementListSearchFields];\n    const listSearchFieldRow = objectManagementListSearchFields[listSearchFieldRowIndex];\n\n    clickEvent.stopPropagation();\n    const listSearchFieldIndex = objectManagementListSearchFields.findIndex(\n      field => field.key === listSearchFieldRow.key\n    );\n    const foundListSearchField = {...objectManagementListSearchFields[listSearchFieldIndex]};\n    const filteredListSearchField = objectManagementListSearchFields.filter(\n      field => field.key !== listSearchFieldRow.key\n    );\n    const multipleListSearchFields = objectManagementListSearchFields.length > 1;\n\n    if (multipleListSearchFields && moveUp && listSearchFieldIndex > 0) {\n      const listSearchFieldBeforeKey = `${\n        objectManagementListSearchFields[listSearchFieldIndex - 1].key\n      }`;\n      const listSearchFieldBeforeIndex = filteredListSearchField.findIndex(\n        field => field.key === listSearchFieldBeforeKey\n      );\n      filteredListSearchField.splice(listSearchFieldBeforeIndex, 0, foundListSearchField);\n      this.updateObjectManagementListSearchField(objectId, filteredListSearchField);\n    } else if (\n      multipleListSearchFields &&\n      !moveUp &&\n      listSearchFieldIndex < objectManagementListSearchFields.length\n    ) {\n      const caseListColumnAfterKey = `${\n        objectManagementListSearchFields[listSearchFieldIndex + 1].key\n      }`;\n      const caseListColumnAfterIndex = filteredListSearchField.findIndex(\n        field => field.key === caseListColumnAfterKey\n      );\n      filteredListSearchField.splice(caseListColumnAfterIndex + 1, 0, foundListSearchField);\n      this.updateObjectManagementListSearchField(objectId, filteredListSearchField);\n    }\n  }\n\n  saveListSearchFields(): void {\n    this.disableInput();\n\n    this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {\n      if (currentModalType === 'create') {\n        this.addSearchField();\n      } else {\n        this.updateSearchField();\n      }\n    });\n  }\n\n  columnRowClicked(row: {key: string}): void {\n    this.resetFormGroup();\n\n    combineLatest([this.dataTypeItems$, this.fieldTypeItems$])\n      .pipe(take(1))\n      .subscribe(([dataTypeItems, fieldTypeItems]) => {\n        const column = this.cachedObjectManagementListSearchFields.find(\n          cachedColumn => cachedColumn.key === row.key\n        );\n        const dataTypeItem = dataTypeItems.find(item => item.key === column.dataType);\n        const dataTypeItemIndex = dataTypeItems.findIndex(item => item.key === column.dataType);\n\n        const fieldTypeItem = fieldTypeItems.find(item => item.key === column.fieldType);\n        const fieldTypeItemIndex = fieldTypeItems.findIndex(item => item.key === column.fieldType);\n\n        this.selectedDataTypeItemIndex$.next(dataTypeItemIndex);\n        this.selectedFieldTypeItemIndex$.next(fieldTypeItemIndex);\n\n        this.formGroup.patchValue({\n          key: column.key,\n          title: column.title,\n          path: column.path,\n          // @ts-ignore\n          dataType: {...dataTypeItem},\n          // @ts-ignore\n          fieldType: {...fieldTypeItem},\n        });\n\n        this.openModal('edit');\n      });\n  }\n\n  private updateObjectManagementListSearchField(\n    objectId: string,\n    searchField: Array<SearchField>\n  ): void {\n    this.disableInput();\n    this.objectManagementService\n      .putSearchFields(objectId, searchField)\n      .pipe(\n        tap(() => {\n          this.refreshObjectManagementListSearchFields();\n          localStorage.setItem(`list-search-fields${objectId}`, null);\n        }),\n        catchError(() => {\n          this.enableInput();\n          return of(null);\n        })\n      )\n      .subscribe();\n  }\n\n  private addSearchField(): void {\n    const formValue = this.formGroup.value;\n\n    this.objectId$\n      .pipe(\n        take(1),\n        switchMap(objectId =>\n          this.objectManagementService.postSearchField(\n            objectId,\n            this.mapFormValuesToColumn(formValue)\n          )\n        ),\n        tap(() => {\n          this.closeModal();\n          this.refreshObjectManagementListSearchFields();\n        }),\n        catchError(() => {\n          this.enableInput();\n          return of(null);\n        })\n      )\n      .subscribe();\n  }\n\n  private updateSearchField(): void {\n    this.objectId$\n      .pipe(\n        take(1),\n        switchMap(objectId =>\n          this.objectManagementService.putSearchField(\n            objectId,\n            this.formGroup.value.key,\n            this.mapFormValuesToColumn(this.formGroup.value)\n          )\n        ),\n        tap(() => {\n          this.closeModal();\n          this.refreshObjectManagementListSearchFields();\n        }),\n        catchError(() => {\n          this.enableInput();\n          return of(null);\n        })\n      )\n      .subscribe();\n  }\n\n  private setDownload(objectId: string, ObjectManagementSearchFields: Array<SearchField>): void {\n    this.downloadName$.next(`${objectId}.json`);\n    this.downloadUrl$.next(\n      this.sanitizer.bypassSecurityTrustUrl(\n        'data:text/json;charset=UTF-8,' +\n          encodeURIComponent(JSON.stringify(ObjectManagementSearchFields, null, 2))\n      )\n    );\n  }\n\n  private disableInput(): void {\n    this.disableInput$.next(true);\n    this.formGroup.disable();\n  }\n\n  private enableInput(): void {\n    this.disableInput$.next(false);\n    this.formGroup.enable();\n  }\n\n  private refreshObjectManagementListSearchFields(): void {\n    this.refreshObjectManagementListSearchFields$.next(null);\n  }\n\n  private resetFormGroup(): void {\n    this.formGroup.reset();\n    this.selectedDataTypeItemIndex$.next(0);\n    this.selectedFieldTypeItemIndex$.next(0);\n  }\n\n  private mapFormValuesToColumn(formValue: any): SearchField {\n    return {\n      key: formValue.key,\n      title: formValue.title || '',\n      path: formValue.path,\n      dataType: formValue.dataType.key,\n      fieldType: formValue.fieldType.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<ng-container\n  *ngIf=\"{\n    searchFields: translatedObjectManagementListSearchFields$ | async,\n    fields: objectManagementFields$ | async,\n    objectId: objectId$ | async,\n    downloadUrl: downloadUrl$ | async,\n    downloadName: downloadName$ | async,\n    loading: loading$ | async,\n  } as obs\"\n>\n  <div class=\"container-fluid pr-0 pl-0\">\n    <div class=\"text-right\">\n      <div class=\"btn-group mt-m3px mb-3 mr-2\">\n        <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n      </div>\n    </div>\n    <ng-container *ngIf=\"!obs.loading; else loading\">\n      <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n        <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n      </ng-container>\n    </ng-container>\n    <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n    <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n  </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n  <a\n    cdsLink\n    class=\"center-link\"\n    [href]=\"obs.downloadUrl\"\n    [download]=\"obs.downloadName\"\n    [disabled]=\"\n      !obs.downloadUrl ||\n      !obs.downloadName ||\n      obs.searchFields?.length < 1 ||\n      obs.disableInput ||\n      obs.loading\n    \"\n  >\n    {{ 'searchFieldsOverview.download' | translate }}\n  </a>\n  <button\n    (click)=\"openModal('create')\"\n    cdsButton=\"primary\"\n    size=\"md\"\n    [disabled]=\"obs.loading\"\n    class=\"ml-3\"\n  >\n    {{ 'searchFieldsOverview.add' | translate }}\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n  </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n  <div\n    class=\"move-row-buttons\"\n    *ngIf=\"{\n      disableInput: disableInput$ | async,\n      objectId: objectId$ | async,\n    } as obs\"\n  >\n    <i\n      class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n      (click)=\"deleteRow(index, $event)\"\n      [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n    ></i>\n    <i\n      class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n      (click)=\"moveRow(index, true, $event, obs.objectId)\"\n      [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n    ></i>\n    <i\n      class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n      (click)=\"moveRow(index, false, $event, obs.objectId)\"\n      [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n    ></i>\n  </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n  <valtimo-carbon-list\n    [items]=\"obs.searchFields\"\n    [fields]=\"obs.fields\"\n    [viewMode]=\"false\"\n    [header]=\"false\"\n    *ngIf=\"obs.searchFields; else loading\"\n    [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n    (rowClicked)=\"columnRowClicked($event)\"\n  >\n  </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createEditModal>\n  <cds-modal\n    valtimoCdsModal\n    *ngIf=\"{\n      type: currentModalType$ | async,\n      show: showModal$ | async,\n      valid: valid$ | async,\n      disableInput: disableInput$ | async,\n      validKey: validKey$ | async,\n    } as modalObs\"\n    [open]=\"modalObs.show\"\n    (close)=\"closeModal()\"\n  >\n    <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n      <h3 cdsModalHeaderHeading>\n        {{\n          modalObs.type === 'create'\n            ? ('searchFieldsOverview.add' | translate)\n            : ('searchFieldsOverview.edit' | translate)\n        }}\n      </h3>\n    </cds-modal-header>\n    <section cdsModalContent>\n      <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n    </section>\n    <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n  </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n  <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip\">\n          {{ 'searchFieldsOverview.title' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"title\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label\n        [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n        [invalid]=\"modalObs.validKey === false\"\n        [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n      >\n        <span class=\"label-with-tooltip\">\n          {{ 'searchFieldsOverview.key' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip\">\n          {{ 'searchFieldsOverview.path' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <input cdsText formControlName=\"path\" />\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip select-label\">\n          {{ 'searchFieldsOverview.dataType' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n          <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n        </cds-dropdown>\n      </cds-label>\n    </div>\n    <div class=\"cds--text-input__field-wrapper\">\n      <cds-label [disabled]=\"modalObs.disableInput\">\n        <span class=\"label-with-tooltip select-label\">\n          {{ 'searchFieldsOverview.fieldType' | translate }}\n          <v-tooltip-icon\n            [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n            [disabled]=\"modalObs.disableInput\"\n          ></v-tooltip-icon>\n        </span>\n        <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n          <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n        </cds-dropdown>\n      </cds-label>\n    </div>\n  </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n  <cds-modal-footer>\n    <ng-container>\n      <button\n        cdsButton=\"secondary\"\n        [attr.modal-primary-focus]=\"true\"\n        (click)=\"closeModal()\"\n        [disabled]=\"modalObs.disableInput\"\n      >\n        {{ 'searchFieldsOverview.close' | translate }}\n      </button>\n      <button\n        cdsButton=\"primary\"\n        [attr.modal-primary-focus]=\"true\"\n        [disabled]=\"modalObs.valid === false\"\n        (click)=\"saveListSearchFields()\"\n        [disabled]=\"\n          modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n        \"\n      >\n        {{ 'searchFieldsOverview.save' | translate }}\n      </button>\n    </ng-container>\n  </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n  <valtimo-confirmation-modal\n    [showModalSubject$]=\"showDeleteModal$\"\n    [outputOnConfirm]=\"deleteRowIndex$ | async\"\n    (confirmEvent)=\"deleteRowConfirmation($event)\"\n    confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n    titleTranslationKey=\"searchFieldsOverview.searchField\"\n    contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n  ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n  <div class=\"pl-2 pr-2 pb-2\">\n    <cds-notification\n      [notificationObj]=\"{\n        type: 'info',\n        title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n        showClose: false,\n      }\"\n    >\n    </cds-notification>\n  </div>\n</ng-template>\n\n<ng-template #loading>\n  <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {combineLatest, filter, map, Observable, Subscription, switchMap} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {TabService} from '../../services/tab.service';\nimport {TabEnum} from '../../services/tab.enum';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {PageTitleService} from '@valtimo/components';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-detail-container',\n  templateUrl: './object-management-detail-container.component.html',\n  styleUrls: ['./object-management-detail-container.component.css'],\n})\nexport class ObjectManagementDetailContainerComponent implements OnInit, OnDestroy {\n  public currentTab: TabEnum;\n  public readonly caseListColumn$ =\n    this.configService.getFeatureToggleObservable('caseListColumn', true);\n\n  private tabSubscription: Subscription;\n\n  readonly TabEnum = TabEnum;\n\n  readonly objectId$: Observable<string> = this.route.params.pipe(\n    map(params => params.id || ''),\n    filter(id => !!id)\n  );\n\n  readonly object$ = combineLatest([this.objectId$, this.objectManagementState.refresh$]).pipe(\n    switchMap(([object]) => this.objectManagementService.getObjectById(object)),\n    tap(object => {\n      this.pageTitleService.setCustomPageTitle(object.title);\n    })\n  );\n\n  constructor(\n    private readonly objectManagementState: ObjectManagementStateService,\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly route: ActivatedRoute,\n    private readonly configService: ConfigService,\n    private readonly tabService: TabService,\n    private readonly pageTitleService: PageTitleService\n  ) {\n  }\n\n  ngOnInit(): void {\n    this.openCurrentTabSubscription();\n  }\n\n  displayBodyComponent(tab: TabEnum): void {\n    this.tabService.currentTab = tab;\n  }\n\n  openCurrentTabSubscription(): void {\n    this.tabSubscription = this.tabService.currentTab$.subscribe(\n      value => (this.currentTab = value)\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.tabService.currentTab = TabEnum.GENERAL;\n    this.tabSubscription?.unsubscribe();\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>\n        <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n      </valtimo-widget>\n    </div>\n  </div>\n</div>\n\n<ng-template #title>\n  <ng-container *ngIf=\"object$ | async as object\">\n    <div class=\"bg-light dossier-header\" *ngIf=\"object.showInDataMenu\">\n      <h3 class=\"dossier-title\">\n        <div *ngIf=\"object.showInDataMenu\" class=\"pull-right\">\n          <span class=\"badge badge-pill badge-info increase-size\">{{\n            'objectManagement.visibleInMenu' | translate\n          }}</span>\n        </div>\n      </h3>\n    </div>\n  </ng-container>\n</ng-template>\n\n<ng-template #tabs>\n  <ul class=\"nav nav-tabs\">\n    <li class=\"nav-item\">\n      <a\n        id=\"general-tab\"\n        class=\"nav-link clickable active\"\n        data-toggle=\"tab\"\n        (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n      >\n        {{ 'objectManagement.tabs.general' | translate }}\n      </a>\n    </li>\n    <li class=\"nav-item\">\n      <a\n        id=\"search-tab\"\n        class=\"nav-link clickable\"\n        data-toggle=\"tab\"\n        (click)=\"displayBodyComponent(TabEnum.SEARCH)\"\n      >\n        {{ 'objectManagement.tabs.searchFields' | translate }}\n      </a>\n    </li>\n    <li class=\"nav-item\" *ngIf=\"caseListColumn\">\n      <a\n        id=\"list-tab\"\n        class=\"nav-link clickable\"\n        data-toggle=\"tab\"\n        (click)=\"displayBodyComponent(TabEnum.LIST)\"\n      >\n        {{ 'objectManagement.tabs.list' | translate }}\n      </a>\n    </li>\n  </ul>\n</ng-template>\n\n<ng-template #tabContent>\n  <div class=\"pt-3 bg-white position-relative tab-container\">\n    <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n      <valtimo-object-management-detail [object$]=\"object$\"></valtimo-object-management-detail>\n    </div>\n    <div *ngIf=\"currentTab && currentTab === TabEnum.SEARCH\">\n      <valtimo-object-management-list-search-fields></valtimo-object-management-list-search-fields>\n    </div>\n    <div *ngIf=\"currentTab && currentTab === TabEnum.LIST\">\n      <valtimo-object-management-list-columns></valtimo-object-management-list-columns>\n    </div>\n  </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {FormManagementService} from '@valtimo/form-management';\nimport {PluginManagementService} from '@valtimo/plugin';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Objecttype, ObjecttypeKeys} from '../../models/object-management.model';\nimport {VModalComponent, ModalService} from '@valtimo/components';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-upload-modal',\n  templateUrl: './object-management-upload-modal.component.html',\n  styleUrls: ['./object-management-upload-modal.component.scss'],\n})\nexport class ObjectManagementUploadModalComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('objectManagementUploadModal') objectManagementUploadModal: VModalComponent;\n  @Input() objecttypes?: Objecttype[];\n\n  readonly clear$ = new Subject();\n  readonly jsonString$ = new BehaviorSubject<string>('');\n  readonly error$ = new BehaviorSubject<string>('');\n  readonly disabled$ = new BehaviorSubject<boolean>(false);\n  readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n\n  private readonly file$ = new BehaviorSubject<File>(undefined);\n\n  private showSubscription!: Subscription;\n  private hideSubscription!: Subscription;\n  private fileSubscription: Subscription;\n  private errorSubscription: Subscription;\n\n  constructor(\n    private readonly objectManagementState: ObjectManagementStateService,\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly formManagementService: FormManagementService,\n    private readonly pluginManagementService: PluginManagementService,\n    private readonly modalService: ModalService,\n    private readonly translateService: TranslateService\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.openShowSubscription();\n    this.openFileSubscription();\n    this.openHideSubscription();\n  }\n\n  ngOnDestroy(): void {\n    this.showSubscription?.unsubscribe();\n    this.hideSubscription?.unsubscribe();\n    this.fileSubscription.unsubscribe();\n  }\n\n  hide(): void {\n    this.modalService.closeModal();\n  }\n\n  cancel(): void {\n    this.hide();\n  }\n\n  setFile(file: File): void {\n    this.clearError();\n    this.file$.next(file);\n  }\n\n  uploadDefinition(): void {\n    this.disable();\n\n    this.jsonString$.pipe(take(1)).subscribe(objecttypeDefinition => {\n      this.objectManagementService\n        .createObject({...JSON.parse(objecttypeDefinition)})\n        .subscribe(() => {\n          this.objectManagementState.refresh();\n          this.objectManagementState.hideModal();\n        });\n      this.closeErrorSubscription();\n      this.clearError();\n      this.enable();\n      this.hide();\n    });\n  }\n\n  private openErrorSubscription(errorCode: string): void {\n    this.closeErrorSubscription();\n    this.errorSubscription = this.translateService.stream(errorCode).subscribe(error => {\n      this.error$.next(error);\n    });\n  }\n\n  private closeErrorSubscription(): void {\n    if (this.errorSubscription) {\n      this.errorSubscription.unsubscribe();\n    }\n  }\n\n  private openFileSubscription(): void {\n    this.fileSubscription = this.file$.subscribe(file => {\n      if (file) {\n        const reader = new FileReader();\n\n        reader.onloadend = () => {\n          const result = reader.result.toString();\n          if (this.isValidJsonObjecttype(result)) {\n            this.jsonString$.next(result);\n          } else {\n            this.clearJsonString();\n          }\n        };\n\n        reader.readAsText(file);\n      } else {\n        this.clearJsonString();\n      }\n    });\n  }\n\n  private openShowSubscription(): void {\n    this.showSubscription = this.objectManagementState.showModal$.subscribe(() => {\n      this.show();\n\n      this.clearJsonString();\n      this.clearError();\n      this.clearDropzone();\n    });\n  }\n\n  private openHideSubscription(): void {\n    this.hideSubscription = this.objectManagementState.hideModal$.subscribe(() => {\n      this.hide();\n    });\n  }\n\n  private show(): void {\n    this.objectManagementState.modalType$.pipe(take(1)).subscribe(modalType => {\n      if (modalType === 'upload') {\n        this.modalService.openModal(this.objectManagementUploadModal);\n      }\n    });\n  }\n\n  private clearError(): void {\n    this.error$.next('');\n  }\n\n  private clearJsonString(): void {\n    this.jsonString$.next('');\n  }\n\n  private clearDropzone(): void {\n    this.clear$.next(null);\n  }\n\n  private isValidJsonObjecttype(string: string) {\n    const jsonObjecttype = JSON.parse(string);\n    const isValid = this.validateObject(jsonObjecttype, [\n      'title',\n      'objecttypenApiPluginConfigurationId',\n      'objecttypeId',\n      'objecttypeVersion',\n      'objectenApiPluginConfigurationId',\n      'showInDataMenu',\n    ]);\n    const isObjecttypeTitleUnique = !this.objecttypes?.find(\n      objecttype => objecttype.title === jsonObjecttype.title\n    );\n    if (isValid && isObjecttypeTitleUnique) {\n      return true;\n    } else if (isValid && !isObjecttypeTitleUnique) {\n      this.clearDropzone();\n      this.openErrorSubscription('dropzone.error.objecttypeAlreadyExists');\n      return false;\n    } else if (!isValid && isObjecttypeTitleUnique) {\n      this.clearDropzone();\n      this.openErrorSubscription('dropzone.error.invalidObjecttypeDef');\n      return false;\n    }\n  }\n\n  validateObject(obj: object, requiredKeys: ObjecttypeKeys[]) {\n    const objKeys = Object.keys(obj);\n    return requiredKeys.every(key => objKeys.includes(key));\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","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<v-modal\n  #objectManagementUploadModal\n  *ngIf=\"{\n    disabled: disabled$ | async,\n    jsonString: jsonString$ | async,\n    error: error$ | async,\n  } as obs\"\n>\n  <div role=\"header\">\n    <div class=\"add-title\">\n      <h4>{{ 'objectManagement.uploadObjecttype' | translate }}</h4>\n    </div>\n  </div>\n  <div role=\"content\">\n    <ng-container *ngTemplateOutlet=\"uploadForm\"></ng-container>\n  </div>\n  <div role=\"footer\">\n    <div class=\"buttons\">\n      <button cdsButton=\"secondary\" (click)=\"cancel()\" [disabled]=\"obs.disabled\">\n        {{ 'objectManagement.cancel' | translate }}\n      </button>\n\n      <button\n        cdsButton=\"primary\"\n        (click)=\"uploadDefinition()\"\n        [disabled]=\"obs.jsonString === '' || obs.disabled\"\n      >\n        {{ 'Upload' | translate }}\n      </button>\n    </div>\n  </div>\n</v-modal>\n\n<ng-template #uploadForm>\n  <ng-container *ngIf=\"showForm$ | async\">\n    <valtimo-dropzone\n      [clear$]=\"clear$\"\n      (fileSelected)=\"setFile($event)\"\n      [disabled]=\"disabled$ | async\"\n      [subtitle]=\"'dropzone.objecttypeDef' | translate\"\n      [externalError$]=\"error$\"\n      [maxFiles]=\"1\"\n    ></valtimo-dropzone>\n  </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {switchMap, tap} from 'rxjs/operators';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ObjectManagementService} from '../../services/object-management.service';\nimport {Objecttype} from '../../models/object-management.model';\nimport {ObjectManagementStateService} from '../../services/object-management-state.service';\nimport {Router} from '@angular/router';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-management-list',\n  templateUrl: './object-management-list.component.html',\n  styleUrls: ['./object-management-list.component.scss'],\n})\nexport class ObjectManagementListComponent {\n  readonly loading$ = new BehaviorSubject<boolean>(true);\n\n  readonly fields$ = new BehaviorSubject<Array<{key: string; label: string}>>([]);\n\n  readonly objecttypesInstances$: Observable<Array<Objecttype>> = combineLatest([\n    this.translateService.stream('key'),\n    this.objectManagementState.refresh$,\n  ]).pipe(\n    tap(() => this.setFields()),\n    switchMap(() => this.objectManagementService.getAllObjects()),\n    tap(() => this.loading$.next(false))\n  );\n\n  constructor(\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly objectManagementState: ObjectManagementStateService,\n    private readonly translateService: TranslateService,\n    private router: Router\n  ) {}\n\n  showAddModal(): void {\n    this.objectManagementState.setModalType('add');\n    this.objectManagementState.showModal();\n  }\n\n  showUploadModal(): void {\n    this.objectManagementState.setModalType('upload');\n    this.objectManagementState.showModal();\n  }\n\n  redirectToDetails(objectManagement: Objecttype) {\n    this.router.navigate(['/object-management/object', objectManagement.id]);\n  }\n\n  private setFields(): void {\n    const keys: Array<string> = ['title'];\n    this.fields$.next(\n      keys.map(key => ({\n        label: `${this.translateService.instant(`objectManagement.labels.${key}`)}`,\n        key,\n      }))\n    );\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n  <div class=\"container-fluid\">\n    <div class=\"col-12 px-0 mb-5\">\n      <div class=\"text-right mt-m3px mb-3\">\n        <button (click)=\"showUploadModal()\" class=\"btn btn-secondary btn-space\">\n          <i class=\"icon mdi mdi-upload mr-1\"></i>\n          {{ 'objectManagement.uploadObjecttype' | translate }}\n        </button>\n        <button (click)=\"showAddModal()\" type=\"button\" class=\"btn btn-space btn-primary mr-0\">\n          <i class=\"icon mdi mdi-plus mr-1\"></i>\n          {{ 'objectManagement.createObjecttype' | translate }}\n        </button>\n      </div>\n      <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n    </div>\n  </div>\n</div>\n\n<ng-template #list let-obs=\"obs\">\n  <ng-container *ngIf=\"fields$ | async as fields\">\n    <ng-container *ngIf=\"objecttypesInstances$ | async as objecttypesInstances\">\n      <valtimo-widget *ngIf=\"obs.loading === false\">\n        <valtimo-carbon-list\n          [items]=\"objecttypesInstances\"\n          [fields]=\"fields\"\n          [viewMode]=\"true\"\n          [header]=\"true\"\n          paginationIdentifier=\"objecttypesList\"\n          (rowClicked)=\"redirectToDetails($event)\"\n        >\n          <div header>\n            <h3 class=\"list-header-title\">\n              {{ 'objectManagement.title' | translate }}\n              <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n                objecttypesInstances?.length || 0\n              }}</sup>\n            </h3>\n          </div>\n        </valtimo-carbon-list>\n      </valtimo-widget>\n    </ng-container>\n  </ng-container>\n</ng-template>\n\n<valtimo-object-management-upload-modal\n  [objecttypes]=\"objecttypesInstances$ | async\"\n></valtimo-object-management-upload-modal>\n<valtimo-object-management-modal></valtimo-object-management-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 {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ObjectManagementDetailContainerComponent} from './components/object-management-detail-container/object-management-detail-container.component';\nimport {ObjectManagementListComponent} from './components/object-management-list/object-management-list.component';\n\nconst routes: Routes = [\n  {\n    path: 'object-management',\n    canActivate: [AuthGuardService],\n    component: ObjectManagementListComponent,\n    data: {title: 'Objects', roles: [ROLE_ADMIN]},\n  },\n  {\n    path: 'object-management/object/:id',\n    canActivate: [AuthGuardService],\n    component: ObjectManagementDetailContainerComponent,\n    data: {title: 'Object', roles: [ROLE_ADMIN], customPageTitle: true},\n  },\n];\n\n@NgModule({\n  imports: [CommonModule, RouterModule.forChild(routes)],\n  exports: [RouterModule],\n  declarations: [],\n})\nexport class ObjectManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 {ObjectManagementRoutingModule} from './object-management-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n  CarbonListModule,\n  CarbonMultiInputModule,\n  ConfirmationModalModule,\n  DropzoneModule,\n  FormModule,\n  InputModule,\n  ModalModule,\n  SelectModule,\n  SpinnerModule,\n  TooltipIconModule,\n  ValtimoCdsModalDirective,\n  VModalModule,\n  WidgetModule,\n} from '@valtimo/components';\nimport {ObjectManagementDetailContainerComponent} from './components/object-management-detail-container/object-management-detail-container.component';\nimport {ObjectManagementDetailComponent} from './components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component';\nimport {ObjectManagementListComponent} from './components/object-management-list/object-management-list.component';\nimport {ObjectManagementUploadModalComponent} from './components/object-management-upload-modal/object-management-upload-modal.component';\nimport {ObjectManagementModalComponent} from './components/object-management-modal/object-management-modal.component';\nimport {ObjectManagementListColumnsComponent} from './components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component';\nimport {\n  ButtonModule as CarbonButtonModule,\n  CheckboxModule,\n  DropdownModule,\n  IconModule,\n  InputModule as CarbonInputModule,\n  LinkModule,\n  LoadingModule,\n  ModalModule as CarbonModalModule,\n  NotificationModule,\n} from 'carbon-components-angular';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ObjectManagementListSearchFieldsComponent} from './components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component';\n\n@NgModule({\n  declarations: [\n    ObjectManagementListComponent,\n    ObjectManagementDetailContainerComponent,\n    ObjectManagementDetailComponent,\n    ObjectManagementListColumnsComponent,\n    ObjectManagementModalComponent,\n    ObjectManagementUploadModalComponent,\n    ObjectManagementListSearchFieldsComponent,\n  ],\n  imports: [\n    CommonModule,\n    DropzoneModule,\n    WidgetModule,\n    TranslateModule,\n    ObjectManagementRoutingModule,\n    VModalModule,\n    FormModule,\n    InputModule,\n    SelectModule,\n    CarbonInputModule,\n    CarbonButtonModule,\n    TooltipIconModule,\n    CarbonMultiInputModule,\n    CarbonModalModule,\n    NotificationModule,\n    LoadingModule,\n    DropdownModule,\n    CheckboxModule,\n    LinkModule,\n    IconModule,\n    ReactiveFormsModule,\n    ConfirmationModalModule,\n    SpinnerModule,\n    ModalModule,\n    ValtimoCdsModalDirective,\n    CarbonListModule,\n  ],\n  exports: [],\n})\nexport class ObjectManagementModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 object-management\n */\n\nexport * from './lib/models/object-management.model';\nexport * from './lib/services/object-management.service';\nexport * from './lib/object-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.ObjectManagementStateService","i2.ObjectManagementService","i4","i8","i1.ObjectManagementService","i2.ObjectManagementStateService","i3","i5","i6.ObjectManagementModalComponent","i7","tap","i5.TabService","i6","i8.ObjectManagementDetailComponent","i9.ObjectManagementListColumnsComponent","i10.ObjectManagementListSearchFieldsComponent","i11","switchMap","i7.ObjectManagementModalComponent","i8.ObjectManagementUploadModalComponent","i1","CarbonInputModule","CarbonButtonModule","CarbonModalModule","ModalModule"],"mappings":"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"}