@valtimo/iko 13.10.0 → 13.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-iko.mjs","sources":["../../../../projects/valtimo/iko/src/lib/services/iko-api.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-tab.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-management-api.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-menu.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-management-widget-api.service.ts","../../../../projects/valtimo/iko/src/lib/services/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-collection/iko-widget-collection.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-collection/iko-widget-collection.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-collection/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-custom/iko-widget-custom.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-custom/iko-widget-custom.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-custom/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-field/iko-widget-field.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-field/iko-widget-field.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-field/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-formio/iko-widget-formio.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-formio/iko-widget-formio.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-formio/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-interactive-table/iko-widget-interactive-table.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-interactive-table/iko-widget-interactive-table.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-interactive-table/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-table/iko-widget-table.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-table/iko-widget-table.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-table/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-map/iko-widget-map.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-map/iko-widget-map.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-map/index.ts","../../../../projects/valtimo/iko/src/lib/components/tabs/iko-widget/iko-widget.component.ts","../../../../projects/valtimo/iko/src/lib/components/tabs/iko-widget/iko-widget.component.html","../../../../projects/valtimo/iko/src/lib/components/tabs/tabs.constants.ts","../../../../projects/valtimo/iko/src/lib/components/iko-details/iko-details.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-details/iko-details.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-list/iko-list.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-list/iko-list.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-properties/iko-management-properties.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-properties/iko-management-properties.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/repository-modal/iko-management-repository-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/repository-modal/iko-management-repository-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/iko-management-api.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/iko-management-api.component.html","../../../../projects/valtimo/iko/src/lib/models/iko.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-menu.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-widget.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-management.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-management-list.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-search-field.model.ts","../../../../projects/valtimo/iko/src/lib/models/index.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/search-field-modal/search-field-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/search-field-modal/search-field-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/iko-management-search-fields.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/iko-management-search-fields.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/widgets/iko-management-widgets.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/widgets/iko-management-widgets.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/search-action-modal/search-action-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/search-action-modal/search-action-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/iko-management-search-actions.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/iko-management-search-actions.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list-modal/list-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list-modal/list-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list/iko-management-list.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list/iko-management-list.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tab-detail-modal/iko-management-tab-details-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tab-detail-modal/iko-management-tab-details-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tabs/iko-management-tabs.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tabs/iko-management-tabs.component.html","../../../../projects/valtimo/iko/src/lib/constants/iko-management.constants.ts","../../../../projects/valtimo/iko/src/lib/constants/index.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/iko-management-details.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/iko-management-details.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/view-modal/iko-management-view-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/view-modal/iko-management-view-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/iko-management-upload.constants.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/step/iko-management-upload-step.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/step/iko-management-upload-step.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/iko-management-upload-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/iko-management-upload-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/iko-management.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/iko-management.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-search/iko-search.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-search/iko-search.component.html","../../../../projects/valtimo/iko/src/lib/iko-routing.module.ts","../../../../projects/valtimo/iko/src/lib/iko.module.ts","../../../../projects/valtimo/iko/src/public-api.ts","../../../../projects/valtimo/iko/src/valtimo-iko.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {BaseApiService, ConfigService, GlobalNotificationService} from '@valtimo/shared';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {IkoView, IkoSearchActionUser, IkoListResponse, IkoTab} from '../models';\nimport {WidgetAction} from '@valtimo/layout';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IkoApiService extends BaseApiService {\n private readonly _cachedMenuItems$ = new BehaviorSubject<IkoView[]>([]);\n\n public get cachedMenuItems$(): Observable<IkoView[]> {\n return this._cachedMenuItems$.asObservable();\n }\n\n public setCachedMenuItems(items: IkoView[]): void {\n this._cachedMenuItems$.next(items);\n }\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService,\n protected readonly globalNotificationService: GlobalNotificationService\n ) {\n super(httpClient, configService);\n }\n\n public getIkoViews(\n key?: string,\n title?: string,\n page: number = 0,\n size: number = 10000,\n sort: string = 'title,asc'\n ): Observable<{content: IkoView[]}> {\n const params = new URLSearchParams();\n if (key) params.append('key', key);\n if (title) params.append('title', title);\n params.append('page', page.toString());\n params.append('size', size.toString());\n params.append('sort', sort);\n\n return this.httpClient.get<{\n content: IkoView[];\n }>(this.getApiUrl(`/v1/iko-view?${params.toString()}`));\n }\n\n public getIkoDetailTabs(ikoViewKey: string): Observable<IkoTab[]> {\n return this.httpClient.get<IkoTab[]>(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab`));\n }\n\n public getIkoSearchActions(ikoViewKey: string): Observable<IkoSearchActionUser[]> {\n return this.httpClient.get<IkoSearchActionUser[]>(\n this.getApiUrl(`/v1/iko-view/${ikoViewKey}/search-action`)\n );\n }\n\n public getIkoWidget(ikoViewKey: string, tabKey: string): any {\n return this.httpClient.get(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget`));\n }\n\n public getIkoWidgetData(ikoViewKey: string, tabKey: string, widgetId: string, id: string): any {\n return this.httpClient.get(\n this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget/${widgetId}/data?id=${id}`)\n );\n }\n\n public searchIkoSearchAction(\n ikoKey: string,\n paramKey: string,\n filters: {filters: {[key: string]: string}}\n ): Observable<IkoListResponse> {\n return this.httpClient.post<IkoListResponse>(\n this.getApiUrl(`/v1/iko-view/${ikoKey}/search-action/${paramKey}/search`),\n filters\n );\n }\n\n public getDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.get<object>(\n this.getApiUrl(`/v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`)\n );\n }\n\n public handleAction(action: WidgetAction, resolved: {[key: string]: string} = null) {\n if (!action) return;\n\n const navigateTo = this.resolveProperty(action?.navigateTo, resolved);\n if (navigateTo) {\n this.navigateTo(navigateTo);\n return;\n }\n\n const caseDefinitionKey = this.resolveProperty(action?.caseDefinitionKey, resolved);\n\n if (caseDefinitionKey) this.startCase(caseDefinitionKey);\n\n const processDefinitionKey = this.resolveProperty(action?.processDefinitionKey, resolved);\n\n if (processDefinitionKey) {\n this.globalNotificationService.showToast({\n title: 'An unexpected error occurred',\n caption: `Unsupported action: Start process ${processDefinitionKey}`,\n type: 'error',\n });\n }\n }\n\n private navigateTo(navigateTo: string) {\n if (navigateTo.startsWith(window.location.origin) || navigateTo.startsWith('/')) {\n window.open(navigateTo, '_self');\n } else if (navigateTo.startsWith('http')) {\n window.open(navigateTo, '_blank');\n } else {\n this.globalNotificationService.showToast({\n title: 'An unexpected error occurred',\n caption: `Unable to navigate to ${navigateTo}`,\n type: 'error',\n });\n }\n }\n\n private startCase(caseDefinitionKey: string) {\n this.globalNotificationService.showToast({\n title: 'Test',\n caption: `Start case ${caseDefinitionKey}`,\n type: 'info',\n });\n }\n\n private resolveProperty(property: string, resolved: {[key: string]: any}): string {\n return property ? (resolved ? String(resolved[property]) : property) : null;\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\nimport {IkoTab} from '../models';\nimport {map} from 'rxjs/operators';\nimport {NGXLogger} from 'ngx-logger';\n\n@Injectable({providedIn: 'root'})\nexport class IkoTabService {\n private readonly _activeTab$ = new BehaviorSubject<IkoTab | null>(null);\n private readonly _ikoViewKey$ = new BehaviorSubject<string | null>(null);\n private readonly _entryId$ = new BehaviorSubject<string | null>(null);\n\n public get activeTab$(): Observable<IkoTab> {\n return this._activeTab$.pipe(filter(tab => !!tab));\n }\n\n public get activeTabKey$(): Observable<string> {\n return this.activeTab$.pipe(map(tab => tab.key));\n }\n\n public get ikoViewKey$(): Observable<string> {\n return this._ikoViewKey$.pipe(filter(key => !!key));\n }\n\n public get entryId$(): Observable<string> {\n return this._entryId$.pipe(filter(key => !!key));\n }\n\n constructor(private readonly logger: NGXLogger) {}\n\n public setActiveTab(tab: IkoTab): void {\n this._activeTab$.next(tab);\n this.logger.debug(`Active IKO tab set to ${JSON.stringify(tab)}`);\n }\n\n public setIkoViewKey(key: string): void {\n this._ikoViewKey$.next(key);\n this.logger.debug(`Active IKO view key set to ${key}`);\n }\n\n public setEntryId(id: string): void {\n this._entryId$.next(id);\n this.logger.debug(`Active IKO entry id set to ${id}`);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, Page, InterceptorSkipHeader} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {\n IkoViewCreateRequest,\n IkoViewListResponse,\n IkoViewResponse,\n IkoViewUpdateRequest,\n IkoSearchActionCreateRequest,\n IkoSearchActionResponse,\n IkoSearchActionUpdateRequest,\n IkoListColumnRequest,\n IkoRepositoryConfigCreateRequest,\n IkoRepositoryConfigListResponse,\n IkoRepositoryConfigResponse,\n IkoRepositoryConfigUpdateRequest,\n IkoSearchField,\n IkoSearchFieldCreateRequest,\n IkoTabCreateRequest,\n ListColumnDto,\n PropertyField,\n TabDto,\n WidgetDto,\n} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IkoManagementApiService extends BaseApiService {\n constructor(\n protected override httpClient: HttpClient,\n protected override configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getIkoViews(\n key?: string,\n title?: string,\n page: number = 0,\n size: number = 100,\n sort: string = 'title,asc'\n ): Observable<{content: IkoViewListResponse[]}> {\n let params = new HttpParams().set('page', page).set('size', size).set('sort', sort);\n if (key) params = params.set('key', key);\n if (title) params = params.set('title', title);\n return this.httpClient.get<{content: IkoViewListResponse[]}>(this.getApiUrl('/v1/iko-view'), {\n params,\n });\n }\n\n public getIkoView(key: string): Observable<IkoViewResponse> {\n return this.httpClient.get<IkoViewResponse>(this.getApiUrl(`/v1/iko-view/${key}`));\n }\n\n public createIkoView(key: string, body: IkoViewCreateRequest): Observable<IkoViewResponse> {\n return this.httpClient.post<IkoViewResponse>(\n this.getApiUrl(`management/v1/iko-view/${key}`),\n body\n );\n }\n\n public updateIkoView(key: string, body: IkoViewUpdateRequest): Observable<IkoViewResponse> {\n return this.httpClient.put<IkoViewResponse>(\n this.getApiUrl(`management/v1/iko-view/${key}`),\n body\n );\n }\n\n public deleteIkoView(key: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`management/v1/iko-view/${key}`));\n }\n\n public exportIKOConfiguration(key: string): Observable<HttpResponse<Blob>> {\n return this.httpClient.get<Blob>(this.getApiUrl(`management/v1/iko-view/${key}/export`), {\n observe: 'response',\n responseType: 'blob' as 'json',\n headers: InterceptorSkipHeader,\n });\n }\n\n public importConfigurationZip(file: any): Observable<HttpResponse<Blob>> {\n return this.httpClient.post<HttpResponse<Blob>>(\n this.getApiUrl(`management/v1/iko-view/import`),\n file\n );\n }\n\n public getIkoRepositoryPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`management/v1/iko-property-fields/${type}/repository-config`)\n );\n }\n\n public getIkoViewPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`management/v1/iko-property-fields/${type}/view`)\n );\n }\n\n public getIkoViewType(key: string): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.get<IkoRepositoryConfigResponse>(\n this.getApiUrl(`/management/v1/iko/${key}`)\n );\n }\n\n public getManagementIkoViews(\n key?: string,\n title?: string,\n ikoRepositoryConfigKey?: string,\n page: number = 0,\n size: number = 100,\n sort: string = 'title,asc'\n ): Observable<Page<IkoViewResponse>> {\n let params = new HttpParams().set('page', page).set('size', size).set('sort', sort);\n if (key) params = params.set('key', key);\n if (title) params = params.set('title', title);\n if (ikoRepositoryConfigKey)\n params = params.set('ikoRepositoryConfigKey', ikoRepositoryConfigKey);\n return this.httpClient.get<Page<IkoViewResponse>>(this.getApiUrl(`management/v1/iko-view`), {\n params,\n });\n }\n\n public getManagementIkoSearchActions(\n aggregateKey: string\n ): Observable<IkoSearchActionResponse[]> {\n return this.httpClient.get<IkoSearchActionResponse[]>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action`)\n );\n }\n\n public getIkoSearchAction(\n aggregateKey: string,\n key: string\n ): Observable<IkoSearchActionResponse> {\n return this.httpClient.get<IkoSearchActionResponse>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${key}`)\n );\n }\n\n public createIkoSearchAction(\n aggregateKey: string,\n key: string,\n body: IkoSearchActionCreateRequest\n ): Observable<IkoSearchActionResponse> {\n return this.httpClient.post<IkoSearchActionResponse>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${key}`),\n body\n );\n }\n\n public updateIkoSearchActions(\n aggregateKey: string,\n body: IkoSearchActionUpdateRequest[]\n ): Observable<IkoSearchActionResponse[]> {\n return this.httpClient.put<IkoSearchActionResponse[]>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action`),\n body\n );\n }\n\n public updateIkoSearchAction(\n aggregateKey: string,\n actionKey: string,\n body: IkoSearchActionUpdateRequest\n ): Observable<IkoSearchActionResponse> {\n return this.httpClient.put<IkoSearchActionResponse>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${actionKey}`),\n body\n );\n }\n\n public deleteIkoSearchAction(aggregateKey: string, key: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${key}`)\n );\n }\n\n public getIkoSearchActionPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`management/v1/iko-property-fields/${type}/search-action`)\n );\n }\n\n public getIkoRepositoryConfigs(): Observable<{content: IkoRepositoryConfigListResponse[]}> {\n return this.httpClient.get<{content: IkoRepositoryConfigListResponse[]}>(\n this.getApiUrl(`/management/v1/iko`)\n );\n }\n\n public getIkoRepositoryConfig(key: string): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.get<IkoRepositoryConfigResponse>(\n this.getApiUrl(`/management/v1/iko/${key}`)\n );\n }\n\n public createIkoRepositoryConfig(\n key: string,\n body: IkoRepositoryConfigCreateRequest\n ): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.post<IkoRepositoryConfigResponse>(\n this.getApiUrl(`management/v1/iko/${key}`),\n body\n );\n }\n\n public updateIkoRepositoryConfig(\n key: string,\n body: IkoRepositoryConfigUpdateRequest\n ): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.put<IkoRepositoryConfigResponse>(\n this.getApiUrl(`/management/v1/iko/${key}`),\n body\n );\n }\n\n public deleteIkoRepositoryConfig(key: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`/management/v1/iko/${key}`));\n }\n\n public getIkoRepositoryConfigPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`/management/v1/iko-property-fields/${type}/repository-config`)\n );\n }\n\n public getIkoRepositoryTypes(): Observable<{[key: string]: string}> {\n return this.httpClient.get<{[key: string]: string}>(this.getApiUrl(`/management/v1/iko-types`));\n }\n\n public getIkoTabs(aggregateKey: string): Observable<TabDto[]> {\n return this.httpClient.get<TabDto[]>(this.getApiUrl(`/v1/iko-view/${aggregateKey}/tab`));\n }\n\n public getIkoTab(aggregateKey: string, tabKey: string): Observable<TabDto> {\n return this.httpClient.get<TabDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`)\n );\n }\n\n public createIkoTab(\n aggregateKey: string,\n tabKey: string,\n body: IkoTabCreateRequest\n ): Observable<TabDto> {\n return this.httpClient.post<TabDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`),\n body\n );\n }\n\n public updateIkoTabs(aggregateKey: string, body: TabDto[]): Observable<TabDto[]> {\n return this.httpClient.put<TabDto[]>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab`),\n body\n );\n }\n\n public updateIkoTab(aggregateKey: string, tabKey: string, body: TabDto): Observable<TabDto> {\n return this.httpClient.put<TabDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`),\n body\n );\n }\n\n public deleteIkoTab(aggregateKey: string, tabKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`)\n );\n }\n\n public getIkoWidget(\n aggregateKey: string,\n tabKey: string,\n widgetKey: string\n ): Observable<WidgetDto> {\n return this.httpClient.get<WidgetDto>(\n this.getApiUrl(`/v1/iko-view/${aggregateKey}/tab/${tabKey}/widget/${widgetKey}`)\n );\n }\n\n public getIkoSearchFields(\n aggregateKey: string,\n requestKey: string\n ): Observable<IkoSearchField[]> {\n return this.httpClient.get<IkoSearchField[]>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field`\n )\n );\n }\n\n public getIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n key: string\n ): Observable<IkoSearchField> {\n return this.httpClient.get<IkoSearchField>(\n this.getApiUrl(`/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${key}`)\n );\n }\n\n public createIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n key: string,\n body: IkoSearchFieldCreateRequest\n ): Observable<IkoSearchField> {\n return this.httpClient.post<IkoSearchField>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${key}`\n ),\n body\n );\n }\n\n public updateIkoSearchFields(\n aggregateKey: string,\n requestKey: string,\n body: IkoSearchField[]\n ): Observable<IkoSearchField[]> {\n return this.httpClient.put<IkoSearchField[]>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field`\n ),\n body\n );\n }\n\n public updateIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n fieldKey: string,\n body: IkoSearchField\n ): Observable<IkoSearchField> {\n return this.httpClient.put<IkoSearchField>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${fieldKey}`\n ),\n body\n );\n }\n\n public deleteIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n key: string\n ): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${key}`\n )\n );\n }\n\n public getIkoListColumns(aggregateKey: string): Observable<ListColumnDto[]> {\n return this.httpClient.get<ListColumnDto[]>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column`)\n );\n }\n\n public getIkoListColumn(aggregateKey: string, columnKey: string): Observable<ListColumnDto> {\n return this.httpClient.get<ListColumnDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`)\n );\n }\n\n public createIkoListColumn(\n aggregateKey: string,\n columnKey: string,\n body: IkoListColumnRequest\n ): Observable<ListColumnDto> {\n return this.httpClient.post<ListColumnDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`),\n body\n );\n }\n\n public updateListColumn(\n aggregateKey: string,\n columnKey: string,\n body: IkoListColumnRequest\n ): Observable<ListColumnDto> {\n return this.httpClient.put<ListColumnDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`),\n body\n );\n }\n\n public updateIkoListColumnOrder(\n aggregateKey: string,\n body: IkoListColumnRequest[]\n ): Observable<ListColumnDto[]> {\n return this.httpClient.put<ListColumnDto[]>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column`),\n body\n );\n }\n\n public deleteIkoListColumn(aggregateKey: string, columnKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`)\n );\n }\n\n public getDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.get<object>(\n this.getApiUrl(`/v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`)\n );\n }\n\n public postDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string,\n dropdownData: object\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.post<object>(\n this.getApiUrl(`v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`),\n dropdownData\n );\n }\n\n public deleteDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.delete<object>(\n this.getApiUrl(`v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`)\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Injectable} from '@angular/core';\nimport {MenuItem} from '@valtimo/shared';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {IkoApiService} from './iko-api.service';\n\n@Injectable({providedIn: 'root'})\nexport class IkoMenuService {\n private readonly _IKO_MENU_ITEM_TITLE_TRANSLATION_KEY = 'iko.pageTitle';\n\n constructor(private readonly ikoApiService: IkoApiService) {}\n\n public appendIkoMenuItems = (menuItems: MenuItem[]): Observable<MenuItem[]> => {\n const ikoExists = menuItems.some(\n item => item.title === this._IKO_MENU_ITEM_TITLE_TRANSLATION_KEY\n );\n if (ikoExists) return of(menuItems);\n\n return this.ikoApiService.getIkoViews().pipe(\n map(ikoItems => {\n this.ikoApiService.setCachedMenuItems(ikoItems.content);\n\n let updatedMenuItems = [...menuItems];\n\n if (ikoItems.content?.length) {\n const ikoSubMenu: MenuItem[] = ikoItems.content.map((item, index) => ({\n link: ['/iko', item.key],\n title: item.title,\n sequence: index,\n show: true,\n }));\n\n const ikoMenu: MenuItem = {\n title: this._IKO_MENU_ITEM_TITLE_TRANSLATION_KEY,\n iconClass: 'icon mdi mdi-account',\n show: true,\n sequence: this.getIkoSequenceAfterCases(menuItems),\n children: ikoSubMenu,\n };\n\n updatedMenuItems = [...menuItems, ikoMenu].sort((a, b) => a.sequence - b.sequence);\n }\n\n const adminMenuItem = updatedMenuItems.find(\n item =>\n item.title.toUpperCase().includes('ADMIN') && !item.title.toUpperCase().includes('IKO')\n );\n\n if (adminMenuItem && !adminMenuItem.children.some(item => item.title === 'IKO')) {\n adminMenuItem.children = [\n ...adminMenuItem.children,\n {\n title: 'IKO',\n show: true,\n sequence: this.getIkoSequenceAfterCases(adminMenuItem.children ?? []),\n link: ['/iko-management'],\n },\n ].sort((a, b) => a.sequence - b.sequence);\n }\n\n return updatedMenuItems;\n })\n );\n };\n\n private getIkoSequenceAfterCases(menuItems: MenuItem[]): number {\n const casesItem = menuItems.find(item => item.title === 'Cases' || item.title === 'Dossiers');\n return Number(casesItem?.sequence ?? 0) + 0.5;\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BasicWidget, IWidgetManagementService} from '@valtimo/layout';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {isEqual} from 'lodash';\nimport {BehaviorSubject, filter, Observable, switchMap} from 'rxjs';\nimport {IkoManagementParams} from '../models';\n\n@Injectable()\nexport class IkoWidgetManagementApiService\n extends BaseApiService\n implements IWidgetManagementService<IkoManagementParams>\n{\n private readonly _params$ = new BehaviorSubject<IkoManagementParams | null>(null);\n private get _params(): IkoManagementParams {\n return this._params$.getValue();\n }\n public get params$(): Observable<IkoManagementParams> {\n return this._params$.pipe(filter(params => !!params));\n }\n\n constructor(\n protected override httpClient: HttpClient,\n protected override configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public initParams(serviceParams: IkoManagementParams): void {\n if (!isEqual(serviceParams, this._params)) this._params$.next(serviceParams);\n }\n\n public getWidgetConfiguration(): Observable<BasicWidget[]> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.get<BasicWidget[]>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget`\n )\n )\n )\n );\n }\n\n public updateWidgetConfiguration(widgets: BasicWidget[]): Observable<BasicWidget[]> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.put<BasicWidget[]>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget`\n ),\n widgets\n )\n )\n );\n }\n\n public deleteWidget(widget: BasicWidget): Observable<void> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.delete<void>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget/${widget.key}`\n )\n )\n )\n );\n }\n\n public updateWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.put<BasicWidget>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget/${widget.key}`\n ),\n widget\n )\n )\n );\n }\n\n public createWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.post<BasicWidget>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget/${widget.key}`\n ),\n widget\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\nexport * from './iko-api.service';\nexport * from './iko-tab.service';\nexport * from './iko-management-api.service';\nexport * from './iko-menu.service';\nexport * from './iko-management-widget-api.service';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {\n CollectionWidget,\n WidgetAction,\n WidgetCollectionComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-collection',\n templateUrl: './iko-widget-collection.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n WidgetCollectionComponent,\n ],\n})\nexport class IkoWidgetCollectionComponent {\n @Input() public set widgetConfiguration(value: CollectionWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionWidget | null>(null);\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n</valtimo-widget-collection>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-collection.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BehaviorSubject, combineLatest, filter, Observable, of, switchMap, tap} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {CustomWidget, WidgetCustomComponent, WidgetLayoutService} from '@valtimo/layout';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-custom',\n templateUrl: './iko-widget-custom.component.html',\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IkoWidgetCustomComponent {\n @Input() public set widgetConfiguration(value: CustomWidget) {\n if (!value) return;\n this._widgetConfigSubject$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n public readonly widgetData$ = combineLatest([\n this._widgetConfigSubject$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [widgetUuid]=\"widgetUuid\"\n>\n</valtimo-widget-custom>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-custom.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {\n FieldsWidget,\n WidgetAction,\n WidgetFieldComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, take, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-field',\n templateUrl: './iko-widget-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetFieldComponent,\n ],\n})\nexport class IkoWidgetFieldComponent {\n @Input() public set widgetConfiguration(value: FieldsWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsWidget | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-field\n [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetData]=\"widgetData$ | async\"\n>\n</valtimo-widget-field>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-field.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {BehaviorSubject, combineLatest, filter, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormIoModule} from '@valtimo/components';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {\n FormioWidgetWidgetWithUuid,\n WidgetFormioComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {IkoApiService} from '../../services';\nimport {IkoWidgetParams} from '../../models';\n\n// TODO: remove component, document id is required, which makes no sense for iko\n@Component({\n selector: 'valtimo-iko-widget-formio',\n templateUrl: './iko-widget-formio.component.html',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IkoWidgetFormioComponent {\n @Input() public set widgetConfiguration(value: FormioWidgetWidgetWithUuid) {\n if (!value) return;\n this._widgetConfigurationSubject$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [widgetUuid]=\"widgetUuid\"\n>\n</valtimo-widget-formio>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-formio.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CaseListActionsComponent, CaseListService} from '@valtimo/case';\nimport {CarbonListModule} from '@valtimo/components';\nimport {CaseDefinition} from '@valtimo/document';\nimport {\n InteractiveTableWidget,\n WidgetAction,\n WidgetFormioComponent,\n WidgetInteractiveTableComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {\n ButtonModule,\n ModalModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-interactive-table',\n templateUrl: './iko-widget-interactive-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n WidgetInteractiveTableComponent,\n CaseListActionsComponent,\n ModalModule,\n WidgetFormioComponent,\n ],\n providers: [CaseListService],\n})\nexport class IkoWidgetInteractiveTableComponent {\n @ViewChild(CaseListActionsComponent) listActionsComponent: CaseListActionsComponent;\n\n private _widgetConfiguration: InteractiveTableWidget;\n public readonly widgetConfiguration$ = new BehaviorSubject<InteractiveTableWidget | null>(null);\n @Input({required: true}) public set widgetConfiguration(value: InteractiveTableWidget) {\n this._widgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public get widgetConfiguration(): InteractiveTableWidget {\n return this._widgetConfiguration;\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n this.listService.forceRefresh$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly listService: CaseListService\n ) {}\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n public onRowClickEvent(event: any, widgetConfiguration: InteractiveTableWidget): void {\n this.ikoApiService.handleAction(widgetConfiguration.properties.rowClickAction, event.resolved);\n }\n\n public onActionEvent(action: WidgetAction, resolvedData: {[key: string]: any}): void {\n this.ikoApiService.handleAction(action, resolvedData);\n }\n\n public onCaseStartEvent(caseDefintion: CaseDefinition): void {\n this.listService.setCaseDefinitionKey(caseDefintion.caseDefinitionKey);\n this.listActionsComponent.startCase();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-interactive-table\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetData]=\"obs.widgetData\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n (actionEvent)=\"onActionEvent($event, obs.widgetData.resolved)\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n (rowClickEvent)=\"onRowClickEvent($event, obs.widgetConfiguration)\"\n (caseStartEvent)=\"onCaseStartEvent($event)\"\n>\n</valtimo-widget-interactive-table>\n\n<valtimo-case-list-actions [navigateAfterSubmit]=\"false\"></valtimo-case-list-actions>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-interactive-table.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, tap} from 'rxjs';\nimport {\n TableWidget,\n WidgetAction,\n WidgetLayoutService,\n WidgetTableComponent,\n WidgetTableContent,\n WidgetWithUuid,\n} from '@valtimo/layout';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-table',\n templateUrl: './iko-widget-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n WidgetTableComponent,\n ],\n})\nexport class IkoWidgetTableComponent {\n private _widgetConfiguration: TableWidget;\n public readonly widgetConfiguration$ = new BehaviorSubject<TableWidget | null>(null);\n @Input({required: true}) public set widgetConfiguration(value: TableWidget) {\n this._widgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public get widgetConfiguration(): TableWidget {\n return this._widgetConfiguration;\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n private getPageSizeParam(widgetConfiguration: WidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as WidgetTableContent).defaultPageSize}`;\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n</valtimo-widget-table>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-table.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {MapWidget, WidgetMapComponent, WidgetLayoutService} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, take, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-map',\n templateUrl: './iko-widget-map.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetMapComponent,\n ],\n})\nexport class IkoWidgetMapComponent {\n @Input() public set widgetConfiguration(value: MapWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<MapWidget | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-map\n [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetData]=\"widgetData$ | async\"\n>\n</valtimo-widget-map>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-map.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {FitPageDirective} from '@valtimo/components';\nimport {WidgetComponentMap, WidgetContainerComponent, WidgetType} from '@valtimo/layout';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../../models';\nimport {IkoApiService, IkoTabService} from '../../../services';\nimport {IkoWidgetCollectionComponent} from '../../widget-collection';\nimport {IkoWidgetCustomComponent} from '../../widget-custom';\nimport {IkoWidgetFieldComponent} from '../../widget-field';\nimport {IkoWidgetFormioComponent} from '../../widget-formio';\nimport {IkoWidgetInteractiveTableComponent} from '../../widget-interactive-table';\nimport {IkoWidgetTableComponent} from '../../widget-table';\nimport {IkoWidgetMapComponent} from '../../widget-map';\n\n@Component({\n templateUrl: './iko-widget.component.html',\n styleUrl: './iko-widget.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, WidgetContainerComponent, FitPageDirective],\n})\nexport class IkoWidgetComponent {\n public readonly ikoViewKey$ = this.ikoTabService.ikoViewKey$;\n public readonly entryId$ = this.ikoTabService.entryId$;\n\n private readonly _key$ = new BehaviorSubject<string>('');\n\n @Input() public set key(value: string) {\n this._key$.next(value);\n }\n public get key$(): Observable<string> {\n return this._key$.pipe(filter((key: string) => !!key));\n }\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public widgets$ = combineLatest([this.ikoViewKey$, this.key$]).pipe(\n switchMap(([ikoViewKey, key]) => this.ikoApiService.getIkoWidget(ikoViewKey, key))\n );\n public widgetParams$: Observable<IkoWidgetParams> = combineLatest([\n this.ikoViewKey$,\n this.key$,\n this.entryId$,\n ]).pipe(\n map(([ikoViewKey, tabKey, entryId]) => ({\n ikoViewKey,\n entryId,\n tabKey,\n })),\n tap(widgets => {\n this.logger.debug(`IKO widgets retrieved ${JSON.stringify(widgets)}`);\n this.loading$.next(false);\n })\n );\n\n public readonly widgetComponentMap: WidgetComponentMap = {\n [WidgetType.FIELDS]: IkoWidgetFieldComponent,\n [WidgetType.CUSTOM]: IkoWidgetCustomComponent,\n [WidgetType.FORMIO]: IkoWidgetFormioComponent,\n [WidgetType.TABLE]: IkoWidgetTableComponent,\n [WidgetType.INTERACTIVE_TABLE]: IkoWidgetInteractiveTableComponent,\n [WidgetType.COLLECTION]: IkoWidgetCollectionComponent,\n [WidgetType.MAP]: IkoWidgetMapComponent,\n };\n\n constructor(\n private readonly ikoTabService: IkoTabService,\n private readonly ikoApiService: IkoApiService,\n private readonly logger: NGXLogger\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-widget-container\n fitPage\n [spaceAdjustment]=\"-32\"\n [disableOverflow]=\"true\"\n class=\"iko-widget-container\"\n [widgets]=\"widgets$ | async\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetParams]=\"widgetParams$ | async\"\n>\n</valtimo-widget-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IkoComponentType} from '../../models';\nimport {IkoWidgetComponent} from './iko-widget/iko-widget.component';\n\nexport const IkoTabComponents = [IkoWidgetComponent];\n\nexport const TabComponentTypes: Record<IkoComponentType, object> = {\n widgets: IkoWidgetComponent,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n BreadcrumbService,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {TabsModule} from 'carbon-components-angular';\nimport {combineLatest, Observable, switchMap, tap} from 'rxjs';\nimport {IkoTab} from '../../models';\nimport {IkoApiService, IkoTabService} from '../../services';\nimport {IkoTabComponents, TabComponentTypes} from '../tabs/tabs.constants';\n\n@Component({\n templateUrl: './iko-details.component.html',\n styleUrl: './iko-details.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, TabsModule, RenderInPageHeaderDirective, ...[IkoTabComponents]],\n})\nexport class IkoDetailsComponent implements OnDestroy {\n @ViewChild('content', {read: ViewContainerRef, static: true})\n private readonly _container: ViewContainerRef;\n\n public readonly activeTabKey$ = this.ikoTabService.activeTabKey$;\n\n public readonly tabs$: Observable<IkoTab[]> = combineLatest([\n this.route.params,\n this.route.queryParams,\n this.translateService.stream('interface.results'),\n this.ikoApiService.cachedMenuItems$,\n ]).pipe(\n tap(([params, queryParams, breadcrumbTitle, menuItems]) => {\n const currentMenuItem = menuItems.find(item => item.key === params.key);\n\n if (currentMenuItem && currentMenuItem?.title)\n this.pageTitleService.setCustomPageTitle(currentMenuItem.title, true);\n\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/iko/${params.key}`],\n content: currentMenuItem?.title ?? '',\n href: `/iko/${params.key}`,\n });\n\n this.breadcrumbService.setThirdBreadcrumb({\n content: breadcrumbTitle,\n route: [`/iko/${params.key}/${params.searchKey}`],\n href: `/iko/${params.key}/${params.searchKey}`,\n routeExtras: {queryParams},\n });\n this.ikoTabService.setIkoViewKey(params.key);\n this.ikoTabService.setEntryId(params.id);\n }),\n switchMap(([params]) => this.ikoApiService.getIkoDetailTabs(params.key)),\n tap((tabs: IkoTab[]) => this.ikoTabService.setActiveTab(tabs[0]))\n );\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoApiService: IkoApiService,\n private readonly ikoTabService: IkoTabService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.pageTitleService.enableReset();\n }\n\n public onTabSelected(tab: IkoTab): void {\n this.ikoTabService.setActiveTab(tab);\n this._container.clear();\n const componentRef = this._container.createComponent<any>(TabComponentTypes[tab.type] as any);\n componentRef.instance.key = tab.key;\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{tabs: tabs$ | async, activeTabKey: activeTabKey$ | async} as obs\"\n renderInPageHeader\n>\n <ng-template>\n <cds-tabs class=\"valtimo-iko-details\">\n @for (tab of obs.tabs; track tab.key) {\n <cds-tab\n [active]=\"obs.activeTabKey === tab.key\"\n [heading]=\"tab.title\"\n (selected)=\"onTabSelected(tab)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n </ng-template>\n</ng-container>\n\n<ng-container #content></ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {BreadcrumbService, CarbonListModule, ColumnConfig} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {IkoApiService} from '../../services';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-iko-list',\n standalone: true,\n templateUrl: './iko-list.component.html',\n imports: [CommonModule, CarbonListModule, TranslatePipe],\n})\nexport class IkoListComponent implements OnDestroy {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly listConfig$: Observable<{fields: ColumnConfig[]; items: any[]}> = combineLatest([\n this.route.params,\n this.route.queryParams,\n this.ikoApiService.cachedMenuItems$,\n ]).pipe(\n tap(() => this.loading$.next(true)),\n switchMap(([params, queryParams, menuItems]) => {\n const currentMenuItem = menuItems.find(item => item.key === params.key);\n\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/iko/${params.key}`],\n content: currentMenuItem?.title ?? '',\n href: `/iko/${params.key}`,\n });\n\n return this.ikoApiService.searchIkoSearchAction(params.key, params.searchKey, {\n filters: queryParams,\n });\n }),\n map(res => ({\n fields: res.headers.reduce(\n (acc, curr) => [\n ...acc,\n ...(curr.displayType.type === 'hidden'\n ? []\n : [\n {\n key: curr.key,\n label: curr.title,\n viewType: curr.displayType.type,\n sortable: curr.sortable,\n ...(!!curr.defaultSort && {default: curr.defaultSort}),\n ...curr.displayType.displayTypeParameters,\n },\n ]),\n ],\n [] as ColumnConfig[]\n ),\n items: res.rows.content.map(stuff =>\n stuff.items.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {})\n ),\n })),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoApiService: IkoApiService,\n private readonly route: ActivatedRoute,\n private readonly router: Router\n ) {}\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n }\n\n public onRowClicked(item: any): void {\n this.router.navigate([`details/${item.id}`], {\n relativeTo: this.route,\n queryParamsHandling: 'preserve',\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n listConfig: listConfig$ | async,\n loading: loading$ | async,\n } as obs\"\n [fields]=\"obs.listConfig?.fields\"\n [items]=\"obs.listConfig?.items\"\n [loading]=\"obs.loading\"\n [hideToolbar]=\"true\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <valtimo-no-results\n title=\"{{ 'ikoManagement.search.noResultsTitle' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n description=\"{{ 'ikoManagement.search.noResultsDescription' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, Input, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n FormArray,\n FormGroup,\n ReactiveFormsModule,\n FormBuilder,\n Validators,\n AbstractControl,\n} from '@angular/forms';\nimport {SelectItem, SelectModule} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n IconService,\n InputModule,\n LayerModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {PropertyField} from '../../models';\nimport {computed, effect} from '@angular/core';\nimport {Information16} from '@carbon/icons';\n\n@Component({\n selector: 'valtimo-iko-management-properties',\n templateUrl: './iko-management-properties.component.html',\n styleUrl: './iko-management-properties.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslatePipe,\n ButtonModule,\n InputModule,\n IconModule,\n LayerModule,\n SelectModule,\n TooltipModule,\n ],\n})\nexport class PropertiesFormComponent {\n @Input({required: true}) propertiesFormGroup!: FormGroup;\n\n public readonly $fields = signal<PropertyField[]>([]);\n @Input() public set fields(fields: PropertyField[]) {\n if (fields) {\n this.applyPropertyControls(this.fb, this.propertiesFormGroup, fields);\n this.$fields.set(fields);\n }\n }\n\n public readonly $prefillData = signal<Record<string, any>>({});\n @Input() public set prefillData(value: Record<string, any | null> | null) {\n this.$prefillData.set(value ?? {});\n }\n\n public readonly $selectItems = computed(() =>\n this.$fields()\n .filter(field => field?.dropdownList)\n .reduce((acc: Record<string, SelectItem[]>, field) => {\n acc[field.key] = field.dropdownList.map(item => ({\n id: item.first,\n text: item.second,\n }));\n return acc;\n }, {})\n );\n\n private readonly combined = computed(() => ({\n prefill: this.$prefillData(),\n fields: this.$fields(),\n }));\n\n private readonly _effect = effect(() => {\n const {prefill, fields} = this.combined();\n this.mapPrefillDataToForm(prefill, fields);\n });\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Information16]);\n }\n\n public getFa(key: string): FormArray {\n return this.propertiesFormGroup.get(key) as FormArray;\n }\n\n public onAddKeyValue(key: string, required?: boolean) {\n this.addKeyValue(this.getFa(key), this.fb, required);\n }\n\n public onDeleteRowClick(key: string, index: number) {\n this.getFa(key).removeAt(index);\n }\n\n public applyPropertyControls(\n fb: FormBuilder,\n propertiesGroup: FormGroup,\n fields: PropertyField[]\n ): void {\n fields.forEach(field => {\n if (propertiesGroup.contains(field.key)) return;\n\n switch (field.type) {\n case 'text':\n case 'url':\n case 'integer':\n case 'dropdown':\n propertiesGroup.addControl(\n field.key,\n fb.control('', field.required ? [Validators.required] : [])\n );\n break;\n case 'keyValueList':\n propertiesGroup.addControl(\n field.key,\n fb.array([\n fb.group({\n key: fb.control('', Validators.required),\n value: fb.control('', Validators.required),\n }),\n ])\n );\n break;\n }\n });\n }\n\n public getControlInvalid(controlKey: string): boolean {\n const control: AbstractControl | null = this.propertiesFormGroup.get(controlKey);\n\n if (!control) {\n return true;\n }\n\n return !control.valid && !control.pristine;\n }\n\n private mapPrefillDataToForm(\n prefillData: Record<string, any>,\n propertyFields: PropertyField[]\n ): void {\n if (!prefillData || !this.propertiesFormGroup) return;\n\n propertyFields.forEach((field: PropertyField) => {\n if (field.type === 'keyValueList') {\n const keyValueList = !prefillData[field.key]\n ? [{key: '', value: ''}]\n : Array.isArray(prefillData[field.key])\n ? prefillData[field.key]\n : Object.entries(prefillData[field.key]).map(([key, value]) => ({\n key,\n value,\n }));\n this.getFa(field.key).clear();\n keyValueList.forEach(item => this.onAddKeyValue(field.key, field.required));\n prefillData[field.key] = keyValueList;\n }\n });\n\n this.propertiesFormGroup.patchValue(prefillData);\n }\n\n private addKeyValue(arr: FormArray, fb: FormBuilder, required?: boolean) {\n arr.push(\n fb.group({\n key: fb.control('', required ? Validators.required : []),\n value: fb.control('', required ? Validators.required : []),\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<form [formGroup]=\"propertiesFormGroup\">\n @for (propertyField of $fields(); track propertyField.key) {\n @switch (true) {\n @case (\n propertyField.type === 'text' ||\n propertyField.type === 'url' ||\n propertyField.type === 'integer'\n ) {\n <cds-label>\n {{ propertyField.title }}\n @if (propertyField.tooltip) {\n <cds-tooltip [caret]=\"true\" [description]=\"propertyField.tooltip\">\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n }\n <input\n [formControlName]=\"propertyField.key\"\n cdsText\n cdsLayer\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n }\n @case (propertyField.type === 'dropdown') {\n @if (propertyField?.dropdownList) {\n <v-select\n [invalid]=\"getControlInvalid(propertyField.key)\"\n [formControlName]=\"propertyField.key\"\n [items]=\"$selectItems()[propertyField.key]\"\n [title]=\"propertyField.title\"\n [tooltip]=\"propertyField.tooltip\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n ></v-select>\n }\n }\n @case (propertyField.type === 'keyValueList') {\n <div [formArrayName]=\"propertyField.key\">\n @for (keyValueControl of getFa(propertyField.key)?.controls; track keyValueControl) {\n <cds-text-label>\n {{ propertyField.title }}\n @if (propertyField.tooltip) {\n <cds-tooltip [caret]=\"true\" [description]=\"propertyField.tooltip\">\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n }\n\n <fieldset [formGroupName]=\"$index\">\n <input\n formControlName=\"key\"\n cdsText\n cdsLayer\n [placeholder]=\"'interface.key' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n <input\n formControlName=\"value\"\n cdsText\n cdsLayer\n [placeholder]=\"'interface.value' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"onDeleteRowClick(propertyField.key, $index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </fieldset>\n </cds-text-label>\n }\n\n <button\n cdsButton=\"primary\"\n (click)=\"onAddKeyValue(propertyField.key, propertyField.required)\"\n >\n Add Key Value\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n }\n }\n</form>\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n runAfterCarbonModalClosed,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LayerModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, filter, map, Observable, startWith, switchMap, tap} from 'rxjs';\nimport {PropertyField, IkoRepositoryConfigResponse} from '../../../models';\nimport {IkoManagementApiService} from '../../../services';\nimport {PropertiesFormComponent} from '../../iko-management-properties/iko-management-properties.component';\nimport {ConfigService, ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-repository-modal',\n templateUrl: './iko-management-repository-modal.component.html',\n styleUrl: './iko-management-repository-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n PropertiesFormComponent,\n SelectModule,\n LayerModule,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementRepositoryModalComponent {\n private readonly _open$ = new BehaviorSubject<boolean>(false);\n @Input() public set open(value: boolean) {\n this._open$.next(value);\n\n if (!value) this.resetForm();\n }\n public get open$(): Observable<boolean> {\n return this._open$.asObservable();\n }\n\n public readonly $prefillData = signal<IkoRepositoryConfigResponse | null>(null);\n @Input() public set prefillData(value: IkoRepositoryConfigResponse | null) {\n this.$prefillData.set(value);\n this.formGroup.patchValue(value);\n }\n\n private _modalMode: ModalMode;\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n @Output() public readonly modalClose = new EventEmitter<any | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public enableIkoType = false;\n public readonly disabled$ = new BehaviorSubject(true);\n private readonly _ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();\n\n public readonly usedKeys$ = this.ikoManagementApiService\n .getIkoRepositoryConfigs()\n .pipe(map(response => response.content.map(c => c.key)));\n\n public readonly ikoRepositoryTypeSelectItems$: Observable<SelectItem[]> =\n this._ikoRepositoryTypes$.pipe(\n map(types => Object.keys(types).map(typeKey => ({id: typeKey, text: types[typeKey]}))),\n tap(() => {\n this.disabled$.next(false);\n })\n );\n public formGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', Validators.required),\n type: this.fb.control('', Validators.required),\n properties: this.fb.group({}, Validators.required),\n });\n\n public readonly propertyFields$: Observable<PropertyField[]> = this.formGroup\n .get('type')\n .valueChanges.pipe(\n startWith(this.formGroup.get('type').value),\n tap(_ => this.formGroup.patchValue({properties: {}})),\n filter(type => !!type && !Array.isArray(type)),\n switchMap(type => this.ikoManagementApiService.getIkoRepositoryPropertyFields(type))\n );\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly configService: ConfigService\n ) {\n this.enableIkoType = this.configService.getFeatureToggle('enableIkoType');\n }\n\n public get properties(): FormGroup | null {\n const properties = this.formGroup.get('properties');\n return !properties ? null : (properties as FormGroup);\n }\n\n public onCancel(): void {\n this.modalClose.emit(null);\n }\n\n public onSave(): void {\n this.modalClose.emit(this.formGroup.getRawValue());\n }\n\n public getControlInvalid(controlKey: string): boolean {\n if (controlKey === 'type' && !this.enableIkoType) {\n return false;\n }\n\n const control: AbstractControl | null = this.formGroup.get(controlKey);\n\n if (!control) {\n return true;\n }\n\n return !control.valid && !control.pristine;\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>{{ 'ikoManagement.configureIkoServer' | translate }}</h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"formGroup\" class=\"iko-api-form\">\n <cds-label [invalid]=\"getControlInvalid('title')\">\n {{ 'ikoManagement.titleTitle' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('title')\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'ikoManagement.titlePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys$ | async\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n\n @if (enableIkoType) {\n <v-select\n [invalid]=\"getControlInvalid('type')\"\n formControlName=\"type\"\n [disabled]=\"!enableIkoType\"\n [items]=\"ikoRepositoryTypeSelectItems$ | async\"\n [title]=\"'ikoManagement.typeTitle' | translate\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n ></v-select>\n }\n\n <valtimo-iko-management-properties\n [propertiesFormGroup]=\"properties\"\n [fields]=\"propertyFields$ | async\"\n [prefillData]=\"$prefillData()?.properties\"\n />\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"formGroup.invalid\" cdsButton=\"primary\" (click)=\"onSave()\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n PageTitleService,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {IkoManagementApiService} from '../../services';\nimport {BehaviorSubject, Observable, switchMap, take, tap} from 'rxjs';\nimport {Router} from '@angular/router';\nimport {map} from 'rxjs/operators';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LayerModule,\n ModalModule,\n TabsModule,\n} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n IkoViewResponse,\n IkoRepositoryConfigListResponse,\n IkoRepositoryConfigResponse,\n} from '../../models';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {IkoManagementRepositoryModalComponent} from './repository-modal/iko-management-repository-modal.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-api',\n standalone: true,\n templateUrl: './iko-management-api.component.html',\n imports: [\n CommonModule,\n CarbonListModule,\n TabsModule,\n TranslateModule,\n ModalModule,\n ButtonModule,\n IconModule,\n FormsModule,\n InputModule,\n ReactiveFormsModule,\n ValtimoCdsModalDirective,\n LayerModule,\n SelectModule,\n ConfirmationModalModule,\n IkoManagementRepositoryModalComponent,\n ],\n styleUrl: './iko-management-api.component.scss',\n})\nexport class IkoManagementApiComponent implements OnInit, OnDestroy {\n public readonly $modalOpen = signal<boolean>(false);\n public readonly $prefillData = signal<any | null>(null);\n public readonly $keyToDelete = signal<string | null>(null);\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly disabled$ = new BehaviorSubject(true);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n private readonly _reload$ = new BehaviorSubject<null>(null);\n\n public readonly apiConfigs$ = this._reload$.pipe(\n switchMap(() => this.ikoManagementApiService.getIkoRepositoryConfigs()),\n map(res => res.content),\n tap(() => this.loading$.next(false))\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'ikoManagement.ikoServer',\n },\n ];\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onEditClick.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClick.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();\n public readonly ikoRepositoryTypeSelectItems$: Observable<SelectItem[]> =\n this._ikoRepositoryTypes$.pipe(\n map(types => Object.keys(types).map(typeKey => ({id: typeKey, text: types[typeKey]}))),\n tap(() => {\n this.disabled$.next(false);\n })\n );\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public onRowClicked(event: IkoRepositoryConfigListResponse): void {\n this.router.navigate(['iko-management', event.key]);\n }\n\n public openModal(): void {\n this.$modalMode.set('add');\n this.$modalOpen.set(true);\n }\n\n public closeModal(item: IkoRepositoryConfigResponse | null): void {\n this.$modalOpen.set(false);\n this.disable();\n this.$prefillData.set(null);\n if (!item) return;\n\n let saveObservable;\n if (this.$modalMode() === 'edit') {\n saveObservable = this.ikoManagementApiService.updateIkoRepositoryConfig(item.key, item);\n } else {\n saveObservable = this.ikoManagementApiService.createIkoRepositoryConfig(item.key, item);\n }\n\n saveObservable.pipe(take(1)).subscribe({\n next: () => {\n this.enable();\n this.reload();\n },\n error: () => this.enable(),\n });\n }\n\n public onEditClick(item: IkoViewResponse): void {\n this.$modalMode.set('edit');\n this.$prefillData.set(item);\n this.$modalOpen.set(true);\n }\n\n public onDeleteClick(item: IkoViewResponse): void {\n this.$keyToDelete.set(item.key);\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(key: string): void {\n this.ikoManagementApiService\n .deleteIkoRepositoryConfig(key)\n .subscribe(() => this._reload$.next(null));\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private reload(): void {\n this.loading$.next(true);\n this._reload$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [items]=\"apiConfigs$ | async\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addViewButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addViewButton\"\n [description]=\"'ikoManagement.views.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.views.noResultsTitle' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #addViewButton>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'ikoManagement.addApiConfig' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-iko-management-repository-modal\n [open]=\"$modalOpen()\"\n [prefillData]=\"$prefillData()\"\n [modalMode]=\"$modalMode()\"\n (modalClose)=\"closeModal($event)\"\n></valtimo-iko-management-repository-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.views.deleteContent\"\n [outputOnConfirm]=\"$keyToDelete()\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Page} from '@valtimo/shared';\n\ninterface IkoView {\n key: string;\n title: string;\n}\n\ninterface IkoSearchActionUser {\n key: string;\n title: string;\n searchFields: SearchFieldV2[];\n}\n\ninterface SearchFieldV2 {\n id: string;\n ownerId: string;\n ownerType: string;\n key: string;\n title?: string;\n path: string;\n order: number;\n dataType: string;\n fieldType: string;\n matchType?: string;\n dropdownDataProvider?: string;\n}\n\ninterface IkoListHeader {\n key: string;\n title: string;\n displayType: {\n type: string;\n displayTypeParameters: object;\n };\n sortable: boolean;\n defaultSort: null | 'ASC' | 'DESC';\n}\n\ninterface IkoListItem {\n key: string;\n value: string;\n}\n\ninterface IkoListResponse {\n headers: IkoListHeader[];\n rows: Page<{items: IkoListItem[]}>;\n}\n\ntype IkoComponentType = 'widgets';\n\ninterface IkoTab {\n key: string;\n title: string;\n type: IkoComponentType;\n}\n\nexport {\n IkoView,\n IkoSearchActionUser,\n SearchFieldV2,\n IkoListHeader,\n IkoListItem,\n IkoListResponse,\n IkoComponentType,\n IkoTab,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface IkoMenuItem {\n title: string;\n profile: {\n url: string;\n identifierColumn: string;\n };\n queryParams: (QueryParam | QueryParamGroup)[];\n}\n\ninterface QueryParam {\n placeholder: string;\n title: string;\n key: string;\n}\n\ninterface QueryParamGroup {\n group: true;\n fields: QueryParam[];\n}\n\nexport {IkoMenuItem};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface IkoWidgetParams {\n ikoViewKey: string;\n entryId: string;\n tabKey: string;\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Type} from '@angular/core';\n\ninterface IkoViewCreateRequest {\n ikoRepositoryConfigKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoViewUpdateRequest {\n ikoRepositoryConfigKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoViewListResponse {\n key: string;\n title: string;\n}\n\ninterface IkoViewResponse {\n key: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoSearchActionCreateRequest {\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoSearchActionUpdateRequest {\n key: string;\n ikoViewKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoManagementParams {\n apiKey: string;\n aggregateKey: string;\n actionKey: string;\n tabKey: string;\n widgetTabKey?: string;\n}\n\ninterface IkoSearchActionResponse {\n key: string;\n ikoViewKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoRepositoryConfigCreateRequest {\n title: string;\n key: string;\n type: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoRepositoryConfigUpdateRequest {\n title: string;\n type: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoRepositoryConfigListResponse {\n key: string;\n title: string;\n type: string;\n}\n\ninterface IkoRepositoryConfigResponse {\n key: string;\n title: string;\n type: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoTabCreateRequest {\n title: string;\n type: string;\n}\n\ninterface IkoTabUpdateRequest {\n key: string;\n title: string;\n type: string;\n}\n\ninterface TabDto {\n key: string;\n title?: string;\n type: string;\n}\n\ntype PropertyFieldType = 'text' | 'keyValueList' | 'integer' | 'dropdown' | 'url';\n\ninterface PropertyField {\n key: string;\n required: boolean;\n title: string;\n tooltip: string;\n type: PropertyFieldType;\n dropdownList: {\n first: string;\n second: string;\n }[];\n}\n\ninterface WidgetAction {\n key: string;\n label: string;\n type: string;\n // Add more fields as necessary if known\n}\n\ninterface WidgetDto {\n key: string;\n title: string;\n width: number;\n highContrast: boolean;\n actions?: WidgetAction[];\n type: string;\n}\n\nenum IkoManagementTabType {\n LIST = 'list',\n SEARCH_FIELDS = 'search',\n WIDGETS = 'widgets',\n TABS = 'tabs',\n}\n\ninterface IkoManagementTab {\n key: IkoManagementTabType;\n title: string;\n component: Type<any>;\n}\n\ninterface IkoSearchField {\n key: string;\n title: string;\n fieldType: string;\n order: number;\n ikoViewKey: string;\n ikoSearchActionKey: string;\n dropdownList?: [string, string][];\n required?: boolean;\n visible?: boolean;\n [key: string]: any;\n}\n\ninterface IkoSearchFieldCreateRequest {\n title: string;\n fieldType: string;\n dropdownList?: [string, string][];\n required?: boolean;\n visible?: boolean;\n}\n\nenum IkoTabType {\n WIDGETS = 'widgets',\n}\n\nexport {\n IkoViewCreateRequest,\n IkoViewListResponse,\n IkoViewResponse,\n IkoViewUpdateRequest,\n IkoSearchActionCreateRequest,\n IkoSearchActionResponse,\n IkoSearchActionUpdateRequest,\n IkoManagementParams,\n IkoManagementTab,\n IkoManagementTabType,\n IkoRepositoryConfigCreateRequest,\n IkoRepositoryConfigListResponse,\n IkoRepositoryConfigResponse,\n IkoRepositoryConfigUpdateRequest,\n IkoSearchField,\n IkoSearchFieldCreateRequest,\n IkoTabCreateRequest,\n IkoTabType,\n IkoTabUpdateRequest,\n PropertyField,\n PropertyFieldType,\n TabDto,\n WidgetAction,\n WidgetDto,\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\ntype ColumnDefaultSort = 'ASC' | 'DESC';\n\ninterface DisplayType {\n type: string;\n displayTypeParameters: Record<string, any>;\n}\n\ninterface ListColumnDto {\n id?: string;\n key: string;\n title?: string;\n path: string;\n displayType: DisplayType;\n sortable: boolean;\n defaultSort?: ColumnDefaultSort;\n order: number;\n}\n\ninterface IkoListColumnRequest {\n key: string;\n title?: string;\n path: string;\n displayType?: DisplayType;\n sortable?: boolean;\n defaultSort?: ColumnDefaultSort;\n order?: number;\n}\n\nexport {IkoListColumnRequest, ListColumnDto, DisplayType, ColumnDefaultSort};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum SearchFieldDataType {\n TEXT = 'text',\n NUMBER = 'number',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n BOOLEAN = 'boolean',\n BSN = 'bsn',\n}\n\nenum SearchFieldFieldType {\n SINGLE = 'single',\n RANGE = 'range',\n SINGLE_SELECT_DROPDOWN = 'single-select-dropdown',\n MULTI_SELECT_DROPDOWN = 'multi-select-dropdown',\n}\n\nenum SearchFieldMatchType {\n LIKE = 'like',\n EXACT = 'exact',\n}\n\nenum SearchDropdownDataProvider {\n DATABASE = 'dropdownDatabaseDataProvider',\n JSON = 'dropdownJsonFileDataProvider',\n}\n\ninterface SearchField {\n id: string;\n ownerId: string;\n dataType: SearchFieldDataType;\n fieldType: SearchFieldFieldType;\n key: string;\n title?: string;\n path: string;\n order: number;\n matchType: SearchFieldMatchType;\n dropdownDataProvider?: string;\n dropdownValues?: SearchDropdownValue;\n}\n\ninterface SearchDropdownValue {\n [key: string]: string;\n}\n\nexport {\n SearchDropdownDataProvider,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n SearchField,\n SearchDropdownValue,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko.model';\nexport * from './iko-menu.model';\nexport * from './iko-widget.model';\nexport * from './iko-management.model';\nexport * from './iko-management-list.model';\nexport * from './iko-search-field.model';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n ReactiveFormsModule,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {InformationFilled16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ColumnConfig,\n InputLabelModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorPrefix,\n ViewType,\n AutoKeyInputComponent,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DropdownModule,\n IconService,\n InputModule,\n LayerModule,\n ListItem,\n ModalModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n} from 'rxjs';\nimport {\n IkoSearchField,\n SearchDropdownDataProvider,\n SearchDropdownValue,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '../../../../../models';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-search-field-modal',\n templateUrl: './search-field-modal.component.html',\n styleUrl: './search-field-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonModule,\n CommonModule,\n DropdownModule,\n InputLabelModule,\n InputModule,\n LayerModule,\n ModalModule,\n ReactiveFormsModule,\n TranslateModule,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementSearchFieldModalComponent implements OnInit {\n @Input({required: true}) open: boolean;\n\n @Input() public usedKeys: string[] = [];\n\n private _modalMode: ModalMode = 'add';\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n public readonly $selectedKey = signal<string>('');\n private _prefillData: IkoSearchField | null;\n @Input() public set prefillData(value: IkoSearchField | null) {\n this._prefillData = value;\n this.$selectedKey.set(value?.key);\n this.setPrefilledForm(value);\n }\n public get prefillData(): IkoSearchField | null {\n return this._prefillData;\n }\n @Output() closeEvent = new EventEmitter<Partial<IkoSearchField> | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public readonly formGroup = this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n title: this.fb.control<string>('', Validators.required),\n path: this.fb.control<string>('', Validators.required),\n dataType: this.fb.control<ListItem | null>(null, Validators.required),\n matchType: this.fb.control<ListItem | null>(null, this.matchTypeValidator),\n fieldType: this.fb.control<ListItem | null>(null, Validators.required),\n dropdownDataProvider: this.fb.control<ListItem | null>(null),\n dropdownValues: this.fb.array<{key: string; value: string}>([]),\n });\n\n public get dataType(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('dataType');\n }\n public get dataTypeValue$(): Observable<ListItem | null> {\n return this.dataType?.valueChanges.pipe(startWith(this.dataType.value)) ?? of(null);\n }\n\n public get matchType(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('matchType');\n }\n public get matchTypeValue$(): Observable<ListItem | null> {\n return this.matchType?.valueChanges.pipe(startWith(this.matchType.value)) ?? of(null);\n }\n\n public get dropdownDataProvider(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('dropdownDataProvider');\n }\n\n public get dropdownDataProviderValue$(): Observable<ListItem | null> {\n return (\n this.dropdownDataProvider?.valueChanges.pipe(startWith(this.dropdownDataProvider.value)) ??\n of(null)\n );\n }\n\n public get fieldType(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('fieldType');\n }\n public get fieldTypeValue$(): Observable<ListItem | null> {\n return this.fieldType?.valueChanges.pipe(startWith(this.fieldType.value)) ?? of(null);\n }\n\n public readonly SearchFieldDataType = SearchFieldDataType;\n public readonly SearchFieldFieldType = SearchFieldFieldType;\n public readonly SearchDropdownDataProvider = SearchDropdownDataProvider;\n\n public get keyValue(): string | null {\n const controlValue = this.formGroup.get('key')?.value;\n\n return !controlValue ? null : controlValue;\n }\n\n public get dataTypeValue(): string | null {\n const controlValue = this.formGroup.get('dataType')?.value;\n this._dataTypeValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get fieldTypeValue(): string | null {\n const controlValue = this.formGroup.get('fieldType')?.value;\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownDataProviderValue(): string | null {\n const controlValue = this.formGroup.get('dropdownDataProvider')?.value;\n this._dropdownProviderValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownValuesArray(): FormArray | null {\n const formArray = this.formGroup.get('dropdownValues');\n\n return !formArray ? null : (formArray as FormArray);\n }\n\n public readonly DROPDOWN_FIELDS: ColumnConfig[] = [\n {\n key: 'key',\n label: 'searchFieldsOverview.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'value',\n label: 'searchFieldsOverview.text',\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _dataTypeValue$ = new BehaviorSubject<SearchFieldDataType | null | undefined>(\n null\n );\n\n private readonly _dropdownProviderValue$ = new BehaviorSubject<\n SearchDropdownDataProvider | null | undefined\n >(null);\n\n public readonly dataTypeItems$: Observable<ListItem[]> = combineLatest([\n this.dataTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFields.text'),\n id: SearchFieldDataType.TEXT,\n },\n {\n content: this.translateService.instant('searchFields.boolean'),\n id: SearchFieldDataType.BOOLEAN,\n },\n {\n content: this.translateService.instant('searchFields.date'),\n id: SearchFieldDataType.DATE,\n },\n {\n content: this.translateService.instant('searchFields.datetime'),\n id: SearchFieldDataType.DATETIME,\n },\n {\n content: this.translateService.instant('searchFields.number'),\n id: SearchFieldDataType.NUMBER,\n },\n {\n content: this.translateService.instant('searchFields.time'),\n id: SearchFieldDataType.TIME,\n },\n {\n content: this.translateService.instant('searchFields.bsn'),\n id: SearchFieldDataType.BSN,\n },\n ].map(item => ({...item, selected: item.id === dataTypeValue?.id}))\n )\n );\n\n public readonly fieldTypeItems$: Observable<ListItem[]> = combineLatest([\n this._dataTypeValue$.pipe(distinctUntilChanged()),\n this.fieldTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue, fieldTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.single'),\n id: SearchFieldFieldType.SINGLE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.range'),\n id: SearchFieldFieldType.RANGE,\n },\n ...(dataTypeValue === SearchFieldDataType.TEXT\n ? [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.single-select-dropdown'\n ),\n id: SearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n },\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.multi-select-dropdown'\n ),\n id: SearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n },\n ]\n : []),\n ].map(item => ({...item, selected: item.id === fieldTypeValue?.id}))\n )\n );\n\n public readonly dataProviderItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.dropdownDataProviderValue$),\n map(dataProviderValue =>\n [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.dropdownDatabaseDataProvider'\n ),\n id: SearchDropdownDataProvider.DATABASE,\n },\n ].map(item => ({...item, selected: item.id === dataProviderValue?.id}))\n )\n );\n\n public readonly matchTypeItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.matchTypeValue$),\n map(matchTypeValue =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.like'),\n id: SearchFieldMatchType.LIKE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.exact'),\n id: SearchFieldMatchType.EXACT,\n },\n ].map(item => ({...item, selected: item.id === matchTypeValue?.id}))\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly iconService: IconService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([TrashCan16, InformationFilled16]);\n }\n\n public ngOnInit(): void {\n this.formGroup.setValidators([\n this.dropdownDataProviderValidator,\n this.dropdownValuesValidator,\n ]);\n }\n\n public addDropdownValue(prefillValue?: {key: string; value: string}): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.push(\n this.fb.group({\n key: this.fb.control(prefillValue?.key ?? '', Validators.required),\n value: this.fb.control(prefillValue?.value ?? '', Validators.required),\n })\n );\n }\n\n public removeDropdownValue(index: number): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.removeAt(index);\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onSave(): void {\n const groupValue = this.formGroup.getRawValue();\n this.closeEvent.emit({\n ...(groupValue.title && {title: groupValue.title}),\n ...(groupValue.key && {key: groupValue.key}),\n ...(groupValue.path && {path: groupValue.path}),\n ...(groupValue.dataType?.content && {dataType: groupValue.dataType.id}),\n ...(groupValue.matchType?.content && {matchType: groupValue.matchType.id}),\n ...(groupValue.fieldType?.content && {fieldType: groupValue.fieldType.id}),\n ...(groupValue.dropdownDataProvider?.content && {\n dropdownDataProvider: groupValue.dropdownDataProvider.id,\n }),\n ...(groupValue.dropdownValues && {\n dropdownValues: groupValue.dropdownValues.reduce(\n (acc, curr) => ({...acc, ...(!!curr?.key && {[curr.key]: curr.value})}),\n {}\n ),\n }),\n });\n\n this.resetForm();\n }\n\n private setPrefilledForm(prefillData: IkoSearchField | null): void {\n if (!prefillData) return;\n\n this.formGroup.patchValue({\n ...prefillData,\n dataType: !prefillData.dataType\n ? null\n : {\n content: prefillData.dataType,\n id: prefillData.dataType,\n selected: true,\n },\n matchType: !prefillData.matchType\n ? null\n : {\n content: prefillData.matchType,\n id: prefillData.matchType,\n selected: true,\n },\n fieldType: !prefillData.fieldType\n ? null\n : {\n content: prefillData.fieldType,\n id: prefillData.fieldType,\n selected: true,\n },\n dropdownDataProvider: !prefillData.dropdownDataProvider\n ? null\n : {\n content: prefillData.dropdownDataProvider,\n id: prefillData.dropdownDataProvider,\n selected: true,\n },\n dropdownValues: [],\n });\n\n if (prefillData.dropdownDataProvider && prefillData.dropdownValues)\n this.setPrefilledDropdownValues(prefillData.dropdownValues);\n this.formGroup.get('key')?.disable();\n }\n\n private setPrefilledDropdownValues(dropdownValue: SearchDropdownValue): void {\n if (!this.dropdownValuesArray || !this.dropdownDataProviderValue) return;\n\n Object.entries(dropdownValue).forEach(([key, value]) => {\n this.addDropdownValue({key, value});\n });\n }\n\n private matchTypeValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n const dataTypeControlValue: ListItem | null | undefined =\n control.parent?.get('dataType')?.value;\n\n if (\n dataTypeControlValue?.id === SearchFieldDataType.TEXT &&\n (!controlValue || !controlValue.selected)\n )\n return {error: 'Match type not selected'};\n\n return null;\n }\n\n private dropdownDataProviderValidator(group: typeof this.formGroup): ValidationErrors | null {\n const controlValue: ListItem | undefined | null = group.get('dropdownDataProvider')?.value;\n const fieldTypeControlValue: ListItem | null | undefined = group.get('fieldType')?.value;\n\n if (\n [\n SearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n SearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue?.id) &&\n !controlValue\n )\n return {error: 'Dropdown source provider is not specified'};\n\n return null;\n }\n\n private dropdownValuesValidator(group: typeof this.formGroup): ValidationErrors | null {\n const controlValue: ({key: string; value: string} | null)[] | undefined =\n group.get('dropdownValues')?.value;\n const fieldTypeControlValue = group.get('fieldType')?.value?.id;\n const dropdownProviderValue = group.get('dropdownDataProvider')?.value?.id;\n\n if (\n [\n SearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n SearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue) &&\n (!controlValue || controlValue?.length === 0) &&\n dropdownProviderValue === SearchDropdownDataProvider.DATABASE\n )\n return {error: 'Dropdown source provider is not specified or is empty'};\n\n return null;\n }\n\n private resetForm(): void {\n setTimeout(() => {\n while (!!this.dropdownValuesArray?.length) {\n this.dropdownValuesArray.removeAt(0);\n }\n this.formGroup.reset();\n this.formGroup.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [formGroup]=\"formGroup\" class=\"valtimo-search-fields-modal__content\">\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.title' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input-label>\n\n <input data-testid=\"-search-title\" cdsText type=\"text\" formControlName=\"title\" cdsLayer />\n </div>\n\n <div class=\"valtimo-search-fields-modal__input\">\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n data-testid=\"iko-search-key\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n </div>\n\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input-label>\n\n <input cdsLayer data-testid=\"iko-search-key\" cdsText type=\"text\" formControlName=\"path\" />\n\n <!-- TODO: When BE value resolver is in place -->\n <!-- <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n ></valtimo-value-path-selector> -->\n </div>\n\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown cdsLayer data-testid=\"-search-dataType\" formControlName=\"dataType\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dataTypeValue === SearchFieldDataType.TEXT) {\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown cdsLayer data-testid=\"-search-matchType\" formControlName=\"matchType\">\n <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n }\n\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown cdsLayer data-testid=\"-search-fieldType\" formControlName=\"fieldType\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (\n dataTypeValue === SearchFieldDataType.TEXT &&\n (fieldTypeValue === SearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n fieldTypeValue === SearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n ) {\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n data-testid=\"-search-dropdownDataProvider\"\n formControlName=\"dropdownDataProvider\"\n cdsLayer\n >\n <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dropdownDataProviderValue === SearchDropdownDataProvider.DATABASE) {\n <div class=\"valtimo-search-fields-modal__list\" formArrayName=\"dropdownValues\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n [noMargin]=\"true\"\n >\n </v-input-label>\n\n @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n <form [formGroup]=\"dropdownValue\" class=\"valtimo-search-fields-modal__dropdown-values\">\n <cds-text-label>\n {{ 'interface.value' | translate }}\n\n <input\n data-testid=\"iko-search-dropdownKey\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n cdsLayer\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'interface.display' | translate }}\n\n <input\n data-testid=\"-search-dropdownValue\"\n cdsText\n type=\"text\"\n formControlName=\"value\"\n cdsLayer\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger\"\n data-testid=\"iko-search-deleteEnum\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"removeDropdownValue($index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n data-testid=\"-search-addDropdownValue\"\n cdsButton=\"primary\"\n (click)=\"addDropdownValue()\"\n >\n {{ 'interface.addRow' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n }\n }\n </form>\n\n <cds-modal-footer>\n <button data-testid=\"-search-cancel\" cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"onSave()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {ActivatedRoute, Params} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n BreadcrumbService,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n PageTitleService,\n ViewType,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n IkoSearchActionResponse,\n IkoManagementParams,\n IkoRepositoryConfigResponse,\n IkoSearchField,\n SearchDropdownValue,\n SearchFieldFieldType,\n} from '../../../../models';\nimport {IkoManagementApiService} from '../../../../services';\nimport {IkoManagementSearchFieldModalComponent} from './search-field-modal/search-field-modal.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-search-fields',\n templateUrl: './iko-management-search-fields.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ButtonModule,\n CarbonListModule,\n CommonModule,\n ConfirmationModalModule,\n IconModule,\n TranslateModule,\n IkoManagementSearchFieldModalComponent,\n ],\n})\nexport class IkoManagementSearchFieldsComponent implements OnInit, OnDestroy {\n public readonly $modalMode = signal<ModalMode>('add');\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly params$: Observable<IkoManagementParams> = this.route.params.pipe(\n map((params: Params) => ({\n apiKey: params.apiKey,\n aggregateKey: params.key,\n actionKey: params.actionKey,\n tabKey: params.tabKey,\n }))\n );\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n public readonly searchFields$: Observable<IkoSearchField[]> = combineLatest([\n this.params$,\n this.translateService.stream('key'),\n this._refresh$,\n ]).pipe(\n switchMap(([params]) =>\n this.ikoManagementApiService.getIkoSearchFields(params.aggregateKey, params.actionKey)\n ),\n map((searchFields: IkoSearchField[]) =>\n searchFields.map((field: IkoSearchField) => ({\n ...field,\n dataTypeText: this.translateService.instant(`searchFields.${field.dataType}`),\n fieldTypeText: this.translateService.instant(`searchFieldsOverview.${field.fieldType}`),\n }))\n ),\n tap(content => {\n const keys = content?.map(item => item.key) ?? [];\n this.usedKeys$.next(keys);\n this.loading$.next(false);\n })\n );\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly deleteField$ = new BehaviorSubject<IkoSearchField | null>(null);\n public readonly fieldModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly prefillData$ = new BehaviorSubject<IkoSearchField | null>(null);\n\n private readonly _searchAction$: Observable<IkoSearchActionResponse> = this.params$.pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) =>\n this.ikoManagementApiService.getIkoSearchAction(params.aggregateKey, params.actionKey)\n )\n );\n private readonly _ikoRepositoryConfig$: Observable<IkoRepositoryConfigResponse> =\n this.params$.pipe(\n switchMap((params: IkoManagementParams) =>\n this.ikoManagementApiService.getIkoRepositoryConfig(params.apiKey)\n )\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'path',\n label: 'searchFieldsOverview.path',\n viewType: ViewType.TEXT,\n },\n {\n key: 'dataTypeText',\n label: 'searchFieldsOverview.dataType',\n viewType: ViewType.TEXT,\n },\n {\n key: 'fieldTypeText',\n label: 'searchFieldsOverview.fieldType',\n viewType: ViewType.TEXT,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editSearchField.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteSearchField.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.setBreadcrumbs();\n this._subscriptions.add(\n combineLatest([this._searchAction$, this.translateService.stream('key')]).subscribe(\n ([searchAction]) => {\n this.pageTitleService.setCustomPageTitle(\n this.translateService.instant('ikoManagement.searchFields.pageTitle', {\n searchActionTitle: searchAction.title,\n }),\n true\n );\n }\n )\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public onItemsReordered(\n searchFields: IkoSearchField[],\n params: {aggregateKey: string; actionKey: string}\n ): void {\n this.ikoManagementApiService\n .updateIkoSearchFields(params.aggregateKey, params.actionKey, searchFields)\n .pipe(take(1))\n .subscribe();\n }\n\n public openAddModal(): void {\n this.$modalMode.set('add');\n this.fieldModalOpen$.next(true);\n }\n\n public deleteSearchField(field: IkoSearchField): void {\n this.deleteField$.next(field);\n this.deleteModalOpen$.next(true);\n }\n\n public editSearchField(field: IkoSearchField): void {\n if (!!field.dropdownDataProvider) {\n this.params$\n .pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) =>\n this.ikoManagementApiService.getDropdownData(\n field.dropdownDataProvider,\n params.aggregateKey,\n params.actionKey,\n field.key\n )\n ),\n take(1)\n )\n .subscribe(dropdownValues => {\n field.dropdownValues = dropdownValues as SearchDropdownValue;\n this.prefillData$.next(field);\n this.fieldModalOpen$.next(true);\n });\n\n return;\n }\n this.$modalMode.set('edit');\n this.prefillData$.next(field);\n this.fieldModalOpen$.next(true);\n }\n\n public onDeleteSearchField(field: IkoSearchField): void {\n this.params$\n .pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) => {\n const dropdown$ = field.dropdownDataProvider\n ? this.ikoManagementApiService\n .deleteDropdownData(\n field.dropdownDataProvider,\n params.aggregateKey,\n params.actionKey,\n field.key\n )\n .pipe(map(result => ({params, dropdownResult: result})))\n : of({params, dropdownResult: null});\n\n return dropdown$.pipe(\n switchMap(({params}) =>\n this.ikoManagementApiService.deleteIkoSearchField(\n params.aggregateKey,\n params.actionKey,\n field.key\n )\n )\n );\n })\n )\n .subscribe(() => this._refresh$.next(null));\n\n this.prefillData$.next(null);\n }\n\n public onModalClose(field: IkoSearchField | null): void {\n this.fieldModalOpen$.next(false);\n this.prefillData$.next(null);\n if (!field) return;\n\n const hasDropdownValues: boolean =\n field.fieldType === SearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n field.fieldType === SearchFieldFieldType.MULTI_SELECT_DROPDOWN;\n\n this.params$\n .pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) => {\n const save$ =\n this.$modalMode() === 'add'\n ? this.ikoManagementApiService.createIkoSearchField(\n params.aggregateKey,\n params.actionKey,\n field.key,\n field\n )\n : this.ikoManagementApiService.updateIkoSearchField(\n params.aggregateKey,\n params.actionKey,\n field.key,\n field\n );\n\n return save$.pipe(map(result => ({result, params})));\n }),\n switchMap(({result, params}) => {\n if (!hasDropdownValues) return of(result);\n\n return this.ikoManagementApiService.postDropdownData(\n field.dropdownDataProvider ?? '',\n params.aggregateKey,\n params.actionKey,\n field.key,\n field.dropdownValues ?? {}\n );\n })\n )\n .subscribe(() => this._refresh$.next(null));\n }\n\n private setBreadcrumbs(): void {\n combineLatest([\n this._ikoRepositoryConfig$,\n this.params$,\n this.translateService.stream('key'),\n ]).subscribe(([repositoryConfig, params]) => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}`],\n content: repositoryConfig.title,\n href: `/iko-management/${repositoryConfig.key}`,\n });\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`],\n content: this.translateService.instant('ikoManagement.searchActions.title'),\n href: `/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`,\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@if (params$ | async; as params) {\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [dragAndDrop]=\"true\"\n [fields]=\"FIELDS\"\n [items]=\"searchFields$ | async\"\n [loading]=\"loading$ | async\"\n (itemsReordered)=\"onItemsReordered($event, params)\"\n (rowClicked)=\"editSearchField($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addFieldButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addFieldButton\"\n [description]=\"'ikoManagement.searchFields.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.searchFields.noResultsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n}\n\n<valtimo-iko-management-search-field-modal\n [open]=\"fieldModalOpen$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [modalMode]=\"$modalMode()\"\n [prefillData]=\"prefillData$ | async\"\n (closeEvent)=\"onModalClose($event)\"\n></valtimo-iko-management-search-field-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.searchFields.deleteModalText\"\n [outputOnConfirm]=\"deleteField$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSearchField($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addFieldButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'searchFieldsOverview.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Params} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {\n BasicWidget,\n IWidgetManagementService,\n ManagementWidgetDetailsComponent,\n WIDGET_MANAGEMENT_SERVICE,\n WidgetManagementComponent,\n WidgetType,\n WidgetWizardService,\n} from '@valtimo/layout';\nimport {combineLatest, map, Observable, Subscription, switchMap, tap} from 'rxjs';\nimport {IkoManagementParams, IkoRepositoryConfigResponse, TabDto} from '../../../../models';\nimport {IkoManagementApiService, IkoWidgetManagementApiService} from '../../../../services';\n\n@Component({\n templateUrl: './iko-management-widgets.component.html',\n styleUrl: './iko-management-widgets.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, WidgetManagementComponent, TranslateModule],\n providers: [\n {\n provide: WIDGET_MANAGEMENT_SERVICE,\n useClass: IkoWidgetManagementApiService,\n },\n ],\n})\nexport class IkoManagementWidgetsComponent\n extends ManagementWidgetDetailsComponent\n implements OnInit, OnDestroy\n{\n public readonly params$: Observable<IkoManagementParams> = this.route.params.pipe(\n map((params: Params) => ({\n apiKey: params.apiKey,\n aggregateKey: params.key,\n actionKey: params.actionKey,\n tabKey: params.tabKey,\n widgetTabKey: params.widgetTabKey,\n })),\n tap((params: IkoManagementParams) => this.ikoWidgetManagementApiService.initParams(params))\n );\n\n public readonly widgets$: Observable<BasicWidget[]> =\n this.ikoWidgetManagementApiService.getWidgetConfiguration();\n\n public readonly AVAILABLE_WIDGET_TYPES = [\n WidgetType.FIELDS,\n WidgetType.COLLECTION,\n WidgetType.TABLE,\n WidgetType.INTERACTIVE_TABLE,\n WidgetType.MAP,\n ];\n\n private readonly _ikoRepositoryConfig$: Observable<IkoRepositoryConfigResponse> =\n this.params$.pipe(\n switchMap((params: Params) =>\n this.ikoManagementApiService.getIkoRepositoryConfig(params.apiKey)\n )\n );\n\n private readonly _ikoTabConfig$: Observable<TabDto> = this.params$.pipe(\n switchMap((params: Params) =>\n this.ikoManagementApiService.getIkoTab(params.aggregateKey, params.widgetTabKey)\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n protected readonly widgetWizardService: WidgetWizardService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private ikoWidgetManagementApiService: IWidgetManagementService<IkoManagementParams>\n ) {\n super(widgetWizardService);\n }\n\n public ngOnInit(): void {\n this.setContext('iko');\n this.setBreadcrumbs();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this._subscriptions.unsubscribe();\n }\n\n private setBreadcrumbs(): void {\n this._subscriptions.add(\n combineLatest([\n this._ikoTabConfig$,\n this._ikoRepositoryConfig$,\n this.ikoWidgetManagementApiService.params$,\n this.translateService.stream('key'),\n ])\n .pipe(\n tap(([tabConfig, repositoryConfig, params]) => {\n if (!params) return;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}`],\n content: repositoryConfig.title,\n href: `/iko-management/${repositoryConfig.key}`,\n });\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [\n `/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`,\n ],\n content: tabConfig.title || params.widgetTabKey || '',\n href: `/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`,\n });\n })\n )\n .subscribe()\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-management\n [params]=\"params$ | async\"\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n></valtimo-widget-management>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n} from '@valtimo/components';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {\n PropertyField,\n IkoSearchActionResponse,\n IkoRepositoryConfigResponse,\n IkoViewResponse,\n} from '../../../../../models';\nimport {filter, map, Observable, switchMap, take} from 'rxjs';\nimport {IkoManagementApiService} from '../../../../../services';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {PropertiesFormComponent} from '../../../../iko-management-properties/iko-management-properties.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-search-action-modal',\n templateUrl: './search-action-modal.component.html',\n styleUrl: './search-action-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ButtonModule,\n LayerModule,\n PropertiesFormComponent,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementSearchActionModalComponent {\n private _modalMode: ModalMode;\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n public readonly $isOpen = signal<boolean>(false);\n @Input() public set open(value: boolean) {\n this.$isOpen.set(value);\n\n if (value) return;\n\n setTimeout(() => {\n this.formGroup.reset();\n this.formGroup.get('key')?.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n public readonly $prefillData = signal<IkoViewResponse | null>(null);\n @Input() public set prefillData(value: IkoSearchActionResponse | null) {\n if (!value) {\n this.$prefillData.set(null);\n return;\n }\n\n this.$prefillData.set(value);\n this.formGroup.patchValue(value);\n this.formGroup.get('key')?.disable();\n }\n\n @Input() public usedKeys: string[] = [];\n @Input() repositoryKey: string;\n @Input() aggregateKey: string;\n\n @Output() public readonly modalClose = new EventEmitter<IkoSearchActionResponse | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public readonly propertyFields$: Observable<PropertyField[]> = toObservable(this.$isOpen).pipe(\n filter((open: boolean) => !!open),\n map(() => this.repositoryKey),\n switchMap((repositoryKey: string | null) =>\n this.ikoManagementApiService.getIkoRepositoryConfig(repositoryKey ?? '')\n ),\n switchMap((repository: IkoRepositoryConfigResponse) =>\n this.ikoManagementApiService.getIkoSearchActionPropertyFields(repository.type)\n )\n );\n\n public readonly formGroup = this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n title: this.fb.control<string>('', Validators.required),\n ikoViewKey: this.fb.control<string>(''),\n properties: this.fb.group({}),\n });\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public get properties(): FormGroup | null {\n const properties = this.formGroup.get('properties');\n return !properties ? null : (properties as FormGroup);\n }\n\n public onCancel(): void {\n this.modalClose.emit(null);\n }\n\n public onSave(): void {\n this.propertyFields$.pipe(take(1)).subscribe(fields => {\n const formData = this.formGroup.getRawValue();\n fields.forEach(field => {\n if (formData.properties[field.key] && field.type === 'keyValueList') {\n formData.properties[field.key] = Array.isArray(formData.properties[field.key])\n ? formData.properties[field.key].reduce((acc: Record<string, any>, cur: any) => {\n if (cur.key) {\n acc[cur.key] = cur.value;\n }\n return acc;\n }, {})\n : {};\n }\n });\n this.modalClose.emit(formData);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n [open]=\"$isOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"'ikoManagement.searchActions.' + modalMode + 'ActionTitle' | translate\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.searchActions.' + modalMode + 'ActionTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [formGroup]=\"formGroup\">\n <cds-label>\n {{ 'interface.title' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.title' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n labelTranslationKey=\"ikoManagement.keyTitle\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n\n <valtimo-iko-management-properties\n [propertiesFormGroup]=\"properties\"\n [fields]=\"propertyFields$ | async\"\n [prefillData]=\"$prefillData()?.properties\"\n />\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"formGroup.invalid\" (click)=\"onSave()\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule, DOCUMENT} from '@angular/common';\nimport {Component, Inject, TemplateRef, ViewChild, signal} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n LoadingModule,\n Notification,\n TabsModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, Observable, switchMap, tap} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\nimport {IkoSearchActionResponse} from '../../../../models';\nimport {IkoManagementApiService} from '../../../../services';\nimport {IkoManagementSearchActionModalComponent} from './search-action-modal/search-action-modal.component';\nimport {GlobalNotificationService, ModalMode} from '@valtimo/shared';\nimport {HttpResponse} from '@angular/common/http';\n\n@Component({\n standalone: true,\n templateUrl: './iko-management-search-actions.component.html',\n imports: [\n ButtonModule,\n CarbonListModule,\n CommonModule,\n ConfirmationModalModule,\n IconModule,\n IkoManagementSearchActionModalComponent,\n TabsModule,\n TranslateModule,\n LoadingModule,\n ],\n})\nexport class IkoManagementSearchActionsComponent {\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n ];\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editSearchAction.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteSearchAction.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly deleteSearchActionKey$ = new BehaviorSubject<string | null>(null);\n public readonly prefillData$ = new BehaviorSubject<IkoSearchActionResponse | null>(null);\n public readonly actionModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly repositoryKey$ = this.route.params.pipe(\n map((params: Params) => params.apiKey),\n filter(repositoryKey => !!repositoryKey)\n );\n public readonly aggregateKey$ = this.route.params.pipe(\n map((params: Params) => params.key),\n filter(key => !!key)\n );\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly searchActions$: Observable<IkoSearchActionResponse[]> = combineLatest([\n this.aggregateKey$,\n this._refresh$,\n ]).pipe(\n switchMap(([key]) => this.ikoManagementApiService.getManagementIkoSearchActions(key)),\n tap(content => {\n const keys = content?.map(item => item.key) ?? [];\n this.usedKeys$.next(keys);\n this.loading$.next(false);\n })\n );\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly notificationService: GlobalNotificationService,\n private readonly translateService: TranslateService\n ) {}\n\n public onSearchActionClick(action: IkoSearchActionResponse): void {\n this.router.navigate([`search-action/${action.key}`], {relativeTo: this.route});\n }\n\n public deleteSearchAction(action: IkoSearchActionResponse): void {\n this.deleteSearchActionKey$.next(action.key);\n this.deleteModalOpen$.next(true);\n }\n\n public onDeleteSearchAction(key: string): void {\n this.aggregateKey$\n .pipe(\n switchMap((aggregateKey: string) =>\n this.ikoManagementApiService.deleteIkoSearchAction(aggregateKey, key)\n )\n )\n .subscribe(() => this._refresh$.next(null));\n }\n\n public editSearchAction(action: IkoSearchActionResponse): void {\n this.$modalMode.set('edit');\n this.prefillData$.next(action);\n this.actionModalOpen$.next(true);\n }\n\n public onItemsReordered(searchActions: IkoSearchActionResponse[], aggregateKey: string): void {\n this.ikoManagementApiService\n .updateIkoSearchActions(aggregateKey, searchActions)\n .pipe(take(1))\n .subscribe();\n }\n\n public onModalClose(action: IkoSearchActionResponse | null): void {\n this.actionModalOpen$.next(false);\n this.prefillData$.next(null);\n\n if (!action) return;\n this.aggregateKey$\n .pipe(\n switchMap((aggregateKey: string) =>\n this.$modalMode() === 'add'\n ? this.ikoManagementApiService.createIkoSearchAction(aggregateKey, action.key, action)\n : this.ikoManagementApiService.updateIkoSearchAction(aggregateKey, action.key, action)\n )\n )\n .subscribe(() => {\n this._refresh$.next(null);\n });\n }\n\n public exportConfiguration(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n\n this.startExporting();\n\n combineLatest([this.aggregateKey$])\n .pipe(\n take(1),\n switchMap(([aggregateKey]) =>\n this.ikoManagementApiService.exportIKOConfiguration(aggregateKey)\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('caseManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('caseManagement.exportErrorTitle'),\n message: this.translateService.instant('caseManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public openAddModal(): void {\n this.$modalMode.set('add');\n this.actionModalOpen$.next(true);\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private downloadZip(response: HttpResponse<Blob>): void {\n this.aggregateKey$.pipe(take(1)).subscribe(key => {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition?.split('filename=') ?? [];\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView?.URL.createObjectURL(response.body) ?? '';\n link.download = fileName || `${key}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n });\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private stopExporting(): void {\n this.exporting$.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@if (aggregateKey$ | async; as aggregateKey) {\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [dragAndDrop]=\"true\"\n [fields]=\"FIELDS\"\n [items]=\"searchActions$ | async\"\n [loading]=\"loading$ | async\"\n (itemsReordered)=\"onItemsReordered($event, aggregateKey)\"\n (rowClicked)=\"onSearchActionClick($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"exportButton\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"addActionButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addActionButton\"\n [description]=\"'ikoManagement.searchActions.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.searchActions.noResultsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-iko-management-search-action-modal\n [usedKeys]=\"usedKeys$ | async\"\n [modalMode]=\"$modalMode()\"\n [repositoryKey]=\"repositoryKey$ | async\"\n [aggregateKey]=\"aggregateKey\"\n [open]=\"actionModalOpen$ | async\"\n [prefillData]=\"prefillData$ | async\"\n (modalClose)=\"onModalClose($event)\"\n ></valtimo-iko-management-search-action-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.searchActions.deleteModalText\"\n [outputOnConfirm]=\"deleteSearchActionKey$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSearchAction($event)\"\n ></valtimo-confirmation-modal>\n\n <ng-template #exportButton>\n <button [iconOnly]=\"true\" cdsButton=\"ghost\" (click)=\"exportConfiguration()\">\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <ng-template #addActionButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'ikoManagement.searchActions.addActionTitle' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'ikoManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n </ng-template>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output, signal} from '@angular/core';\nimport {\n ButtonModule,\n InputModule,\n LayerModule,\n ModalModule,\n NumberModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {IkoManagementApiService} from '../../../../services';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n FormControl,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {\n CarbonMultiInputModule,\n InputLabelModule,\n MultiInputValues,\n runAfterCarbonModalClosed,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n ViewType,\n} from '@valtimo/components';\nimport {ColumnDefaultSort, IkoListColumnRequest, ListColumnDto} from '../../../../models';\nimport {map} from 'rxjs/operators';\nimport {delay, filter, Observable, of, Subscription, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {ModalCloseEvent, ModalMode} from '@valtimo/shared';\n\n@Component({\n standalone: true,\n selector: 'valtimo-iko-management-list-modal',\n templateUrl: './list-modal.component.html',\n styleUrls: ['./list-modal.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ButtonModule,\n InputModule,\n ReactiveFormsModule,\n LayerModule,\n SelectModule,\n ToggleModule,\n TooltipModule,\n CarbonMultiInputModule,\n InputLabelModule,\n NumberModule,\n ],\n})\nexport class IkoManagementListModalComponent implements OnInit, OnDestroy {\n public readonly $openModal = signal<boolean>(false);\n @Input() public set openModal(value: boolean) {\n this.$openModal.set(value);\n }\n\n @Input() public readonly listColumns: ListColumnDto[] = [];\n\n private _selectedListColumn!: ListColumnDto;\n @Input() public set selectedListColumn(value: ListColumnDto) {\n if (!value) return;\n this._selectedListColumn = value;\n this.form.setValue(this.mapListColumnDtoToFormValue(value));\n this.form.markAsPristine();\n }\n\n private _modalMode: ModalMode = 'add';\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n if (value === 'add') {\n this.key.setAsyncValidators(this.keyNotUsedValidator());\n this.key.enable();\n } else {\n this.key.clearAsyncValidators();\n this.key.disable();\n }\n this.key.updateValueAndValidity();\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n @Output() public readonly closeModalEvent = new EventEmitter<ModalCloseEvent>();\n\n public readonly form = this.formBuilder.group({\n title: this.formBuilder.control('', [Validators.required]),\n key: this.formBuilder.control('', [Validators.required], [this.keyNotUsedValidator()]),\n path: this.formBuilder.control('', [Validators.required]),\n displayType: this.formBuilder.control('', [Validators.required]),\n sortable: this.formBuilder.control(false, [Validators.required]),\n defaultSort: this.formBuilder.control(''),\n dateFormat: this.formBuilder.control(''),\n tagAmount: this.formBuilder.control(1),\n booleanDisplayTypeParameters: this.formBuilder.control([\n {key: '', value: ''},\n ]) as FormControl<MultiInputValues>,\n enumDisplayTypeParameters: this.formBuilder.control([\n {key: '', value: ''},\n ]) as FormControl<MultiInputValues>,\n });\n\n public get title(): AbstractControl<string> {\n return this.form.get('title') as AbstractControl<string>;\n }\n public get key(): AbstractControl<string> {\n return this.form.get('key') as AbstractControl<string>;\n }\n public get path(): AbstractControl<string> {\n return this.form.get('path') as AbstractControl<string>;\n }\n public get displayType(): AbstractControl<string> {\n return this.form.get('displayType') as AbstractControl<string>;\n }\n public get sortable(): AbstractControl<boolean> {\n return this.form.get('sortable') as AbstractControl<boolean>;\n }\n public get defaultSort(): AbstractControl<string> {\n return this.form.get('defaultSort') as AbstractControl<string>;\n }\n public get dateFormat(): AbstractControl<string> {\n return this.form.get('dateFormat') as AbstractControl<string>;\n }\n\n public readonly isDateDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.DATE)\n );\n public readonly isBooleanDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.BOOLEAN)\n );\n public readonly isEnumDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.ENUM)\n );\n public readonly isTagsDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.TAGS)\n );\n\n private readonly _DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ViewType.TAGS,\n ViewType.HIDDEN,\n ];\n\n private readonly _ikoViewKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n public readonly displayTypeSelectItems: SelectItem[] = this._DISPLAY_TYPES.map(displayType => ({\n id: displayType,\n translationKey: `listColumnDisplayType.${displayType}`,\n }));\n\n public readonly sortSelectItems: SelectItem[] = [\n {\n translationKey: 'listColumn.sortableAsc',\n id: 'ASC',\n },\n {\n translationKey: 'listColumn.sortableDesc',\n id: 'DESC',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly formBuilder: FormBuilder,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.defaultSort.valueChanges.subscribe(defaultSortValue => {\n if (defaultSortValue) {\n this.sortable.setValue(true);\n this.sortable.disable();\n } else {\n this.sortable.enable();\n }\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public closeModal(): void {\n this.closeModalEvent.emit('close');\n runAfterCarbonModalClosed(this.resetForm);\n }\n\n public addColumn(): void {\n const formValue = this.form.getRawValue();\n const requestBody = this.getCreateRequestBodyFromFormValue();\n\n this.disableForm();\n\n this._ikoViewKey$\n .pipe(\n switchMap(ikoViewKey =>\n this.modalMode === 'add'\n ? this.ikoManagementApiService.createIkoListColumn(\n ikoViewKey,\n formValue.key,\n requestBody\n )\n : this.ikoManagementApiService.updateListColumn(ikoViewKey, formValue.key, requestBody)\n )\n )\n .subscribe({\n next: () => {\n this.enableForm();\n this.closeModalEvent.emit('closeAndRefresh');\n runAfterCarbonModalClosed(this.resetForm);\n },\n error: () => {\n this.enableForm();\n },\n });\n }\n\n private disableForm(): void {\n this.form.disable();\n }\n\n private enableForm(): void {\n this.form.enable();\n }\n\n private mapMultiInputValueToEnum(multiInputValues: MultiInputValues): Record<string, string> {\n return multiInputValues.reduce((acc, curr: any) => {\n return {...acc, [curr.key]: curr.value};\n }, {});\n }\n\n private getCreateRequestBodyFromFormValue(): IkoListColumnRequest {\n const {\n key,\n path,\n sortable,\n displayType,\n dateFormat,\n enumDisplayTypeParameters,\n booleanDisplayTypeParameters,\n defaultSort,\n ...rest\n } = this.form.getRawValue();\n\n const displayTypeParameters: Record<string, any> = (() => {\n switch (displayType) {\n case ViewType.DATE:\n return {dateFormat};\n case ViewType.ENUM:\n return {\n enum: this.mapMultiInputValueToEnum(enumDisplayTypeParameters),\n };\n case ViewType.BOOLEAN:\n return {\n enum: this.mapMultiInputValueToEnum(booleanDisplayTypeParameters),\n };\n default:\n return {};\n }\n })();\n\n return {\n key,\n path,\n sortable: Boolean(sortable),\n ...(defaultSort ? {defaultSort: defaultSort as ColumnDefaultSort} : {}),\n ...rest,\n ...(this.modalMode === 'edit' && {\n order: this._selectedListColumn.order,\n }),\n displayType: {\n type: displayType,\n displayTypeParameters,\n },\n };\n }\n\n private mapEnumToMultiInputValues(enumObj: Record<string, string> | undefined): MultiInputValues {\n if (!enumObj) {\n return [{key: '', value: ''}];\n }\n\n return Object.entries(enumObj).map(([key, value]) => ({key, value}));\n }\n\n private mapListColumnDtoToFormValue(dto: ListColumnDto): any {\n const {key, title, path, sortable, defaultSort, displayType} = dto;\n\n const baseFormValue: any = {\n key,\n title: title || '',\n path,\n sortable,\n defaultSort: defaultSort || '',\n displayType: displayType.type,\n dateFormat: '',\n booleanDisplayTypeParameters: [{key: '', value: ''}],\n enumDisplayTypeParameters: [{key: '', value: ''}],\n tagAmount: 1,\n };\n\n if (displayType.type === ViewType.DATE) {\n baseFormValue.dateFormat = displayType.displayTypeParameters?.dateFormat || '';\n }\n\n if (displayType.type === ViewType.ENUM) {\n baseFormValue.enumDisplayTypeParameters = this.mapEnumToMultiInputValues(\n displayType.displayTypeParameters?.enum\n );\n }\n\n if (displayType.type === ViewType.BOOLEAN) {\n baseFormValue.booleanDisplayTypeParameters = this.mapEnumToMultiInputValues(\n displayType.displayTypeParameters?.enum\n );\n }\n\n return baseFormValue;\n }\n\n private keyNotUsedValidator(): AsyncValidatorFn {\n return (control: AbstractControl) => {\n const value = control.value?.trim();\n if (!value) return of(null);\n\n const exists = this.listColumns.some(\n column => column.key.trim().toLowerCase() === value.toLowerCase()\n );\n return of(exists ? {keyTaken: true} : null).pipe(delay(200));\n };\n }\n\n private resetForm = (): void => {\n this.form.reset();\n this.form.markAsPristine();\n this.form.markAsUntouched();\n this.form.updateValueAndValidity();\n };\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n title:\n (modalMode === 'add' ? 'ikoManagement.addColumn' : 'ikoManagement.editColumn') | translate,\n } as state\"\n [open]=\"$openModal()\"\n [title]=\"state.title\"\n (close)=\"closeModal()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ state.title }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\" class=\"iko-column-form\">\n <cds-label>\n {{ 'ikoManagement.titleTitle' | translate }}\n\n <input\n [invalid]=\"title.dirty && title.invalid\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'ikoManagement.columnTitlePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'ikoManagement.keyTitle' | translate }}\n\n <input\n [invalid]=\"key.dirty && key.invalid\"\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'ikoManagement.columnKeyPlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'ikoManagement.pathTitle' | translate }}\n\n <input\n [invalid]=\"path.dirty && path.invalid\"\n formControlName=\"path\"\n cdsText\n placeholder=\"{{ 'ikoManagement.columnPathPlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-toggle\n formControlName=\"sortable\"\n [label]=\"'ikoManagement.sortableTitle' | translate\"\n [onText]=\"'ikoManagement.sortingEnabled' | translate\"\n [offText]=\"'ikoManagement.sortingDisabled' | translate\"\n ></cds-toggle>\n\n <v-select\n [invalid]=\"defaultSort.dirty && defaultSort.invalid\"\n formControlName=\"defaultSort\"\n [items]=\"sortSelectItems\"\n titleTranslationKey=\"ikoManagement.defaultSortTitle\"\n [appendInline]=\"false\"\n ></v-select>\n\n <v-select\n [invalid]=\"displayType.dirty && displayType.invalid\"\n formControlName=\"displayType\"\n [items]=\"displayTypeSelectItems\"\n titleTranslationKey=\"ikoManagement.displayType\"\n [appendInline]=\"false\"\n ></v-select>\n\n <v-input-label\n *ngIf=\"isDateDisplayType$ | async\"\n titleTranslationKey=\"listColumn.dateFormat\"\n tooltipTranslationKey=\"listColumn.dateFormatTooltip\"\n >\n <input cdsText formControlName=\"dateFormat\" />\n </v-input-label>\n\n <v-input-label\n *ngIf=\"isBooleanDisplayType$ | async\"\n titleTranslationKey=\"listColumn.enumTitleOptional\"\n tooltipTranslationKey=\"listColumn.enumTooltipOptional\"\n >\n <valtimo-carbon-multi-input\n type=\"keyValue\"\n formControlName=\"booleanDisplayTypeParameters\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n ></valtimo-carbon-multi-input>\n </v-input-label>\n\n <v-input-label\n *ngIf=\"isEnumDisplayType$ | async\"\n titleTranslationKey=\"listColumn.enumTitle\"\n tooltipTranslationKey=\"listColumn.enumTooltip\"\n >\n <valtimo-carbon-multi-input\n type=\"keyValue\"\n formControlName=\"enumDisplayTypeParameters\"\n ></valtimo-carbon-multi-input>\n </v-input-label>\n\n <v-input-label\n *ngIf=\"isTagsDisplayType$ | async\"\n titleTranslationKey=\"listColumn.tagAmount\"\n tooltipTranslationKey=\"listColumn.tagAmountTooltip\"\n >\n <cds-number formControlName=\"tagAmount\" [min]=\"1\" [step]=\"1\"></cds-number>\n </v-input-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [disabled]=\"form.invalid || form.disabled || !form.dirty\"\n cdsButton=\"primary\"\n (click)=\"addColumn()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n Observable,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n} from '@valtimo/components';\nimport {IkoManagementApiService} from '../../../../services';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {getDisplayTypeParametersView, ModalCloseEvent, ModalMode} from '@valtimo/shared';\nimport {ListColumnDto} from '../../../../models';\nimport {IkoManagementListModalComponent} from '../list-modal/list-modal.component';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\n@Component({\n standalone: true,\n selector: 'valtimo-iko-management-list-columns',\n templateUrl: './iko-management-list.component.html',\n styleUrls: ['./iko-management-list.component.scss'],\n imports: [\n CommonModule,\n CarbonListModule,\n TabsModule,\n TranslateModule,\n IkoManagementListModalComponent,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n})\nexport class IkoManagementListComponent implements OnInit, OnDestroy {\n public readonly $openModal = signal<boolean>(false);\n public readonly openConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly $loading = signal<boolean>(true);\n public readonly $disableInput = signal<boolean>(true);\n public readonly $modalMode = signal<ModalMode>('add');\n\n private readonly _ikoViewKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n public readonly $ikoListColumnDtos = signal<ListColumnDto[]>([]);\n\n public readonly $selectedListColumn = signal<ListColumnDto | null>(null);\n\n private readonly _reloadColumns$ = new BehaviorSubject<null>(null);\n\n public readonly ikoListColumns$ = combineLatest([\n toObservable(this.$ikoListColumnDtos),\n this.translateService.stream('key'),\n ]).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: getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n ),\n tap(() => this.$disableInput.set(false))\n );\n\n public readonly FIELDS: Array<ColumnConfig> = [\n {\n key: 'title',\n label: 'listColumn.title',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'key',\n label: 'listColumn.key',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'path',\n label: 'listColumn.path',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'displayType',\n label: 'listColumn.displayType',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'sortable',\n label: 'listColumn.sortable',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n viewType: 'string',\n sortable: false,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onRowClicked.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClicked.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([this._ikoViewKey$, this._reloadColumns$])\n .pipe(\n tap(() => this.$disableInput.set(true)),\n switchMap(([key]) => this.ikoManagementApiService.getIkoListColumns(key)),\n tap(res => {\n this.$ikoListColumnDtos.set(res);\n this.$loading.set(false);\n })\n )\n .subscribe()\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onItemsReordered(items: {id: string}[]): void {\n const listColumns = this.$ikoListColumnDtos();\n const mappedItems = items\n .map(item => listColumns.find(column => column.id === item.id))\n .map((item, index) => ({...item, order: index}));\n\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(\n switchMap(key => this.ikoManagementApiService.updateIkoListColumnOrder(key, mappedItems))\n )\n .subscribe({\n next: () => {\n this.enableInput();\n this.reloadColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public onRowClicked(event: {key: string}): void {\n const listColumnDto = this.$ikoListColumnDtos().find(column => column.key === event.key);\n if (!listColumnDto) return;\n this.$selectedListColumn.set({...listColumnDto});\n this.$openModal.set(true);\n this.$modalMode.set('edit');\n }\n\n public onDeleteClicked(event: ListColumnDto): void {\n const listColumnDto = this.$ikoListColumnDtos().find(column => column.key === event.key);\n if (!listColumnDto) return;\n this.$selectedListColumn.set({...listColumnDto});\n this.openConfirmationModal$.next(true);\n }\n\n public onDeleteListColumn(event: ListColumnDto): void {\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(switchMap(key => this.ikoManagementApiService.deleteIkoListColumn(key, event.key)))\n .subscribe({\n next: () => {\n this.reloadColumns();\n this.enableInput();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public openModal(): void {\n this.$openModal.set(true);\n }\n\n public onCreateButtonClicked(): void {\n this.$modalMode.set('add');\n this.openModal();\n }\n\n private closeModal(): void {\n this.$openModal.set(false);\n }\n\n public onCloseModalEvent(event: ModalCloseEvent): void {\n this.closeModal();\n if (event === 'closeAndRefresh') this.reloadColumns();\n }\n\n private disableInput(): void {\n this.$disableInput.set(true);\n }\n\n private enableInput(): void {\n this.$disableInput.set(false);\n }\n\n private reloadColumns(): void {\n this._reloadColumns$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n columns: (ikoListColumns$ | async) || [],\n ikoListColumnDtos: $ikoListColumnDtos(),\n selectedListColumn: $selectedListColumn(),\n loading: $loading(),\n openModal: $openModal(),\n disableInput: $disableInput(),\n modalMode: $modalMode(),\n } as state\"\n>\n <valtimo-carbon-list\n [items]=\"state.columns\"\n [loading]=\"state.loading\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"state.disableInput\"\n [actionItems]=\"ACTION_ITEMS\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n >\n <div carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"onCreateButtonClicked()\">\n {{ 'ikoManagement.addColumn' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-iko-management-list-modal\n [openModal]=\"state.openModal\"\n [listColumns]=\"state.ikoListColumnDtos\"\n [selectedListColumn]=\"state.selectedListColumn\"\n [modalMode]=\"state.modalMode\"\n (closeModalEvent)=\"onCloseModalEvent($event)\"\n ></valtimo-iko-management-list-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.searchActions.deleteModalText\"\n [showModalSubject$]=\"openConfirmationModal$\"\n [outputOnConfirm]=\"state.selectedListColumn\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteListColumn($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n AutoKeyInputComponent,\n CarbonMultiInputModule,\n InputLabelModule,\n runAfterCarbonModalClosed,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {ModalCloseEvent, ModalMode} from '@valtimo/shared';\nimport {\n ButtonModule,\n InputModule,\n LayerModule,\n ModalModule,\n NumberModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {filter, map, Observable, switchMap} from 'rxjs';\nimport {IkoTabType, TabDto} from '../../../../models';\nimport {IkoManagementApiService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-iko-management-tab-details-modal',\n templateUrl: './iko-management-tab-details-modal.component.html',\n styleUrl: './iko-management-tab-details-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ButtonModule,\n InputModule,\n ReactiveFormsModule,\n LayerModule,\n SelectModule,\n ToggleModule,\n TooltipModule,\n CarbonMultiInputModule,\n InputLabelModule,\n NumberModule,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementTabDetailsModalComponent {\n public readonly $openModal = signal<boolean>(false);\n @Input() public set openModal(value: boolean) {\n this.$openModal.set(value);\n }\n\n @Input() public readonly usedKeys: string[] = [];\n\n public readonly $selectedKey = signal<string>('');\n @Input() public set selectedTab(value: TabDto) {\n if (!value) return;\n this.$selectedKey.set(value.key);\n this.form.setValue({...value, title: value.title || ''});\n this.form.markAsPristine();\n }\n\n private _modalMode: ModalMode = 'add';\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n @Output() public readonly closeModalEvent = new EventEmitter<ModalCloseEvent>();\n\n public readonly form = this.formBuilder.group({\n title: this.formBuilder.control('', Validators.required),\n key: this.formBuilder.control('', [Validators.required]),\n type: this.formBuilder.control('', [Validators.required]),\n });\n\n public get title(): AbstractControl<string> {\n return this.form.get('title') as AbstractControl<string>;\n }\n public get key(): AbstractControl<string> {\n return this.form.get('key') as AbstractControl<string>;\n }\n public get type(): AbstractControl<string> {\n return this.form.get('type') as AbstractControl<string>;\n }\n\n private readonly _ikoViewKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n private readonly _TAB_TYPES: Array<IkoTabType> = [IkoTabType.WIDGETS];\n\n public readonly tabTypeSelectItems: SelectItem[] = this._TAB_TYPES.map(tabType => ({\n id: tabType,\n translationKey: `ikoManagement.tabTypes.${tabType}`,\n }));\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly formBuilder: FormBuilder,\n private readonly route: ActivatedRoute\n ) {}\n\n public closeModal(): void {\n this.closeModalEvent.emit('close');\n runAfterCarbonModalClosed(this.resetForm);\n }\n\n public addTab(): void {\n const formValue = this.form.getRawValue();\n\n this.disableForm();\n\n this._ikoViewKey$\n .pipe(\n switchMap(ikoViewKey =>\n this.modalMode === 'add'\n ? this.ikoManagementApiService.createIkoTab(ikoViewKey, formValue.key, formValue)\n : this.ikoManagementApiService.updateIkoTab(ikoViewKey, formValue.key, formValue)\n )\n )\n .subscribe({\n next: () => {\n this.enableForm();\n this.closeModalEvent.emit('closeAndRefresh');\n runAfterCarbonModalClosed(this.resetForm);\n },\n error: () => {\n this.enableForm();\n },\n });\n }\n\n private disableForm(): void {\n this.form.disable();\n }\n\n private enableForm(): void {\n this.form.enable();\n }\n\n private resetForm = (): void => {\n this.form.reset();\n this.form.markAsPristine();\n this.form.markAsUntouched();\n this.form.updateValueAndValidity();\n };\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n (close)=\"closeModal()\"\n *ngIf=\"{\n title: (modalMode === 'add' ? 'ikoManagement.addTab' : 'ikoManagement.editTab') | translate,\n } as state\"\n [open]=\"$openModal()\"\n [title]=\"state.title\"\n valtimoCdsModal\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ state.title }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\" class=\"iko-tab-form\">\n <cds-label>\n {{ 'ikoManagement.tabTitle' | translate }}\n\n <input\n [invalid]=\"title.dirty && title.invalid\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'ikoManagement.tabTitlePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n formControlName=\"key\"\n labelTranslationKey=\"ikoManagement.keyTitle\"\n placeholderTranslationKey=\"ikoManagement.tabKeyPlaceholder\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"modalMode === 'edit' ? $selectedKey() : title.value\"\n [mode]=\"modalMode\"\n >\n </valtimo-auto-key-input>\n\n <v-select\n [invalid]=\"type.dirty && type.invalid\"\n [dropUp]=\"false\"\n formControlName=\"type\"\n [items]=\"tabTypeSelectItems\"\n titleTranslationKey=\"ikoManagement.tabTypeTitle\"\n [appendInline]=\"false\"\n ></v-select>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [disabled]=\"form.invalid || form.disabled || !form.dirty\"\n cdsButton=\"primary\"\n (click)=\"addTab()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, computed, OnDestroy, OnInit, signal} from '@angular/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, Subscription, switchMap, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {IkoManagementApiService} from '../../../../services';\nimport {TabDto} from '../../../../models';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {IkoManagementTabDetailsModalComponent} from '../tab-detail-modal/iko-management-tab-details-modal.component';\nimport {ModalCloseEvent, ModalMode} from '@valtimo/shared';\n\n@Component({\n standalone: true,\n templateUrl: './iko-management-tabs.component.html',\n imports: [\n CommonModule,\n CarbonListModule,\n TabsModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n IkoManagementTabDetailsModalComponent,\n TranslatePipe,\n ConfirmationModalModule,\n ],\n})\nexport class IkoManagementTabsComponent implements OnInit, OnDestroy {\n public readonly $disableInput = signal<boolean>(true);\n public readonly $ikoTabDtos = signal<TabDto[]>([]);\n public readonly $usedKeys = computed(() =>\n this.$ikoTabDtos().reduce(\n (acc, curr) => [...acc, ...(curr.key === this.$selectedTab()?.key ? [] : [curr.key])],\n [] as string[]\n )\n );\n public readonly $loading = signal<boolean>(true);\n public readonly $selectedTab = signal<TabDto | null>(null);\n public readonly $openModal = signal<boolean>(false);\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly openConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n private readonly _ikoViewKey$ = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n private readonly _reloadTabs$ = new BehaviorSubject<null>(null);\n\n public readonly ikoTabs$ = combineLatest([\n toObservable(this.$ikoTabDtos),\n this.translateService.stream('key'),\n ]).pipe(\n map(([tabs]) =>\n tabs.map(tab => ({\n ...tab,\n type: this.translateService.instant(`ikoManagement.tabTypes.${tab.type}`),\n }))\n ),\n tap(() => this.$disableInput.set(false))\n );\n\n public readonly FIELDS: Array<ColumnConfig> = [\n {\n key: 'key',\n label: 'ikoManagement.tabKey',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'title',\n label: 'ikoManagement.tabTitle',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'type',\n label: 'ikoManagement.tabType',\n viewType: 'string',\n sortable: false,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editTab.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClicked.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly translateService: TranslateService,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([this._ikoViewKey$, this._reloadTabs$])\n .pipe(\n tap(() => this.$disableInput.set(true)),\n switchMap(([key]) => this.ikoManagementApiService.getIkoTabs(key)),\n tap(res => {\n this.$ikoTabDtos.set(res);\n this.$loading.set(false);\n })\n )\n .subscribe()\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onRowClicked(event: {key: string}): void {\n const tabDto = this.$ikoTabDtos().find(column => column.key === event.key);\n if (!tabDto) return;\n\n if (tabDto.type === 'widgets') {\n this.router.navigate(['widget-details', tabDto.key], {relativeTo: this.route});\n return;\n }\n\n this.editTab(event);\n }\n\n public editTab(event: {key: string}): void {\n const tabDto = this.$ikoTabDtos().find(column => column.key === event.key);\n if (!tabDto) return;\n this.$selectedTab.set({...tabDto});\n this.$openModal.set(true);\n this.$modalMode.set('edit');\n }\n\n public onDeleteClicked(event: {key: string}): void {\n const tabDto = this.$ikoTabDtos().find(tab => tab.key === event.key);\n if (!tabDto) return;\n this.$selectedTab.set({...tabDto});\n this.openConfirmationModal$.next(true);\n }\n\n public onItemsReordered(items: {key: string}[]): void {\n const tabs = this.$ikoTabDtos();\n const mappedItems = items\n .map(item => tabs.find(column => column.key === item.key))\n .map((item, index) => ({...item, order: index, title: item.title || null}));\n\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(switchMap(key => this.ikoManagementApiService.updateIkoTabs(key, mappedItems)))\n .subscribe({\n next: () => {\n this.enableInput();\n this.reloadTabs();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public onCreateButtonClicked(): void {\n this.$modalMode.set('add');\n this.$selectedTab.set({title: '', key: '', type: ''});\n this.openModal();\n }\n\n private closeModal(): void {\n this.$openModal.set(false);\n }\n\n public onCloseModalEvent(event: ModalCloseEvent): void {\n this.closeModal();\n if (event === 'closeAndRefresh') this.reloadTabs();\n }\n\n public openModal(): void {\n this.$openModal.set(true);\n }\n\n public onDeleteTab(event: {key: string}): void {\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(switchMap(key => this.ikoManagementApiService.deleteIkoTab(key, event.key)))\n .subscribe({\n next: () => {\n this.reloadTabs();\n this.enableInput();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n private disableInput(): void {\n this.$disableInput.set(true);\n }\n\n private enableInput(): void {\n this.$disableInput.set(false);\n }\n\n private reloadTabs(): void {\n this._reloadTabs$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n tabs: (ikoTabs$ | async) || [],\n ikoTabColumnDtos: $ikoTabDtos(),\n selectedTab: $selectedTab(),\n loading: $loading(),\n openModal: $openModal(),\n disableInput: $disableInput(),\n modalMode: $modalMode(),\n usedKeys: $usedKeys(),\n } as state\"\n>\n <valtimo-carbon-list\n [items]=\"state.tabs\"\n [loading]=\"state.loading\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"state.disableInput\"\n [actionItems]=\"ACTION_ITEMS\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n >\n <div carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"onCreateButtonClicked()\">\n {{ 'ikoManagement.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n\n <valtimo-no-results\n [title]=\"'ikoManagement.noTabConfigWarningTitle' | translate\"\n [description]=\"'ikoManagement.noTabConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.deleteTabModalText\"\n [showModalSubject$]=\"openConfirmationModal$\"\n [outputOnConfirm]=\"state.selectedTab\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteTab($event)\"\n ></valtimo-confirmation-modal>\n\n <valtimo-iko-management-tab-details-modal\n [openModal]=\"state.openModal\"\n [selectedTab]=\"state.selectedTab\"\n [modalMode]=\"state.modalMode\"\n [usedKeys]=\"state.usedKeys\"\n (closeModalEvent)=\"onCloseModalEvent($event)\"\n ></valtimo-iko-management-tab-details-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IkoManagementTab, IkoManagementTabType} from '../models';\nimport {IkoManagementSearchActionsComponent} from '../components/iko-management-details/components/search-actions/iko-management-search-actions.component';\nimport {IkoManagementListComponent} from '../components/iko-management-details/components/list/iko-management-list.component';\nimport {IkoManagementTabsComponent} from '../components/iko-management-details/components/tabs/iko-management-tabs.component';\n\nconst IKO_MANAGEMENT_TABS: IkoManagementTab[] = [\n {\n key: IkoManagementTabType.SEARCH_FIELDS,\n title: 'ikoManagement.searchActions.title',\n component: IkoManagementSearchActionsComponent,\n },\n {\n key: IkoManagementTabType.LIST,\n title: 'ikoManagement.list',\n component: IkoManagementListComponent,\n },\n {\n key: IkoManagementTabType.TABS,\n title: 'ikoManagement.tabs.title',\n component: IkoManagementTabsComponent,\n },\n];\n\nexport {IKO_MANAGEMENT_TABS};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-management.constants';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, ViewChild, ViewContainerRef} from '@angular/core';\nimport {\n BreadcrumbService,\n CarbonListModule,\n ColumnConfig,\n PageTitleService,\n} from '@valtimo/components';\nimport {IkoApiService, IkoManagementApiService} from '../../services';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n Observable,\n Subscription,\n switchMap,\n take,\n} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {map} from 'rxjs/operators';\nimport {TabsModule} from 'carbon-components-angular';\nimport {IkoManagementTab, IkoManagementTabType} from '../../models';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {IKO_MANAGEMENT_TABS} from '../../constants';\n\n@Component({\n selector: 'valtimo-iko-management-details',\n standalone: true,\n templateUrl: './iko-management-details.component.html',\n styleUrl: './iko-management-details.component.scss',\n imports: [CommonModule, CarbonListModule, TabsModule, TranslateModule],\n})\nexport class IkoManagementDetailsComponent implements OnInit, OnDestroy {\n private readonly _dynamicContainerSubject$ = new BehaviorSubject<ViewContainerRef | null>(null);\n @ViewChild('tabComponent', {static: false, read: ViewContainerRef})\n public set dynamicContainer(view: ViewContainerRef) {\n if (view) this._dynamicContainerSubject$.next(view);\n }\n private get _dynamicContainer$(): Observable<ViewContainerRef> {\n return this._dynamicContainerSubject$.pipe(filter(container => !!container));\n }\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly tabKey$: Observable<IkoManagementTabType> = this.route.params.pipe(\n map(params => params?.tabKey),\n filter(key => !!key)\n );\n\n private readonly _key$ = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n private readonly _apiKey$ = this.route.params.pipe(\n map(params => params?.apiKey),\n filter(key => !!key)\n );\n\n public readonly currentMenuItem$ = combineLatest([\n this._key$,\n this.ikoApiService.cachedMenuItems$,\n ]).pipe(\n map(([key, items]) => {\n const currentItem = items.find(item => item.key === key);\n if (!currentItem) return;\n this.pageTitleService.setCustomPageTitle(currentItem.title || '-');\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'ikoManagement.title',\n },\n ];\n\n public readonly TABS = IKO_MANAGEMENT_TABS;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public ngOnInit(): void {\n this.openActivateTabSubscription();\n this.setThirdBreadcrumb();\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n }\n\n public onTabSelected(tab: IkoManagementTab): void {\n this.router.navigate([`../${tab.key}`], {relativeTo: this.route});\n }\n\n private openActivateTabSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.tabKey$, this._dynamicContainer$]).subscribe(([tabKey, container]) => {\n const tab = this.TABS.find(tab => tab.key === tabKey);\n container.clear();\n container.createComponent(tab.component);\n })\n );\n }\n\n private setThirdBreadcrumb(): void {\n this._apiKey$\n .pipe(\n take(1),\n switchMap(apiKey => this.ikoManagementApiService.getIkoRepositoryConfig(apiKey))\n )\n .subscribe(repositoryConfig => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}`],\n content: repositoryConfig?.title ?? '',\n href: `/iko-management/${repositoryConfig.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<ng-container\n *ngIf=\"{\n currentMenuItem: currentMenuItem$ | async,\n tabKey: tabKey$ | async,\n } as obs\"\n>\n <cds-tabs type=\"contained\">\n <cds-tab\n *ngFor=\"let tab of TABS\"\n [active]=\"obs.tabKey === tab.key\"\n [heading]=\"tab.title | translate\"\n (selected)=\"onTabSelected(tab)\"\n >\n </cds-tab>\n </cds-tabs>\n\n <ng-template #tabComponent></ng-template>\n</ng-container>\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n runAfterCarbonModalClosed,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LayerModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, filter, Observable, switchMap, take} from 'rxjs';\nimport {PropertyField, IkoViewResponse, IkoRepositoryConfigResponse} from '../../../models';\nimport {IkoManagementApiService} from '../../../services';\nimport {PropertiesFormComponent} from '../../iko-management-properties/iko-management-properties.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-view-modal',\n templateUrl: './iko-management-view-modal.component.html',\n styleUrl: './iko-management-view-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n PropertiesFormComponent,\n LayerModule,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementViewModalComponent {\n private readonly _open$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set open(value: boolean) {\n this._open$.next(value);\n if (!value) this.formGroup.reset();\n }\n public get open$(): Observable<boolean> {\n return this._open$.asObservable();\n }\n\n private _modalMode: ModalMode;\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n private readonly _apiKey$ = new BehaviorSubject<string | null>(null);\n\n @Input() public set apiKey(value: string | null) {\n if (!value) return;\n\n this._apiKey$.next(value);\n }\n\n public readonly $prefillData = signal<IkoViewResponse | null>(null);\n @Input() public set prefillData(value: IkoViewResponse | null) {\n if (!value) {\n this.$prefillData.set(null);\n return;\n }\n\n this.$prefillData.set(value);\n this.formGroup.patchValue(value);\n }\n\n @Input() public usedKeys: string[] = [];\n\n @Output() public readonly modalClose = new EventEmitter<any | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public readonly propertyFields$: Observable<PropertyField[]> = this.open$.pipe(\n filter((open: boolean) => !!open),\n switchMap(() => this._apiKey$),\n switchMap((repositoryKey: string | null) =>\n this.ikoManagementApiService.getIkoViewType(repositoryKey ?? '')\n ),\n switchMap((repository: IkoRepositoryConfigResponse) =>\n this.ikoManagementApiService.getIkoViewPropertyFields(repository.type)\n )\n );\n public formGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', Validators.required),\n properties: this.fb.group({}, Validators.required),\n });\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public get properties(): FormGroup | null {\n const properties = this.formGroup.get('properties');\n return !properties ? null : (properties as FormGroup);\n }\n\n public onCancel(): void {\n this.modalClose.emit(null);\n runAfterCarbonModalClosed(() => {\n this.resetForm();\n });\n }\n\n public onSave(): void {\n this.propertyFields$.pipe(take(1)).subscribe(fields => {\n const formData = this.formGroup.getRawValue();\n fields.forEach(field => {\n if (formData.properties[field.key] && field.type === 'keyValueList') {\n formData.properties[field.key] = Array.isArray(formData.properties[field.key])\n ? formData.properties[field.key].reduce((acc: Record<string, any>, cur: any) => {\n if (cur.key) {\n acc[cur.key] = cur.value;\n }\n return acc;\n }, {})\n : {};\n }\n });\n this.modalClose.emit(formData);\n });\n runAfterCarbonModalClosed(() => {\n this.resetForm();\n });\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset({\n title: '',\n key: '',\n properties: {},\n });\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.views.' + modalMode | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent>\n <cds-label>\n {{ 'interface.title' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.title' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n\n <valtimo-iko-management-properties\n [propertiesFormGroup]=\"properties\"\n [fields]=\"propertyFields$ | async\"\n [prefillData]=\"$prefillData()?.properties\"\n />\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"formGroup.invalid\" cdsButton=\"primary\" (click)=\"onSave()\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nenum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n ACCESS_CONTROL = 'accessControl',\n}\n\nconst STEPS = [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD, UPLOAD_STEP.ACCESS_CONTROL];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-management-upload-step',\n templateUrl: './iko-management-upload-step.component.html',\n styleUrls: ['./iko-management-upload-step.component.scss'],\n})\nexport class IkoManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ButtonModule,\n CheckboxModule,\n FileItem,\n FileUploaderModule,\n IconModule,\n InputModule,\n ModalModule,\n NotificationContent,\n NotificationModule,\n ProgressBarModule,\n} from 'carbon-components-angular';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {CARBON_CONSTANTS, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {UPLOAD_STEP, STEPS, UPLOAD_STATUS} from './iko-management-upload.constants';\nimport {IkoManagementApiService} from '../../../services';\nimport {IkoManagementUploadStepComponent} from './step/iko-management-upload-step.component';\n\n@Component({\n standalone: true,\n selector: 'valtimo-iko-management-upload-modal',\n templateUrl: './iko-management-upload-modal.component.html',\n styleUrls: ['./iko-management-upload-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n ProgressBarModule,\n CheckboxModule,\n FileUploaderModule,\n IkoManagementUploadStepComponent,\n NotificationModule,\n TranslateModule,\n ],\n})\nexport class IkoManagementUploadModalComponent implements OnInit, OnDestroy {\n private readonly _open$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set open(value: boolean) {\n this._open$.next(value);\n\n if (!value) this.resetForm();\n }\n\n public get open$(): Observable<boolean> {\n return this._open$.asObservable();\n }\n\n @Output() modalClose = new EventEmitter<boolean>();\n\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.FILE_SELECT);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) => [UPLOAD_STEP.ACCESS_CONTROL].includes(activeStep))\n );\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n this.uploadStatus$,\n ]).pipe(\n map(([activeStep, disabled, status]) =>\n activeStep === UPLOAD_STEP.FILE_UPLOAD ? status !== UPLOAD_STATUS.FINISHED : disabled\n )\n );\n\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) => ![UPLOAD_STEP.FILE_SELECT].includes(activeStep))\n );\n\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('ikoManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n\n public acceptedFiles: string[] = ['.zip'];\n public selectedFile: File | null;\n\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n private readonly _subscriptions = new Subscription();\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private _checked = false;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) return;\n\n this._subscriptions.add(\n this.form.get('file').valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this._checked = false;\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.modalClose.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this._checked) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.showCheckboxError$.next(false);\n this.activeStep$.next(STEPS[nextIndex]);\n\n if (STEPS[nextIndex] === UPLOAD_STEP.FILE_UPLOAD) {\n this.uploadDefinition();\n }\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onCheckedChange(checked: boolean): void {\n this._checked = checked;\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n public onCancel(): void {\n this.modalClose.emit(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: any) => this.ikoManagementApiService.importConfigurationZip(file)),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private resetForm(): void {\n this.form.get('file')?.setValue(new Set<any>());\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.resetForm();\n this.activeStep$.next(UPLOAD_STEP.FILE_SELECT);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n this._disabled$.next(true);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n uploadStatus: uploadStatus$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n showCloseButton: showCloseButton$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-definition-uploader__content\">\n @switch (obs.activeStep) {\n @case (UPLOAD_STEP.FILE_SELECT) {\n <form [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'ikoManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'ikoManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'ikoManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n @if (!obs.nextButtonDisabled) {\n <cds-inline-notification\n [notificationObj]=\"obs.notificationObj\"\n ></cds-inline-notification>\n\n <div class=\"valtimo-definition-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'ikoManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n @if (obs.showCheckboxError) {\n <div class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n {{ 'ikoManagement.importDefinition.checkbox.error' | translate }}\n </div>\n }\n </div>\n }\n </form>\n }\n\n @case (UPLOAD_STEP.FILE_UPLOAD) {\n <cds-progress-bar\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'ikoManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'ikoManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n }\n\n @default {\n <valtimo-case-management-upload-step\n [message]=\"\n 'ikoManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"'ikoManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-case-management-upload-step>\n }\n }\n </section>\n\n <cds-modal-footer class=\"valtimo-definition-uploader__footer\">\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.ACCESS_CONTROL\n \"\n cdsButton=\"primary\"\n [disabled]=\"\n obs.nextButtonDisabled || (obs.activeStep === UPLOAD_STEP.FILE_SELECT && !_checked)\n \"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'ikoManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.ACCESS_CONTROL\n \"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n MenuService,\n PageTitleService,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, switchMap, take, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {IKO_MANAGEMENT_TABS} from '../../constants';\nimport {IkoViewResponse} from '../../models';\nimport {IkoManagementApiService} from '../../services';\nimport {IkoManagementViewModalComponent} from './view-modal/iko-management-view-modal.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Upload16} from '@carbon/icons';\nimport {IkoManagementUploadModalComponent} from './upload-modal/iko-management-upload-modal.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management',\n standalone: true,\n templateUrl: './iko-management.component.html',\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n IkoManagementViewModalComponent,\n IkoManagementUploadModalComponent,\n TranslateModule,\n ConfirmationModalModule,\n ],\n})\nexport class IkoManagementComponent implements OnInit, OnDestroy {\n public readonly $loading = signal<boolean>(true);\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n public readonly apiKey$ = this.route.params.pipe(\n map(params => params?.apiKey as string),\n filter(key => !!key)\n );\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly ikoViews$ = combineLatest([this.apiKey$, this._refresh$]).pipe(\n tap(() => this.$loading.set(true)),\n switchMap(([apiKey]) =>\n this.ikoManagementApiService.getManagementIkoViews(undefined, undefined, apiKey).pipe(\n map(ikoViewPage => ikoViewPage.content),\n tap(content => {\n const keys = content?.map(item => item.key) ?? [];\n this.usedKeys$.next(keys);\n this.$loading.set(false);\n })\n )\n )\n );\n\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly $viewModalOpen = signal<boolean>(false);\n public readonly $uploadModalOpen = signal<boolean>(false);\n public readonly $prefillData = signal<any | null>(null);\n public readonly $keyToDelete = signal<string | null>(null);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'ikoManagement.views.title',\n },\n ];\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onEditClick.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClick.bind(this),\n type: 'danger',\n },\n ];\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly menuService: MenuService,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Upload16]);\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n this.setPageTitle();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public onRowClicked(event: IkoViewResponse): void {\n this.apiKey$.pipe(take(1)).subscribe(apiKey => {\n this.router.navigate(['iko-management', apiKey, event.key, IKO_MANAGEMENT_TABS[0].key]);\n });\n }\n\n public openAddModal(): void {\n this.$modalMode.set('add');\n this.$prefillData.set(null);\n this.$viewModalOpen.set(true);\n }\n\n public openUploadModal(): void {\n this.$uploadModalOpen.set(true);\n }\n\n public onEditClick(item: IkoViewResponse): void {\n this.$modalMode.set('edit');\n this.$prefillData.set(item);\n this.$viewModalOpen.set(true);\n }\n\n public onDeleteClick(item: IkoViewResponse): void {\n this.$keyToDelete.set(item.key);\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(key: string): void {\n this.ikoManagementApiService.deleteIkoView(key).subscribe(() => {\n this.menuService.reload();\n this._refresh$.next(null);\n });\n }\n\n public onViewModalClose(item: IkoViewResponse | null, ikoRepositoryConfigKey: string) {\n this.$viewModalOpen.set(false);\n this.$prefillData.set(null);\n if (!item) return;\n\n if (this.$modalMode() === 'edit') {\n this.ikoManagementApiService\n .updateIkoView(item.key, {\n ...item,\n ikoRepositoryConfigKey,\n })\n .pipe(take(1))\n .subscribe(() => {\n this.menuService.reload();\n this._refresh$.next(null);\n });\n return;\n }\n\n this.ikoManagementApiService\n .createIkoView(item.key, {...item, ikoRepositoryConfigKey})\n .pipe(take(1))\n .subscribe(() => {\n this.menuService.reload();\n this._refresh$.next(null);\n });\n }\n\n public onUploadModalClose(item: boolean) {\n this.$uploadModalOpen.set(false);\n if (!item) return;\n\n this._refresh$.next(null);\n this.menuService.reload();\n }\n\n private setPageTitle(): void {\n this.apiKey$\n .pipe(\n take(1),\n switchMap(apiKey => this.ikoManagementApiService.getIkoRepositoryConfig(apiKey))\n )\n .subscribe(repositoryConfig => {\n this.pageTitleService.setCustomPageTitle(repositoryConfig.title);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [items]=\"ikoViews$ | async\"\n [loading]=\"$loading()\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"uploadButton\"></ng-container>\n\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addViewButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addViewButton\"\n [description]=\"'ikoManagement.views.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.views.noResultsTitle' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #uploadButton>\n <button [iconOnly]=\"true\" cdsButton=\"ghost\" (click)=\"openUploadModal()\">\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #addViewButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'ikoManagement.views.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-iko-management-view-modal\n *ngIf=\"apiKey$ | async as apiKey\"\n [apiKey]=\"apiKey\"\n [open]=\"$viewModalOpen()\"\n [prefillData]=\"$prefillData()\"\n [usedKeys]=\"usedKeys$ | async\"\n [modalMode]=\"$modalMode()\"\n (modalClose)=\"onViewModalClose($event, apiKey)\"\n></valtimo-iko-management-view-modal>\n\n<valtimo-iko-management-upload-modal\n [open]=\"$uploadModalOpen()\"\n (modalClose)=\"onUploadModalClose($event)\"\n></valtimo-iko-management-upload-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.views.deleteContent\"\n [outputOnConfirm]=\"$keyToDelete()\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {AsyncPipe, CommonModule, NgClass, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {Component, OnInit, OnDestroy} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Search16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n PageTitleService,\n InputModule,\n DatePickerModule,\n SelectModule,\n ParagraphModule,\n InputLabelModule,\n DateTimePickerComponent,\n FormModule,\n} from '@valtimo/components';\nimport {SearchFieldBoolean, SearchFieldValues} from '@valtimo/shared';\nimport {\n ButtonModule as CarbonButtonModule,\n IconModule,\n IconService,\n InputModule as CarbonInputModule,\n LayerModule,\n TabsModule,\n TimePickerModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, take} from 'rxjs';\nimport {IkoSearchActionUser} from '../../models';\nimport {IkoApiService} from '../../services';\nimport {validateBsn} from '@valtimo/shared';\n\ntype SearchFormValue = string | boolean | string[] | null | undefined;\n\n@Component({\n selector: 'valtimo-iko-search',\n standalone: true,\n templateUrl: './iko-search.component.html',\n styleUrls: ['./iko-search.component.scss'],\n imports: [\n CommonModule,\n InputModule,\n CarbonButtonModule,\n CarbonInputModule,\n IconModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CarbonListModule,\n TabsModule,\n LayerModule,\n AsyncPipe,\n SelectModule,\n DatePickerModule,\n NgIf,\n NgClass,\n ParagraphModule,\n TimePickerModule,\n DateTimePickerComponent,\n InputLabelModule,\n InputModule,\n FormModule,\n ],\n})\nexport class IkoSearchComponent implements OnInit, OnDestroy {\n public readonly formValues: Record<string, SearchFormValue> = {};\n public readonly dropdownSelectItemsMap: Map<string, Array<any>> = new Map();\n public readonly values$ = new BehaviorSubject<any>({});\n public readonly bsnErrors: Record<string, string | null> = {};\n\n private readonly BOOLEAN_POSITIVE: SearchFieldBoolean = 'booleanPositive';\n private readonly BOOLEAN_NEGATIVE: SearchFieldBoolean = 'booleanNegative';\n\n private readonly _BOOLEAN_TYPES: Array<SearchFieldBoolean> = [\n this.BOOLEAN_POSITIVE,\n this.BOOLEAN_NEGATIVE,\n ];\n\n public readonly booleanItems$: Observable<Array<any>> = this.translateService.stream('key').pipe(\n map(() =>\n this._BOOLEAN_TYPES.map(type => ({\n id: type,\n text: this.translateService.instant(`searchFields.${type}`),\n }))\n )\n );\n\n private readonly _key$ = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n public readonly ikoSearchActions$: Observable<IkoSearchActionUser[]> = this._key$.pipe(\n switchMap(key =>\n combineLatest([\n of(key),\n this.ikoApiService.cachedMenuItems$,\n this.ikoApiService.getIkoSearchActions(key),\n ])\n ),\n map(([key, menuItems, ikoSearchActions]) => {\n const currentMenuItem = menuItems.find(item => item.key === key);\n\n if (currentMenuItem && currentMenuItem?.title)\n this.pageTitleService.setCustomPageTitle(currentMenuItem.title, true);\n\n return ikoSearchActions;\n })\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly pageTitleService: PageTitleService,\n private readonly iconService: IconService,\n private readonly ikoApiService: IkoApiService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Search16);\n }\n\n public ngOnInit(): void {\n this.openDropdownSubscription();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public searchDisabled(params: {key: string; required: boolean; dataType?: string}[]): boolean {\n const hasMissingRequired = params.some(param => {\n if (!param.required) return false;\n return !this.hasValue(this.formValues[param.key]);\n });\n\n const hasInvalidBsn = params.some(\n param => param.dataType === 'bsn' && this.bsnErrors[param.key] !== null\n );\n\n return hasMissingRequired || hasInvalidBsn;\n }\n\n public isQueryGroup(param: any): param is {group: true; fields: any[]} {\n return param && param.group === true && Array.isArray(param.fields);\n }\n\n public searchGroup(paramKey: string, params: {key: string}[]): void {\n this.values$.pipe(take(1)).subscribe(values => {\n const queryParams: Record<string, any> = {};\n\n for (const param of params) {\n const value = values[param.key];\n\n if (value === null) continue;\n\n if (typeof value === 'object' && value.start !== null && value.end !== null) {\n queryParams[param.key] = JSON.stringify({\n rangeFrom: value.start,\n rangeTo: value.end,\n });\n } else {\n queryParams[param.key] = value;\n }\n }\n\n this.router.navigate([paramKey], {\n relativeTo: this.route,\n queryParams,\n });\n });\n }\n\n public singleValueChange(searchFieldKey: string, value: any, dataType: string): void {\n this.formValues[searchFieldKey] = value;\n\n this.values$.pipe(take(1)).subscribe(values => {\n if (dataType === 'bsn') {\n this.validateBsnValue(searchFieldKey, value);\n }\n\n if (value) {\n this.values$.next({\n ...values,\n [searchFieldKey]: this.getSingleValue(value, dataType),\n });\n } else if (Object.keys(values).includes(searchFieldKey)) {\n const valuesCopy = {...values};\n delete valuesCopy[searchFieldKey];\n this.values$.next(valuesCopy);\n }\n });\n }\n\n public multipleValueChange(searchFieldKey: string, value: any, dataType: string): void {\n this.values$.pipe(take(1)).subscribe(values => {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const hasStart = value.start !== undefined && value.start !== '';\n const hasEnd = value.end !== undefined && value.end !== '';\n\n if (hasStart || hasEnd) {\n this.values$.next({\n ...values,\n [searchFieldKey]: {\n start: hasStart ? this.getSingleValue(value.start, dataType) : null,\n end: hasEnd ? this.getSingleValue(value.end, dataType) : null,\n },\n });\n return;\n }\n }\n\n if (Array.isArray(value) && value.length > 0) {\n this.values$.next({\n ...values,\n [searchFieldKey]: value.map(v =>\n this.getSingleValue(typeof v === 'object' && 'id' in v ? v.id : v, dataType)\n ),\n });\n return;\n }\n\n if (values[searchFieldKey] !== undefined) {\n const valuesCopy = {...values};\n delete valuesCopy[searchFieldKey];\n this.values$.next(valuesCopy);\n }\n });\n }\n\n private openDropdownSubscription(): void {\n combineLatest([this._key$, this.ikoSearchActions$]).subscribe(\n ([aggregateKey, searchActions]) => {\n searchActions.forEach(action => {\n action.searchFields?.forEach(field => {\n if (\n field.dataType === 'time' &&\n field.fieldType === 'single' &&\n this.formValues[field.key] === undefined\n ) {\n this.formValues[field.key] = '';\n }\n\n if (field.dataType === 'time' && field.fieldType === 'range') {\n if (this.formValues[field.key + '_start'] === undefined) {\n this.formValues[field.key + '_start'] = '';\n }\n\n if (this.formValues[field.key + '_end'] === undefined) {\n this.formValues[field.key + '_end'] = '';\n }\n }\n });\n });\n\n searchActions.forEach(action => {\n const actionKey = action.key;\n\n action.searchFields\n ?.filter(field => field.dropdownDataProvider)\n .forEach(field => {\n this.ikoApiService\n .getDropdownData(field.dropdownDataProvider!, aggregateKey, actionKey, field.key)\n .subscribe(dropdownData => {\n this.dropdownSelectItemsMap[field.key] = dropdownData\n ? Object.keys(dropdownData).map(dropdownFieldKey => ({\n id: dropdownFieldKey,\n text: (dropdownData as any)[dropdownFieldKey],\n }))\n : [];\n });\n });\n });\n }\n );\n }\n\n private getSingleValue(value: any, dataType: string): any {\n if (dataType === 'boolean') {\n if (value === this.BOOLEAN_POSITIVE) {\n return true;\n }\n if (value === this.BOOLEAN_NEGATIVE) {\n return false;\n }\n }\n\n return value;\n }\n\n private validateBsnValue(fieldKey: string, value: string | null | undefined): void {\n if (!value) {\n this.bsnErrors[fieldKey] = null;\n return;\n }\n\n const validation = validateBsn(value);\n this.bsnErrors[fieldKey] = validation.isValid ? null : validation.errorKey;\n }\n\n private hasValue(value: SearchFormValue): boolean {\n if (value === null || value === undefined) return false;\n\n if (typeof value === 'string') return value.trim().length > 0;\n\n if (typeof value === 'boolean') return true;\n\n if (Array.isArray(value)) return value.length > 0;\n\n if (typeof value === 'object') {\n const v = value as any;\n return (\n (v.start !== null && v.start !== undefined && v.start !== '') ||\n (v.end !== null && v.end !== undefined && v.end !== '')\n );\n }\n\n return 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@if (ikoSearchActions$ | async; as ikoSearchActions) {\n @if (ikoSearchActions.length === 0) {\n <valtimo-no-results [title]=\"'iko.searchFieldsNoResults' | translate\"></valtimo-no-results>\n\n } @else {\n <h4>{{ 'iko.searchVia' | translate }}</h4>\n\n <cds-tabs class=\"iko-search-tabs\" type=\"line\">\n @for (param of ikoSearchActions; track param.key ?? param.fields?.[0]?.key) {\n <cds-tab\n (keyup.enter)=\"!searchDisabled(param.searchFields) && searchGroup(param.key, param.searchFields)\"\n class=\"query-group\"\n [heading]=\"param.title\"\n [cdsLayer]=\"1\"\n >\n <div class=\"query-group__row\">\n @for (field of param.searchFields; track field.key) {\n <div\n class=\"query-group__field\"\n [ngClass]=\"{\n 'query-group__field--time': field.dataType === 'time',\n 'query-group__field--date': field.dataType === 'date',\n 'query-group__field--datetime': field.dataType === 'datetime',\n }\"\n >\n <v-input-label *ngIf=\"field.title\" [title]=\"field.title\"></v-input-label>\n\n @if (field.dataType === 'text' && field.fieldType === 'single') {\n <v-input\n [dataTestId]=\"'iko-search-field-' + field.key\"\n [name]=\"field.key\"\n [placeholder]=\"'searchFields.textPlaceholder' | translate\"\n [defaultValue]=\"formValues[field.key]\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></v-input>\n\n } @else if (field.dataType === 'text' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <v-input\n name=\"start\"\n [placeholder]=\"'searchFields.textPlaceholder' | translate\"\n ></v-input>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <v-input\n name=\"end\"\n [placeholder]=\"'searchFields.textPlaceholder' | translate\"\n ></v-input>\n </v-form>\n }\n @else if (field.dataType === 'number' && field.fieldType === 'single') {\n <v-input\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [placeholder]=\"'searchFields.numberPlaceholder' | translate\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></v-input>\n\n } @else if (field.dataType === 'number' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <v-input\n type=\"number\"\n name=\"start\"\n [placeholder]=\"'searchFields.numberPlaceholder' | translate\"\n ></v-input>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <v-input\n type=\"number\"\n name=\"end\"\n [placeholder]=\"'searchFields.numberPlaceholder' | translate\"\n ></v-input>\n </v-form>\n }\n @else if (field.dataType === 'boolean' && field.fieldType === 'single') {\n <v-select\n *ngIf=\"booleanItems$ | async as booleanItems\"\n [items]=\"booleanItems\"\n (selectedChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></v-select>\n }\n\n @else if (field.dataType === 'time' && field.fieldType === 'single') {\n <cds-timepicker\n [placeholder]=\"'searchFields.timePlaceholder' | translate\"\n [ngModel]=\"formValues[field.key]\"\n (ngModelChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></cds-timepicker>\n\n } @else if (field.dataType === 'time' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <cds-timepicker [(ngModel)]=\"formValues[field.key + '_start']\"></cds-timepicker>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <cds-timepicker [(ngModel)]=\"formValues[field.key + '_end']\"></cds-timepicker>\n </v-form>\n }\n @else if (field.dataType === 'date' && field.fieldType === 'single') {\n <valtimo-date-time-picker\n [defaultDate]=\"formValues[field.key] ?? ''\"\n [enableTime]=\"false\"\n [showFieldLabel]=\"false\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></valtimo-date-time-picker>\n\n } @else if (field.dataType === 'date' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <valtimo-date-time-picker\n name=\"start\"\n [enableTime]=\"false\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <valtimo-date-time-picker\n name=\"end\"\n [enableTime]=\"false\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n </v-form>\n }\n @else if (field.dataType === 'datetime' && field.fieldType === 'single') {\n <valtimo-date-time-picker\n [enableTime]=\"true\"\n [showFieldLabel]=\"false\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></valtimo-date-time-picker>\n\n } @else if (field.dataType === 'datetime' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <valtimo-date-time-picker\n name=\"start\"\n [enableTime]=\"true\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <valtimo-date-time-picker\n name=\"end\"\n [enableTime]=\"true\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n </v-form>\n }\n </div>\n }\n </div>\n\n <button\n cdsButton=\"primary\"\n class=\"query-group__search-button\"\n [disabled]=\"searchDisabled(param.searchFields)\"\n (click)=\"searchGroup(param.key, param.searchFields)\"\n >\n {{ 'searchFields.searchButtonText' | translate }}\n <svg cdsIcon=\"search\" size=\"16\"></svg>\n </button>\n </cds-tab>\n }\n </cds-tabs>\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\n\nimport {IkoDetailsComponent} from './components/iko-details/iko-details.component';\nimport {IkoListComponent} from './components/iko-list/iko-list.component';\nimport {IkoManagementApiComponent} from './components/iko-management-api/iko-management-api.component';\nimport {IkoManagementSearchFieldsComponent} from './components/iko-management-details/components/search-fields/iko-management-search-fields.component';\nimport {IkoManagementWidgetsComponent} from './components/iko-management-details/components/widgets/iko-management-widgets.component';\nimport {IkoManagementDetailsComponent} from './components/iko-management-details/iko-management-details.component';\nimport {IkoManagementComponent} from './components/iko-management/iko-management.component';\nimport {IkoSearchComponent} from './components/iko-search/iko-search.component';\n\nconst routes: Routes = [\n {\n path: 'iko/:key',\n component: IkoSearchComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n customPageTitle: true,\n },\n },\n {\n path: 'iko/:key/:searchKey',\n component: IkoListComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'interface.results',\n },\n },\n {\n path: 'iko/:key/:searchKey/details/:id',\n component: IkoDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'interface.details',\n customPageTitle: true,\n },\n },\n {\n path: 'iko-management',\n component: IkoManagementApiComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey',\n component: IkoManagementComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey',\n component: IkoManagementDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n customPageTitle: true,\n title: 'IKO Details',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey/search-action/:actionKey',\n component: IkoManagementSearchFieldsComponent,\n canActivate: [AuthGuardService],\n data: {\n customPageTitle: true,\n title: 'IKO Search action details',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey/widget-details/:widgetTabKey',\n component: IkoManagementWidgetsComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'IKO Widget details',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey',\n component: IkoManagementComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey',\n component: IkoManagementDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n customPageTitle: true,\n title: 'IKO Details',\n roles: [ROLE_ADMIN],\n },\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class IkoRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 {CommonModule} from '@angular/common';\nimport {IKO_TOKEN} from '@valtimo/shared';\nimport {IkoRoutingModule} from './iko-routing.module';\nimport {IkoSearchComponent} from './components/iko-search/iko-search.component';\nimport {IkoMenuService} from './services/iko-menu.service';\nimport {MenuService} from '@valtimo/components';\n\n@NgModule({\n imports: [CommonModule, IkoRoutingModule, IkoSearchComponent],\n providers: [\n IkoMenuService,\n {\n provide: IKO_TOKEN,\n useValue: true,\n },\n ],\n})\nexport class IkoModule {\n constructor(\n private readonly ikoMenuService: IkoMenuService,\n private readonly menuService: MenuService\n ) {\n this.menuService.registerAppendMenuItemsFunction(this.ikoMenuService.appendIkoMenuItems);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of iko\n */\n\nexport * from './lib/iko.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.IkoApiService","i2","i3","map","i1.IkoTabService","i2.IkoApiService","i2.IkoTabService","i4","i5","i2.IkoManagementApiService","i7","i1.IkoManagementApiService","i6","take","i3.IkoManagementApiService","i4.IkoApiService","InputModule","CarbonButtonModule","CarbonInputModule","i1.IkoMenuService"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-iko.mjs","sources":["../../../../projects/valtimo/iko/src/lib/services/iko-api.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-tab.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-management-api.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-menu.service.ts","../../../../projects/valtimo/iko/src/lib/services/iko-management-widget-api.service.ts","../../../../projects/valtimo/iko/src/lib/services/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-collection/iko-widget-collection.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-collection/iko-widget-collection.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-collection/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-custom/iko-widget-custom.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-custom/iko-widget-custom.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-custom/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-field/iko-widget-field.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-field/iko-widget-field.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-field/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-formio/iko-widget-formio.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-formio/iko-widget-formio.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-formio/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-interactive-table/iko-widget-interactive-table.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-interactive-table/iko-widget-interactive-table.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-interactive-table/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-table/iko-widget-table.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-table/iko-widget-table.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-table/index.ts","../../../../projects/valtimo/iko/src/lib/components/widget-map/iko-widget-map.component.ts","../../../../projects/valtimo/iko/src/lib/components/widget-map/iko-widget-map.component.html","../../../../projects/valtimo/iko/src/lib/components/widget-map/index.ts","../../../../projects/valtimo/iko/src/lib/components/tabs/iko-widget/iko-widget.component.ts","../../../../projects/valtimo/iko/src/lib/components/tabs/iko-widget/iko-widget.component.html","../../../../projects/valtimo/iko/src/lib/components/tabs/tabs.constants.ts","../../../../projects/valtimo/iko/src/lib/components/iko-details/iko-details.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-details/iko-details.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-list/iko-list.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-list/iko-list.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-properties/iko-management-properties.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-properties/iko-management-properties.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/repository-modal/iko-management-repository-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/repository-modal/iko-management-repository-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/iko-management-api.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-api/iko-management-api.component.html","../../../../projects/valtimo/iko/src/lib/models/iko.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-menu.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-widget.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-management.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-management-list.model.ts","../../../../projects/valtimo/iko/src/lib/models/iko-search-field.model.ts","../../../../projects/valtimo/iko/src/lib/models/index.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/search-field-modal/search-field-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/search-field-modal/search-field-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/iko-management-search-fields.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-fields/iko-management-search-fields.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/widgets/iko-management-widgets.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/widgets/iko-management-widgets.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/search-action-modal/search-action-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/search-action-modal/search-action-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/iko-management-search-actions.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/search-actions/iko-management-search-actions.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list-modal/list-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list-modal/list-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list/iko-management-list.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/list/iko-management-list.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tab-detail-modal/iko-management-tab-details-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tab-detail-modal/iko-management-tab-details-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tabs/iko-management-tabs.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/components/tabs/iko-management-tabs.component.html","../../../../projects/valtimo/iko/src/lib/constants/iko-management.constants.ts","../../../../projects/valtimo/iko/src/lib/constants/index.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/iko-management-details.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management-details/iko-management-details.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/view-modal/iko-management-view-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/view-modal/iko-management-view-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/iko-management-upload.constants.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/step/iko-management-upload-step.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/step/iko-management-upload-step.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/iko-management-upload-modal.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/upload-modal/iko-management-upload-modal.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-management/iko-management.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-management/iko-management.component.html","../../../../projects/valtimo/iko/src/lib/components/iko-search/iko-search.component.ts","../../../../projects/valtimo/iko/src/lib/components/iko-search/iko-search.component.html","../../../../projects/valtimo/iko/src/lib/iko-routing.module.ts","../../../../projects/valtimo/iko/src/lib/iko.module.ts","../../../../projects/valtimo/iko/src/public-api.ts","../../../../projects/valtimo/iko/src/valtimo-iko.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {BaseApiService, ConfigService, GlobalNotificationService} from '@valtimo/shared';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {IkoView, IkoSearchActionUser, IkoListResponse, IkoTab} from '../models';\nimport {WidgetAction} from '@valtimo/layout';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IkoApiService extends BaseApiService {\n private readonly _cachedMenuItems$ = new BehaviorSubject<IkoView[]>([]);\n\n public get cachedMenuItems$(): Observable<IkoView[]> {\n return this._cachedMenuItems$.asObservable();\n }\n\n public setCachedMenuItems(items: IkoView[]): void {\n this._cachedMenuItems$.next(items);\n }\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService,\n protected readonly globalNotificationService: GlobalNotificationService\n ) {\n super(httpClient, configService);\n }\n\n public getIkoViews(\n key?: string,\n title?: string,\n page: number = 0,\n size: number = 10000,\n sort: string = 'title,asc'\n ): Observable<{content: IkoView[]}> {\n const params = new URLSearchParams();\n if (key) params.append('key', key);\n if (title) params.append('title', title);\n params.append('page', page.toString());\n params.append('size', size.toString());\n params.append('sort', sort);\n\n return this.httpClient.get<{\n content: IkoView[];\n }>(this.getApiUrl(`/v1/iko-view?${params.toString()}`));\n }\n\n public getIkoDetailTabs(ikoViewKey: string): Observable<IkoTab[]> {\n return this.httpClient.get<IkoTab[]>(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab`));\n }\n\n public getIkoSearchActions(ikoViewKey: string): Observable<IkoSearchActionUser[]> {\n return this.httpClient.get<IkoSearchActionUser[]>(\n this.getApiUrl(`/v1/iko-view/${ikoViewKey}/search-action`)\n );\n }\n\n public getIkoWidget(ikoViewKey: string, tabKey: string): any {\n return this.httpClient.get(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget`));\n }\n\n public getIkoWidgetData(ikoViewKey: string, tabKey: string, widgetId: string, id: string): any {\n return this.httpClient.get(\n this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget/${widgetId}/data?id=${id}`)\n );\n }\n\n public searchIkoSearchAction(\n ikoKey: string,\n paramKey: string,\n filters: {filters: {[key: string]: string}}\n ): Observable<IkoListResponse> {\n return this.httpClient.post<IkoListResponse>(\n this.getApiUrl(`/v1/iko-view/${ikoKey}/search-action/${paramKey}/search`),\n filters\n );\n }\n\n public getDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.get<object>(\n this.getApiUrl(`/v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`)\n );\n }\n\n public handleAction(action: WidgetAction, resolved: {[key: string]: string} = null) {\n if (!action) return;\n\n const navigateTo = this.resolveProperty(action?.navigateTo, resolved);\n if (navigateTo) {\n this.navigateTo(navigateTo);\n return;\n }\n\n const caseDefinitionKey = this.resolveProperty(action?.caseDefinitionKey, resolved);\n\n if (caseDefinitionKey) this.startCase(caseDefinitionKey);\n\n const processDefinitionKey = this.resolveProperty(action?.processDefinitionKey, resolved);\n\n if (processDefinitionKey) {\n this.globalNotificationService.showToast({\n title: 'An unexpected error occurred',\n caption: `Unsupported action: Start process ${processDefinitionKey}`,\n type: 'error',\n });\n }\n }\n\n private navigateTo(navigateTo: string) {\n if (navigateTo.startsWith(window.location.origin) || navigateTo.startsWith('/')) {\n window.open(navigateTo, '_self');\n } else if (navigateTo.startsWith('http')) {\n window.open(navigateTo, '_blank');\n } else {\n this.globalNotificationService.showToast({\n title: 'An unexpected error occurred',\n caption: `Unable to navigate to ${navigateTo}`,\n type: 'error',\n });\n }\n }\n\n private startCase(caseDefinitionKey: string) {\n this.globalNotificationService.showToast({\n title: 'Test',\n caption: `Start case ${caseDefinitionKey}`,\n type: 'info',\n });\n }\n\n private resolveProperty(property: string, resolved: {[key: string]: any}): string {\n return property ? (resolved ? String(resolved[property]) : property) : null;\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\nimport {IkoTab} from '../models';\nimport {map} from 'rxjs/operators';\nimport {NGXLogger} from 'ngx-logger';\n\n@Injectable({providedIn: 'root'})\nexport class IkoTabService {\n private readonly _activeTab$ = new BehaviorSubject<IkoTab | null>(null);\n private readonly _ikoViewKey$ = new BehaviorSubject<string | null>(null);\n private readonly _entryId$ = new BehaviorSubject<string | null>(null);\n\n public get activeTab$(): Observable<IkoTab> {\n return this._activeTab$.pipe(filter(tab => !!tab));\n }\n\n public get activeTabKey$(): Observable<string> {\n return this.activeTab$.pipe(map(tab => tab.key));\n }\n\n public get ikoViewKey$(): Observable<string> {\n return this._ikoViewKey$.pipe(filter(key => !!key));\n }\n\n public get entryId$(): Observable<string> {\n return this._entryId$.pipe(filter(key => !!key));\n }\n\n constructor(private readonly logger: NGXLogger) {}\n\n public setActiveTab(tab: IkoTab): void {\n this._activeTab$.next(tab);\n this.logger.debug(`Active IKO tab set to ${JSON.stringify(tab)}`);\n }\n\n public setIkoViewKey(key: string): void {\n this._ikoViewKey$.next(key);\n this.logger.debug(`Active IKO view key set to ${key}`);\n }\n\n public setEntryId(id: string): void {\n this._entryId$.next(id);\n this.logger.debug(`Active IKO entry id set to ${id}`);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient, HttpParams, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService, Page, InterceptorSkipHeader} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {\n IkoViewCreateRequest,\n IkoViewListResponse,\n IkoViewResponse,\n IkoViewUpdateRequest,\n IkoSearchActionCreateRequest,\n IkoSearchActionResponse,\n IkoSearchActionUpdateRequest,\n IkoListColumnRequest,\n IkoRepositoryConfigCreateRequest,\n IkoRepositoryConfigListResponse,\n IkoRepositoryConfigResponse,\n IkoRepositoryConfigUpdateRequest,\n IkoSearchField,\n IkoSearchFieldCreateRequest,\n IkoTabCreateRequest,\n ListColumnDto,\n PropertyField,\n TabDto,\n WidgetDto,\n} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IkoManagementApiService extends BaseApiService {\n constructor(\n protected override httpClient: HttpClient,\n protected override configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getIkoViews(\n key?: string,\n title?: string,\n page: number = 0,\n size: number = 100,\n sort: string = 'title,asc'\n ): Observable<{content: IkoViewListResponse[]}> {\n let params = new HttpParams().set('page', page).set('size', size).set('sort', sort);\n if (key) params = params.set('key', key);\n if (title) params = params.set('title', title);\n return this.httpClient.get<{content: IkoViewListResponse[]}>(this.getApiUrl('/v1/iko-view'), {\n params,\n });\n }\n\n public getIkoView(key: string): Observable<IkoViewResponse> {\n return this.httpClient.get<IkoViewResponse>(this.getApiUrl(`/v1/iko-view/${key}`));\n }\n\n public createIkoView(key: string, body: IkoViewCreateRequest): Observable<IkoViewResponse> {\n return this.httpClient.post<IkoViewResponse>(\n this.getApiUrl(`management/v1/iko-view/${key}`),\n body\n );\n }\n\n public updateIkoView(key: string, body: IkoViewUpdateRequest): Observable<IkoViewResponse> {\n return this.httpClient.put<IkoViewResponse>(\n this.getApiUrl(`management/v1/iko-view/${key}`),\n body\n );\n }\n\n public deleteIkoView(key: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`management/v1/iko-view/${key}`));\n }\n\n public exportIKOConfiguration(key: string): Observable<HttpResponse<Blob>> {\n return this.httpClient.get<Blob>(this.getApiUrl(`management/v1/iko-view/${key}/export`), {\n observe: 'response',\n responseType: 'blob' as 'json',\n headers: InterceptorSkipHeader,\n });\n }\n\n public importConfigurationZip(file: any): Observable<HttpResponse<Blob>> {\n return this.httpClient.post<HttpResponse<Blob>>(\n this.getApiUrl(`management/v1/iko-view/import`),\n file\n );\n }\n\n public getIkoRepositoryPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`management/v1/iko-property-fields/${type}/repository-config`)\n );\n }\n\n public getIkoViewPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`management/v1/iko-property-fields/${type}/view`)\n );\n }\n\n public getIkoViewType(key: string): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.get<IkoRepositoryConfigResponse>(\n this.getApiUrl(`/management/v1/iko/${key}`)\n );\n }\n\n public getManagementIkoViews(\n key?: string,\n title?: string,\n ikoRepositoryConfigKey?: string,\n page: number = 0,\n size: number = 100,\n sort: string = 'title,asc'\n ): Observable<Page<IkoViewResponse>> {\n let params = new HttpParams().set('page', page).set('size', size).set('sort', sort);\n if (key) params = params.set('key', key);\n if (title) params = params.set('title', title);\n if (ikoRepositoryConfigKey)\n params = params.set('ikoRepositoryConfigKey', ikoRepositoryConfigKey);\n return this.httpClient.get<Page<IkoViewResponse>>(this.getApiUrl(`management/v1/iko-view`), {\n params,\n });\n }\n\n public getManagementIkoSearchActions(\n aggregateKey: string\n ): Observable<IkoSearchActionResponse[]> {\n return this.httpClient.get<IkoSearchActionResponse[]>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action`)\n );\n }\n\n public getIkoSearchAction(\n aggregateKey: string,\n key: string\n ): Observable<IkoSearchActionResponse> {\n return this.httpClient.get<IkoSearchActionResponse>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${key}`)\n );\n }\n\n public createIkoSearchAction(\n aggregateKey: string,\n key: string,\n body: IkoSearchActionCreateRequest\n ): Observable<IkoSearchActionResponse> {\n return this.httpClient.post<IkoSearchActionResponse>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${key}`),\n body\n );\n }\n\n public updateIkoSearchActions(\n aggregateKey: string,\n body: IkoSearchActionUpdateRequest[]\n ): Observable<IkoSearchActionResponse[]> {\n return this.httpClient.put<IkoSearchActionResponse[]>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action`),\n body\n );\n }\n\n public updateIkoSearchAction(\n aggregateKey: string,\n actionKey: string,\n body: IkoSearchActionUpdateRequest\n ): Observable<IkoSearchActionResponse> {\n return this.httpClient.put<IkoSearchActionResponse>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${actionKey}`),\n body\n );\n }\n\n public deleteIkoSearchAction(aggregateKey: string, key: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(`management/v1/iko-view/${aggregateKey}/search-action/${key}`)\n );\n }\n\n public getIkoSearchActionPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`management/v1/iko-property-fields/${type}/search-action`)\n );\n }\n\n public getIkoRepositoryConfigs(): Observable<{content: IkoRepositoryConfigListResponse[]}> {\n return this.httpClient.get<{content: IkoRepositoryConfigListResponse[]}>(\n this.getApiUrl(`/management/v1/iko`)\n );\n }\n\n public getIkoRepositoryConfig(key: string): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.get<IkoRepositoryConfigResponse>(\n this.getApiUrl(`/management/v1/iko/${key}`)\n );\n }\n\n public createIkoRepositoryConfig(\n key: string,\n body: IkoRepositoryConfigCreateRequest\n ): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.post<IkoRepositoryConfigResponse>(\n this.getApiUrl(`management/v1/iko/${key}`),\n body\n );\n }\n\n public updateIkoRepositoryConfig(\n key: string,\n body: IkoRepositoryConfigUpdateRequest\n ): Observable<IkoRepositoryConfigResponse> {\n return this.httpClient.put<IkoRepositoryConfigResponse>(\n this.getApiUrl(`/management/v1/iko/${key}`),\n body\n );\n }\n\n public deleteIkoRepositoryConfig(key: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`/management/v1/iko/${key}`));\n }\n\n public getIkoRepositoryConfigPropertyFields(type: string): Observable<PropertyField[]> {\n return this.httpClient.get<PropertyField[]>(\n this.getApiUrl(`/management/v1/iko-property-fields/${type}/repository-config`)\n );\n }\n\n public getIkoRepositoryTypes(): Observable<{[key: string]: string}> {\n return this.httpClient.get<{[key: string]: string}>(this.getApiUrl(`/management/v1/iko-types`));\n }\n\n public getIkoTabs(aggregateKey: string): Observable<TabDto[]> {\n return this.httpClient.get<TabDto[]>(this.getApiUrl(`/v1/iko-view/${aggregateKey}/tab`));\n }\n\n public getIkoTab(aggregateKey: string, tabKey: string): Observable<TabDto> {\n return this.httpClient.get<TabDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`)\n );\n }\n\n public createIkoTab(\n aggregateKey: string,\n tabKey: string,\n body: IkoTabCreateRequest\n ): Observable<TabDto> {\n return this.httpClient.post<TabDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`),\n body\n );\n }\n\n public updateIkoTabs(aggregateKey: string, body: TabDto[]): Observable<TabDto[]> {\n return this.httpClient.put<TabDto[]>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab`),\n body\n );\n }\n\n public updateIkoTab(aggregateKey: string, tabKey: string, body: TabDto): Observable<TabDto> {\n return this.httpClient.put<TabDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`),\n body\n );\n }\n\n public deleteIkoTab(aggregateKey: string, tabKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/tab/${tabKey}`)\n );\n }\n\n public getIkoWidget(\n aggregateKey: string,\n tabKey: string,\n widgetKey: string\n ): Observable<WidgetDto> {\n return this.httpClient.get<WidgetDto>(\n this.getApiUrl(`/v1/iko-view/${aggregateKey}/tab/${tabKey}/widget/${widgetKey}`)\n );\n }\n\n public getIkoSearchFields(\n aggregateKey: string,\n requestKey: string\n ): Observable<IkoSearchField[]> {\n return this.httpClient.get<IkoSearchField[]>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field`\n )\n );\n }\n\n public getIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n key: string\n ): Observable<IkoSearchField> {\n return this.httpClient.get<IkoSearchField>(\n this.getApiUrl(`/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${key}`)\n );\n }\n\n public createIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n key: string,\n body: IkoSearchFieldCreateRequest\n ): Observable<IkoSearchField> {\n return this.httpClient.post<IkoSearchField>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${key}`\n ),\n body\n );\n }\n\n public updateIkoSearchFields(\n aggregateKey: string,\n requestKey: string,\n body: IkoSearchField[]\n ): Observable<IkoSearchField[]> {\n return this.httpClient.put<IkoSearchField[]>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field`\n ),\n body\n );\n }\n\n public updateIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n fieldKey: string,\n body: IkoSearchField\n ): Observable<IkoSearchField> {\n return this.httpClient.put<IkoSearchField>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${fieldKey}`\n ),\n body\n );\n }\n\n public deleteIkoSearchField(\n aggregateKey: string,\n requestKey: string,\n key: string\n ): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `management/v1/iko-view/${aggregateKey}/search-action/${requestKey}/search-field/${key}`\n )\n );\n }\n\n public getIkoListColumns(aggregateKey: string): Observable<ListColumnDto[]> {\n return this.httpClient.get<ListColumnDto[]>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column`)\n );\n }\n\n public getIkoListColumn(aggregateKey: string, columnKey: string): Observable<ListColumnDto> {\n return this.httpClient.get<ListColumnDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`)\n );\n }\n\n public createIkoListColumn(\n aggregateKey: string,\n columnKey: string,\n body: IkoListColumnRequest\n ): Observable<ListColumnDto> {\n return this.httpClient.post<ListColumnDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`),\n body\n );\n }\n\n public updateListColumn(\n aggregateKey: string,\n columnKey: string,\n body: IkoListColumnRequest\n ): Observable<ListColumnDto> {\n return this.httpClient.put<ListColumnDto>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`),\n body\n );\n }\n\n public updateIkoListColumnOrder(\n aggregateKey: string,\n body: IkoListColumnRequest[]\n ): Observable<ListColumnDto[]> {\n return this.httpClient.put<ListColumnDto[]>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column`),\n body\n );\n }\n\n public deleteIkoListColumn(aggregateKey: string, columnKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(`/management/v1/iko-view/${aggregateKey}/column/${columnKey}`)\n );\n }\n\n public getDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.get<object>(\n this.getApiUrl(`/v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`)\n );\n }\n\n public postDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string,\n dropdownData: object\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.post<object>(\n this.getApiUrl(`v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`),\n dropdownData\n );\n }\n\n public deleteDropdownData(\n provider: string,\n ikoViewKey: string,\n ikoSearchActionKey: string,\n searchFieldKey: string\n ): Observable<object> {\n const dropdownListKey = encodeURI(ikoViewKey + '_' + ikoSearchActionKey + '_' + searchFieldKey);\n return this.httpClient.delete<object>(\n this.getApiUrl(`v1/data/dropdown-list?provider=${provider}&key=${dropdownListKey}`)\n );\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Injectable} from '@angular/core';\nimport {MenuItem} from '@valtimo/shared';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {IkoApiService} from './iko-api.service';\n\n@Injectable({providedIn: 'root'})\nexport class IkoMenuService {\n private readonly _IKO_MENU_ITEM_TITLE_TRANSLATION_KEY = 'iko.pageTitle';\n\n constructor(private readonly ikoApiService: IkoApiService) {}\n\n public appendIkoMenuItems = (menuItems: MenuItem[]): Observable<MenuItem[]> => {\n const ikoExists = menuItems.some(\n item => item.title === this._IKO_MENU_ITEM_TITLE_TRANSLATION_KEY\n );\n if (ikoExists) return of(menuItems);\n\n return this.ikoApiService.getIkoViews().pipe(\n map(ikoItems => {\n this.ikoApiService.setCachedMenuItems(ikoItems.content);\n\n let updatedMenuItems = [...menuItems];\n\n if (ikoItems.content?.length) {\n const ikoSubMenu: MenuItem[] = ikoItems.content.map((item, index) => ({\n link: ['/iko', item.key],\n title: item.title,\n sequence: index,\n show: true,\n }));\n\n const ikoMenu: MenuItem = {\n title: this._IKO_MENU_ITEM_TITLE_TRANSLATION_KEY,\n iconClass: 'icon mdi mdi-account',\n show: true,\n sequence: this.getIkoSequenceAfterCases(menuItems),\n children: ikoSubMenu,\n };\n\n updatedMenuItems = [...menuItems, ikoMenu].sort((a, b) => a.sequence - b.sequence);\n }\n\n const adminMenuItem = updatedMenuItems.find(\n item =>\n item.title.toUpperCase().includes('ADMIN') && !item.title.toUpperCase().includes('IKO')\n );\n\n if (adminMenuItem && !adminMenuItem.children.some(item => item.title === 'IKO')) {\n adminMenuItem.children = [\n ...adminMenuItem.children,\n {\n title: 'IKO',\n show: true,\n sequence: this.getIkoSequenceAfterCases(adminMenuItem.children ?? []),\n link: ['/iko-management'],\n },\n ].sort((a, b) => a.sequence - b.sequence);\n }\n\n return updatedMenuItems;\n })\n );\n };\n\n private getIkoSequenceAfterCases(menuItems: MenuItem[]): number {\n const casesItem = menuItems.find(item => item.title === 'Cases' || item.title === 'Dossiers');\n return Number(casesItem?.sequence ?? 0) + 0.5;\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BasicWidget, IWidgetManagementService} from '@valtimo/layout';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {isEqual} from 'lodash';\nimport {BehaviorSubject, filter, Observable, switchMap} from 'rxjs';\nimport {IkoManagementParams} from '../models';\n\n@Injectable()\nexport class IkoWidgetManagementApiService\n extends BaseApiService\n implements IWidgetManagementService<IkoManagementParams>\n{\n private readonly _params$ = new BehaviorSubject<IkoManagementParams | null>(null);\n private get _params(): IkoManagementParams {\n return this._params$.getValue();\n }\n public get params$(): Observable<IkoManagementParams> {\n return this._params$.pipe(filter(params => !!params));\n }\n\n constructor(\n protected override httpClient: HttpClient,\n protected override configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public initParams(serviceParams: IkoManagementParams): void {\n if (!isEqual(serviceParams, this._params)) this._params$.next(serviceParams);\n }\n\n public getWidgetConfiguration(): Observable<BasicWidget[]> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.get<BasicWidget[]>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget`\n )\n )\n )\n );\n }\n\n public updateWidgetConfiguration(widgets: BasicWidget[]): Observable<BasicWidget[]> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.put<BasicWidget[]>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget`\n ),\n widgets\n )\n )\n );\n }\n\n public deleteWidget(widget: BasicWidget): Observable<void> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.delete<void>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget/${widget.key}`\n )\n )\n )\n );\n }\n\n public updateWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.put<BasicWidget>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget/${widget.key}`\n ),\n widget\n )\n )\n );\n }\n\n public createWidget(widget: BasicWidget): Observable<BasicWidget> {\n return this.params$.pipe(\n filter((params: IkoManagementParams | null) => !!params),\n switchMap((params: IkoManagementParams | null) =>\n this.httpClient.post<BasicWidget>(\n this.getApiUrl(\n `management/v1/iko-view/${params?.aggregateKey}/tab/${params?.widgetTabKey}/widget/${widget.key}`\n ),\n widget\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\nexport * from './iko-api.service';\nexport * from './iko-tab.service';\nexport * from './iko-management-api.service';\nexport * from './iko-menu.service';\nexport * from './iko-management-widget-api.service';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {\n CollectionWidget,\n WidgetAction,\n WidgetCollectionComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-collection',\n templateUrl: './iko-widget-collection.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n WidgetCollectionComponent,\n ],\n})\nexport class IkoWidgetCollectionComponent {\n @Input() public set widgetConfiguration(value: CollectionWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionWidget | null>(null);\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n</valtimo-widget-collection>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-collection.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BehaviorSubject, combineLatest, filter, Observable, of, switchMap, tap} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {CustomWidget, WidgetCustomComponent, WidgetLayoutService} from '@valtimo/layout';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-custom',\n templateUrl: './iko-widget-custom.component.html',\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IkoWidgetCustomComponent {\n @Input() public set widgetConfiguration(value: CustomWidget) {\n if (!value) return;\n this._widgetConfigSubject$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n public readonly widgetData$ = combineLatest([\n this._widgetConfigSubject$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [widgetUuid]=\"widgetUuid\"\n>\n</valtimo-widget-custom>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-custom.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {\n FieldsWidget,\n WidgetAction,\n WidgetFieldComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, take, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-field',\n templateUrl: './iko-widget-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetFieldComponent,\n ],\n})\nexport class IkoWidgetFieldComponent {\n @Input() public set widgetConfiguration(value: FieldsWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsWidget | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-field\n [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetData]=\"widgetData$ | async\"\n>\n</valtimo-widget-field>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-field.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {BehaviorSubject, combineLatest, filter, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormIoModule} from '@valtimo/components';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {\n FormioWidgetWidgetWithUuid,\n WidgetFormioComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {IkoApiService} from '../../services';\nimport {IkoWidgetParams} from '../../models';\n\n// TODO: remove component, document id is required, which makes no sense for iko\n@Component({\n selector: 'valtimo-iko-widget-formio',\n templateUrl: './iko-widget-formio.component.html',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IkoWidgetFormioComponent {\n @Input() public set widgetConfiguration(value: FormioWidgetWidgetWithUuid) {\n if (!value) return;\n this._widgetConfigurationSubject$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [widgetUuid]=\"widgetUuid\"\n>\n</valtimo-widget-formio>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-formio.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CaseListActionsComponent, CaseListService} from '@valtimo/case';\nimport {CarbonListModule} from '@valtimo/components';\nimport {CaseDefinition} from '@valtimo/document';\nimport {\n InteractiveTableWidget,\n WidgetAction,\n WidgetFormioComponent,\n WidgetInteractiveTableComponent,\n WidgetLayoutService,\n} from '@valtimo/layout';\nimport {\n ButtonModule,\n ModalModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-interactive-table',\n templateUrl: './iko-widget-interactive-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n WidgetInteractiveTableComponent,\n CaseListActionsComponent,\n ModalModule,\n WidgetFormioComponent,\n ],\n providers: [CaseListService],\n})\nexport class IkoWidgetInteractiveTableComponent {\n @ViewChild(CaseListActionsComponent) listActionsComponent: CaseListActionsComponent;\n\n private _widgetConfiguration: InteractiveTableWidget;\n public readonly widgetConfiguration$ = new BehaviorSubject<InteractiveTableWidget | null>(null);\n @Input({required: true}) public set widgetConfiguration(value: InteractiveTableWidget) {\n this._widgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public get widgetConfiguration(): InteractiveTableWidget {\n return this._widgetConfiguration;\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n this.listService.forceRefresh$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly listService: CaseListService\n ) {}\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n public onRowClickEvent(event: any, widgetConfiguration: InteractiveTableWidget): void {\n this.ikoApiService.handleAction(widgetConfiguration.properties.rowClickAction, event.resolved);\n }\n\n public onActionEvent(action: WidgetAction, resolvedData: {[key: string]: any}): void {\n this.ikoApiService.handleAction(action, resolvedData);\n }\n\n public onCaseStartEvent(caseDefintion: CaseDefinition): void {\n this.listService.setCaseDefinitionKey(caseDefintion.caseDefinitionKey);\n this.listActionsComponent.startCase();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-interactive-table\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetData]=\"obs.widgetData\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n (actionEvent)=\"onActionEvent($event, obs.widgetData.resolved)\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n (rowClickEvent)=\"onRowClickEvent($event, obs.widgetConfiguration)\"\n (caseStartEvent)=\"onCaseStartEvent($event)\"\n>\n</valtimo-widget-interactive-table>\n\n<valtimo-case-list-actions [navigateAfterSubmit]=\"false\"></valtimo-case-list-actions>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-interactive-table.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, tap} from 'rxjs';\nimport {\n TableWidget,\n WidgetAction,\n WidgetLayoutService,\n WidgetTableComponent,\n WidgetTableContent,\n WidgetWithUuid,\n} from '@valtimo/layout';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-table',\n templateUrl: './iko-widget-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n WidgetTableComponent,\n ],\n})\nexport class IkoWidgetTableComponent {\n private _widgetConfiguration: TableWidget;\n public readonly widgetConfiguration$ = new BehaviorSubject<TableWidget | null>(null);\n @Input({required: true}) public set widgetConfiguration(value: TableWidget) {\n this._widgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public get widgetConfiguration(): TableWidget {\n return this._widgetConfiguration;\n }\n\n @Input() public readonly widgetUuid: string;\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n\n public onPaginationEvent(event: PaginationModel): void {\n this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);\n }\n\n private getPageSizeParam(widgetConfiguration: WidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as WidgetTableContent).defaultPageSize}`;\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n</valtimo-widget-table>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-table.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {MapWidget, WidgetMapComponent, WidgetLayoutService} from '@valtimo/layout';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, of, switchMap, take, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../models';\nimport {IkoApiService} from '../../services';\n\n@Component({\n selector: 'valtimo-iko-widget-map',\n templateUrl: './iko-widget-map.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n WidgetMapComponent,\n ],\n})\nexport class IkoWidgetMapComponent {\n @Input() public set widgetConfiguration(value: MapWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n private readonly _widgetParams$ = new BehaviorSubject<IkoWidgetParams | null>(null);\n @Input() public set widgetParams(value: IkoWidgetParams) {\n this._widgetParams$.next(value);\n }\n\n @Input() public readonly widgetUuid: string;\n\n public readonly widgetConfiguration$ = new BehaviorSubject<MapWidget | null>(null);\n\n public readonly widgetData$ = combineLatest([\n this.widgetConfiguration$,\n this._widgetParams$,\n ]).pipe(\n switchMap(([widgetConfiguration, widgetParams]) =>\n !widgetParams || !widgetConfiguration\n ? of(null)\n : this.ikoApiService.getIkoWidgetData(\n widgetParams.ikoViewKey,\n widgetParams.tabKey,\n widgetConfiguration.key,\n widgetParams.entryId\n )\n ),\n tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid))\n );\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-map\n [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetData]=\"widgetData$ | async\"\n>\n</valtimo-widget-map>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-widget-map.component';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {FitPageDirective} from '@valtimo/components';\nimport {WidgetComponentMap, WidgetContainerComponent, WidgetType} from '@valtimo/layout';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, tap} from 'rxjs';\nimport {IkoWidgetParams} from '../../../models';\nimport {IkoApiService, IkoTabService} from '../../../services';\nimport {IkoWidgetCollectionComponent} from '../../widget-collection';\nimport {IkoWidgetCustomComponent} from '../../widget-custom';\nimport {IkoWidgetFieldComponent} from '../../widget-field';\nimport {IkoWidgetFormioComponent} from '../../widget-formio';\nimport {IkoWidgetInteractiveTableComponent} from '../../widget-interactive-table';\nimport {IkoWidgetTableComponent} from '../../widget-table';\nimport {IkoWidgetMapComponent} from '../../widget-map';\n\n@Component({\n templateUrl: './iko-widget.component.html',\n styleUrl: './iko-widget.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, WidgetContainerComponent, FitPageDirective],\n})\nexport class IkoWidgetComponent {\n public readonly ikoViewKey$ = this.ikoTabService.ikoViewKey$;\n public readonly entryId$ = this.ikoTabService.entryId$;\n\n private readonly _key$ = new BehaviorSubject<string>('');\n\n @Input() public set key(value: string) {\n this._key$.next(value);\n }\n public get key$(): Observable<string> {\n return this._key$.pipe(filter((key: string) => !!key));\n }\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public widgets$ = combineLatest([this.ikoViewKey$, this.key$]).pipe(\n switchMap(([ikoViewKey, key]) => this.ikoApiService.getIkoWidget(ikoViewKey, key))\n );\n public widgetParams$: Observable<IkoWidgetParams> = combineLatest([\n this.ikoViewKey$,\n this.key$,\n this.entryId$,\n ]).pipe(\n map(([ikoViewKey, tabKey, entryId]) => ({\n ikoViewKey,\n entryId,\n tabKey,\n })),\n tap(widgets => {\n this.logger.debug(`IKO widgets retrieved ${JSON.stringify(widgets)}`);\n this.loading$.next(false);\n })\n );\n\n public readonly widgetComponentMap: WidgetComponentMap = {\n [WidgetType.FIELDS]: IkoWidgetFieldComponent,\n [WidgetType.CUSTOM]: IkoWidgetCustomComponent,\n [WidgetType.FORMIO]: IkoWidgetFormioComponent,\n [WidgetType.TABLE]: IkoWidgetTableComponent,\n [WidgetType.INTERACTIVE_TABLE]: IkoWidgetInteractiveTableComponent,\n [WidgetType.COLLECTION]: IkoWidgetCollectionComponent,\n [WidgetType.MAP]: IkoWidgetMapComponent,\n };\n\n constructor(\n private readonly ikoTabService: IkoTabService,\n private readonly ikoApiService: IkoApiService,\n private readonly logger: NGXLogger\n ) {}\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-widget-container\n fitPage\n [spaceAdjustment]=\"-32\"\n [disableOverflow]=\"true\"\n class=\"iko-widget-container\"\n [widgets]=\"widgets$ | async\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetParams]=\"widgetParams$ | async\"\n>\n</valtimo-widget-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IkoComponentType} from '../../models';\nimport {IkoWidgetComponent} from './iko-widget/iko-widget.component';\n\nexport const IkoTabComponents = [IkoWidgetComponent];\n\nexport const TabComponentTypes: Record<IkoComponentType, object> = {\n widgets: IkoWidgetComponent,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n BreadcrumbService,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {TabsModule} from 'carbon-components-angular';\nimport {combineLatest, Observable, switchMap, tap} from 'rxjs';\nimport {IkoTab} from '../../models';\nimport {IkoApiService, IkoTabService} from '../../services';\nimport {IkoTabComponents, TabComponentTypes} from '../tabs/tabs.constants';\n\n@Component({\n templateUrl: './iko-details.component.html',\n styleUrl: './iko-details.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, TabsModule, RenderInPageHeaderDirective, ...[IkoTabComponents]],\n})\nexport class IkoDetailsComponent implements OnDestroy {\n @ViewChild('content', {read: ViewContainerRef, static: true})\n private readonly _container: ViewContainerRef;\n\n public readonly activeTabKey$ = this.ikoTabService.activeTabKey$;\n\n public readonly tabs$: Observable<IkoTab[]> = combineLatest([\n this.route.params,\n this.route.queryParams,\n this.translateService.stream('interface.results'),\n this.ikoApiService.cachedMenuItems$,\n ]).pipe(\n tap(([params, queryParams, breadcrumbTitle, menuItems]) => {\n const currentMenuItem = menuItems.find(item => item.key === params.key);\n\n if (currentMenuItem && currentMenuItem?.title)\n this.pageTitleService.setCustomPageTitle(currentMenuItem.title, true);\n\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/iko/${params.key}`],\n content: currentMenuItem?.title ?? '',\n href: `/iko/${params.key}`,\n });\n\n this.breadcrumbService.setThirdBreadcrumb({\n content: breadcrumbTitle,\n route: [`/iko/${params.key}/${params.searchKey}`],\n href: `/iko/${params.key}/${params.searchKey}`,\n routeExtras: {queryParams},\n });\n this.ikoTabService.setIkoViewKey(params.key);\n this.ikoTabService.setEntryId(params.id);\n }),\n switchMap(([params]) => this.ikoApiService.getIkoDetailTabs(params.key)),\n tap((tabs: IkoTab[]) => this.ikoTabService.setActiveTab(tabs[0]))\n );\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoApiService: IkoApiService,\n private readonly ikoTabService: IkoTabService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.pageTitleService.enableReset();\n }\n\n public onTabSelected(tab: IkoTab): void {\n this.ikoTabService.setActiveTab(tab);\n this._container.clear();\n const componentRef = this._container.createComponent<any>(TabComponentTypes[tab.type] as any);\n componentRef.instance.key = tab.key;\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{tabs: tabs$ | async, activeTabKey: activeTabKey$ | async} as obs\"\n renderInPageHeader\n>\n <ng-template>\n <cds-tabs class=\"valtimo-iko-details\">\n @for (tab of obs.tabs; track tab.key) {\n <cds-tab\n [active]=\"obs.activeTabKey === tab.key\"\n [heading]=\"tab.title\"\n (selected)=\"onTabSelected(tab)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n </ng-template>\n</ng-container>\n\n<ng-container #content></ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {BreadcrumbService, CarbonListModule, ColumnConfig} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {IkoApiService} from '../../services';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-iko-list',\n standalone: true,\n templateUrl: './iko-list.component.html',\n imports: [CommonModule, CarbonListModule, TranslatePipe],\n})\nexport class IkoListComponent implements OnDestroy {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly listConfig$: Observable<{fields: ColumnConfig[]; items: any[]}> = combineLatest([\n this.route.params,\n this.route.queryParams,\n this.ikoApiService.cachedMenuItems$,\n ]).pipe(\n tap(() => this.loading$.next(true)),\n switchMap(([params, queryParams, menuItems]) => {\n const currentMenuItem = menuItems.find(item => item.key === params.key);\n\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/iko/${params.key}`],\n content: currentMenuItem?.title ?? '',\n href: `/iko/${params.key}`,\n });\n\n return this.ikoApiService.searchIkoSearchAction(params.key, params.searchKey, {\n filters: queryParams,\n });\n }),\n map(res => ({\n fields: res.headers.reduce(\n (acc, curr) => [\n ...acc,\n ...(curr.displayType.type === 'hidden'\n ? []\n : [\n {\n key: curr.key,\n label: curr.title,\n viewType: curr.displayType.type,\n sortable: curr.sortable,\n ...(!!curr.defaultSort && {default: curr.defaultSort}),\n ...curr.displayType.displayTypeParameters,\n },\n ]),\n ],\n [] as ColumnConfig[]\n ),\n items: res.rows.content.map(stuff =>\n stuff.items.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {})\n ),\n })),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoApiService: IkoApiService,\n private readonly route: ActivatedRoute,\n private readonly router: Router\n ) {}\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n }\n\n public onRowClicked(item: any): void {\n this.router.navigate([`details/${item.id}`], {\n relativeTo: this.route,\n queryParamsHandling: 'preserve',\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n listConfig: listConfig$ | async,\n loading: loading$ | async,\n } as obs\"\n [fields]=\"obs.listConfig?.fields\"\n [items]=\"obs.listConfig?.items\"\n [loading]=\"obs.loading\"\n [hideToolbar]=\"true\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <valtimo-no-results\n title=\"{{ 'ikoManagement.search.noResultsTitle' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n description=\"{{ 'ikoManagement.search.noResultsDescription' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, Input, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n FormArray,\n FormGroup,\n ReactiveFormsModule,\n FormBuilder,\n Validators,\n AbstractControl,\n} from '@angular/forms';\nimport {SelectItem, SelectModule} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n IconService,\n InputModule,\n LayerModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {PropertyField} from '../../models';\nimport {computed, effect} from '@angular/core';\nimport {Information16} from '@carbon/icons';\n\n@Component({\n selector: 'valtimo-iko-management-properties',\n templateUrl: './iko-management-properties.component.html',\n styleUrl: './iko-management-properties.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslatePipe,\n ButtonModule,\n InputModule,\n IconModule,\n LayerModule,\n SelectModule,\n TooltipModule,\n ],\n})\nexport class PropertiesFormComponent {\n @Input({required: true}) propertiesFormGroup!: FormGroup;\n\n public readonly $fields = signal<PropertyField[]>([]);\n @Input() public set fields(fields: PropertyField[]) {\n if (fields) {\n this.applyPropertyControls(this.fb, this.propertiesFormGroup, fields);\n this.$fields.set(fields);\n }\n }\n\n public readonly $prefillData = signal<Record<string, any>>({});\n @Input() public set prefillData(value: Record<string, any | null> | null) {\n this.$prefillData.set(value ?? {});\n }\n\n public readonly $selectItems = computed(() =>\n this.$fields()\n .filter(field => field?.dropdownList)\n .reduce((acc: Record<string, SelectItem[]>, field) => {\n acc[field.key] = field.dropdownList.map(item => ({\n id: item.first,\n text: item.second,\n }));\n return acc;\n }, {})\n );\n\n private readonly combined = computed(() => ({\n prefill: this.$prefillData(),\n fields: this.$fields(),\n }));\n\n private readonly _effect = effect(() => {\n const {prefill, fields} = this.combined();\n this.mapPrefillDataToForm(prefill, fields);\n });\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Information16]);\n }\n\n public getFa(key: string): FormArray {\n return this.propertiesFormGroup.get(key) as FormArray;\n }\n\n public onAddKeyValue(key: string, required?: boolean) {\n this.addKeyValue(this.getFa(key), this.fb, required);\n }\n\n public onDeleteRowClick(key: string, index: number) {\n this.getFa(key).removeAt(index);\n }\n\n public applyPropertyControls(\n fb: FormBuilder,\n propertiesGroup: FormGroup,\n fields: PropertyField[]\n ): void {\n fields.forEach(field => {\n if (propertiesGroup.contains(field.key)) return;\n\n switch (field.type) {\n case 'text':\n case 'url':\n case 'integer':\n case 'dropdown':\n propertiesGroup.addControl(\n field.key,\n fb.control('', field.required ? [Validators.required] : [])\n );\n break;\n case 'keyValueList':\n propertiesGroup.addControl(\n field.key,\n fb.array([\n fb.group({\n key: fb.control('', Validators.required),\n value: fb.control('', Validators.required),\n }),\n ])\n );\n break;\n }\n });\n }\n\n public getControlInvalid(controlKey: string): boolean {\n const control: AbstractControl | null = this.propertiesFormGroup.get(controlKey);\n\n if (!control) {\n return true;\n }\n\n return !control.valid && !control.pristine;\n }\n\n private mapPrefillDataToForm(\n prefillData: Record<string, any>,\n propertyFields: PropertyField[]\n ): void {\n if (!prefillData || !this.propertiesFormGroup) return;\n\n propertyFields.forEach((field: PropertyField) => {\n if (field.type === 'keyValueList') {\n const keyValueList = !prefillData[field.key]\n ? [{key: '', value: ''}]\n : Array.isArray(prefillData[field.key])\n ? prefillData[field.key]\n : Object.entries(prefillData[field.key]).map(([key, value]) => ({\n key,\n value,\n }));\n this.getFa(field.key).clear();\n keyValueList.forEach(item => this.onAddKeyValue(field.key, field.required));\n prefillData[field.key] = keyValueList;\n }\n });\n\n this.propertiesFormGroup.patchValue(prefillData);\n }\n\n private addKeyValue(arr: FormArray, fb: FormBuilder, required?: boolean) {\n arr.push(\n fb.group({\n key: fb.control('', required ? Validators.required : []),\n value: fb.control('', required ? Validators.required : []),\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<form [formGroup]=\"propertiesFormGroup\">\n @for (propertyField of $fields(); track propertyField.key) {\n @switch (true) {\n @case (\n propertyField.type === 'text' ||\n propertyField.type === 'url' ||\n propertyField.type === 'integer'\n ) {\n <cds-label>\n {{ propertyField.title }}\n @if (propertyField.tooltip) {\n <cds-tooltip [caret]=\"true\" [description]=\"propertyField.tooltip\">\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n }\n <input\n [formControlName]=\"propertyField.key\"\n cdsText\n cdsLayer\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n }\n @case (propertyField.type === 'dropdown') {\n @if (propertyField?.dropdownList) {\n <v-select\n [invalid]=\"getControlInvalid(propertyField.key)\"\n [formControlName]=\"propertyField.key\"\n [items]=\"$selectItems()[propertyField.key]\"\n [title]=\"propertyField.title\"\n [tooltip]=\"propertyField.tooltip\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n ></v-select>\n }\n }\n @case (propertyField.type === 'keyValueList') {\n <div [formArrayName]=\"propertyField.key\">\n @for (keyValueControl of getFa(propertyField.key)?.controls; track keyValueControl) {\n <cds-text-label>\n {{ propertyField.title }}\n @if (propertyField.tooltip) {\n <cds-tooltip [caret]=\"true\" [description]=\"propertyField.tooltip\">\n <svg class=\"tooltip-trigger\" cdsIcon=\"information\" size=\"16\"></svg>\n </cds-tooltip>\n }\n\n <fieldset [formGroupName]=\"$index\">\n <input\n formControlName=\"key\"\n cdsText\n cdsLayer\n [placeholder]=\"'interface.key' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n <input\n formControlName=\"value\"\n cdsText\n cdsLayer\n [placeholder]=\"'interface.value' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"onDeleteRowClick(propertyField.key, $index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </fieldset>\n </cds-text-label>\n }\n\n <button\n cdsButton=\"primary\"\n (click)=\"onAddKeyValue(propertyField.key, propertyField.required)\"\n >\n Add Key Value\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n }\n }\n</form>\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n runAfterCarbonModalClosed,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LayerModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, filter, map, Observable, startWith, switchMap, tap} from 'rxjs';\nimport {PropertyField, IkoRepositoryConfigResponse} from '../../../models';\nimport {IkoManagementApiService} from '../../../services';\nimport {PropertiesFormComponent} from '../../iko-management-properties/iko-management-properties.component';\nimport {ConfigService, ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-repository-modal',\n templateUrl: './iko-management-repository-modal.component.html',\n styleUrl: './iko-management-repository-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n PropertiesFormComponent,\n SelectModule,\n LayerModule,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementRepositoryModalComponent {\n private readonly _open$ = new BehaviorSubject<boolean>(false);\n @Input() public set open(value: boolean) {\n this._open$.next(value);\n\n if (!value) this.resetForm();\n }\n public get open$(): Observable<boolean> {\n return this._open$.asObservable();\n }\n\n public readonly $prefillData = signal<IkoRepositoryConfigResponse | null>(null);\n @Input() public set prefillData(value: IkoRepositoryConfigResponse | null) {\n this.$prefillData.set(value);\n this.formGroup.patchValue({\n ...value,\n type: 'iko',\n });\n\n this.formGroup.get('type')?.disable({ emitEvent: false });\n }\n\n private _modalMode: ModalMode;\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n @Output() public readonly modalClose = new EventEmitter<any | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public enableIkoType = false;\n public readonly disabled$ = new BehaviorSubject(true);\n private readonly _ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();\n\n public readonly usedKeys$ = this.ikoManagementApiService\n .getIkoRepositoryConfigs()\n .pipe(map(response => response.content.map(c => c.key)));\n\n public readonly ikoRepositoryTypeSelectItems$: Observable<SelectItem[]> =\n this._ikoRepositoryTypes$.pipe(\n map(types => Object.keys(types).map(typeKey => ({id: typeKey, text: types[typeKey]}))),\n tap(() => {\n this.disabled$.next(false);\n })\n );\n public formGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', Validators.required),\n type: this.fb.control(\n {value: 'iko', disabled: true},\n Validators.required\n ),\n properties: this.fb.group({}, Validators.required),\n });\n\n public readonly propertyFields$: Observable<PropertyField[]> = this.formGroup\n .get('type')\n .valueChanges.pipe(\n startWith(this.formGroup.get('type').value),\n tap(_ => this.formGroup.patchValue({properties: {}}, {emitEvent: false})),\n filter(type => !!type && !Array.isArray(type)),\n switchMap(type => this.ikoManagementApiService.getIkoRepositoryPropertyFields(type)),\n );\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly configService: ConfigService\n ) {\n this.enableIkoType = this.configService.getFeatureToggle('enableIkoType');\n }\n\n public get properties(): FormGroup | null {\n const properties = this.formGroup.get('properties');\n return !properties ? null : (properties as FormGroup);\n }\n\n public onCancel(): void {\n this.modalClose.emit(null);\n }\n\n public onSave(): void {\n this.modalClose.emit(this.formGroup.getRawValue());\n }\n\n public getControlInvalid(controlKey: string): boolean {\n if (controlKey === 'type' && !this.enableIkoType) {\n return false;\n }\n\n const control: AbstractControl | null = this.formGroup.get(controlKey);\n\n if (!control) {\n return true;\n }\n\n return !control.valid && !control.pristine;\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset({\n title: '',\n key: '',\n type: 'iko',\n properties: {},\n });\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>{{ 'ikoManagement.configureIkoServer' | translate }}</h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"formGroup\" class=\"iko-api-form\">\n <cds-label [invalid]=\"getControlInvalid('title')\">\n {{ 'ikoManagement.titleTitle' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('title')\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'ikoManagement.titlePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys$ | async\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n\n <v-select\n *ngIf=\"enableIkoType\"\n [invalid]=\"getControlInvalid('type')\"\n formControlName=\"type\"\n [disabled]=\"true\"\n [items]=\"ikoRepositoryTypeSelectItems$ | async\"\n [title]=\"'ikoManagement.typeTitle' | translate\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n ></v-select>\n\n <valtimo-iko-management-properties\n [propertiesFormGroup]=\"properties\"\n [fields]=\"propertyFields$ | async\"\n [prefillData]=\"$prefillData()?.properties\"\n />\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"formGroup.invalid\" cdsButton=\"primary\" (click)=\"onSave()\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n PageTitleService,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {IkoManagementApiService} from '../../services';\nimport {BehaviorSubject, Observable, switchMap, take, tap} from 'rxjs';\nimport {Router} from '@angular/router';\nimport {map} from 'rxjs/operators';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LayerModule,\n ModalModule,\n TabsModule,\n} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n IkoViewResponse,\n IkoRepositoryConfigListResponse,\n IkoRepositoryConfigResponse,\n} from '../../models';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {IkoManagementRepositoryModalComponent} from './repository-modal/iko-management-repository-modal.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-api',\n standalone: true,\n templateUrl: './iko-management-api.component.html',\n imports: [\n CommonModule,\n CarbonListModule,\n TabsModule,\n TranslateModule,\n ModalModule,\n ButtonModule,\n IconModule,\n FormsModule,\n InputModule,\n ReactiveFormsModule,\n ValtimoCdsModalDirective,\n LayerModule,\n SelectModule,\n ConfirmationModalModule,\n IkoManagementRepositoryModalComponent,\n ],\n styleUrl: './iko-management-api.component.scss',\n})\nexport class IkoManagementApiComponent implements OnInit, OnDestroy {\n public readonly $modalOpen = signal<boolean>(false);\n public readonly $prefillData = signal<any | null>(null);\n public readonly $keyToDelete = signal<string | null>(null);\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly disabled$ = new BehaviorSubject(true);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n private readonly _reload$ = new BehaviorSubject<null>(null);\n\n public readonly apiConfigs$ = this._reload$.pipe(\n switchMap(() => this.ikoManagementApiService.getIkoRepositoryConfigs()),\n map(res => res.content),\n tap(() => this.loading$.next(false))\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'ikoManagement.ikoServer',\n },\n ];\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onEditClick.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClick.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();\n public readonly ikoRepositoryTypeSelectItems$: Observable<SelectItem[]> =\n this._ikoRepositoryTypes$.pipe(\n map(types => Object.keys(types).map(typeKey => ({id: typeKey, text: types[typeKey]}))),\n tap(() => {\n this.disabled$.next(false);\n })\n );\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public onRowClicked(event: IkoRepositoryConfigListResponse): void {\n this.router.navigate(['iko-management', event.key]);\n }\n\n public openModal(): void {\n this.$modalMode.set('add');\n this.$modalOpen.set(true);\n }\n\n public closeModal(item: IkoRepositoryConfigResponse | null): void {\n this.$modalOpen.set(false);\n this.disable();\n this.$prefillData.set(null);\n if (!item) return;\n\n let saveObservable;\n if (this.$modalMode() === 'edit') {\n saveObservable = this.ikoManagementApiService.updateIkoRepositoryConfig(item.key, item);\n } else {\n saveObservable = this.ikoManagementApiService.createIkoRepositoryConfig(item.key, item);\n }\n\n saveObservable.pipe(take(1)).subscribe({\n next: () => {\n this.enable();\n this.reload();\n },\n error: () => this.enable(),\n });\n }\n\n public onEditClick(item: IkoViewResponse): void {\n this.$modalMode.set('edit');\n this.$prefillData.set(item);\n this.$modalOpen.set(true);\n }\n\n public onDeleteClick(item: IkoViewResponse): void {\n this.$keyToDelete.set(item.key);\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(key: string): void {\n this.ikoManagementApiService\n .deleteIkoRepositoryConfig(key)\n .subscribe(() => this._reload$.next(null));\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private reload(): void {\n this.loading$.next(true);\n this._reload$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [items]=\"apiConfigs$ | async\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addViewButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addViewButton\"\n [description]=\"'ikoManagement.views.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.views.noResultsTitle' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #addViewButton>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'ikoManagement.addApiConfig' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-iko-management-repository-modal\n [open]=\"$modalOpen()\"\n [prefillData]=\"$prefillData()\"\n [modalMode]=\"$modalMode()\"\n (modalClose)=\"closeModal($event)\"\n></valtimo-iko-management-repository-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.views.deleteContent\"\n [outputOnConfirm]=\"$keyToDelete()\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Page} from '@valtimo/shared';\n\ninterface IkoView {\n key: string;\n title: string;\n}\n\ninterface IkoSearchActionUser {\n key: string;\n title: string;\n searchFields: SearchFieldV2[];\n}\n\ninterface SearchFieldV2 {\n id: string;\n ownerId: string;\n ownerType: string;\n key: string;\n title?: string;\n path: string;\n order: number;\n dataType: string;\n fieldType: string;\n matchType?: string;\n dropdownDataProvider?: string;\n}\n\ninterface IkoListHeader {\n key: string;\n title: string;\n displayType: {\n type: string;\n displayTypeParameters: object;\n };\n sortable: boolean;\n defaultSort: null | 'ASC' | 'DESC';\n}\n\ninterface IkoListItem {\n key: string;\n value: string;\n}\n\ninterface IkoListResponse {\n headers: IkoListHeader[];\n rows: Page<{items: IkoListItem[]}>;\n}\n\ntype IkoComponentType = 'widgets';\n\ninterface IkoTab {\n key: string;\n title: string;\n type: IkoComponentType;\n}\n\nexport {\n IkoView,\n IkoSearchActionUser,\n SearchFieldV2,\n IkoListHeader,\n IkoListItem,\n IkoListResponse,\n IkoComponentType,\n IkoTab,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface IkoMenuItem {\n title: string;\n profile: {\n url: string;\n identifierColumn: string;\n };\n queryParams: (QueryParam | QueryParamGroup)[];\n}\n\ninterface QueryParam {\n placeholder: string;\n title: string;\n key: string;\n}\n\ninterface QueryParamGroup {\n group: true;\n fields: QueryParam[];\n}\n\nexport {IkoMenuItem};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface IkoWidgetParams {\n ikoViewKey: string;\n entryId: string;\n tabKey: string;\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Type} from '@angular/core';\n\ninterface IkoViewCreateRequest {\n ikoRepositoryConfigKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoViewUpdateRequest {\n ikoRepositoryConfigKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoViewListResponse {\n key: string;\n title: string;\n}\n\ninterface IkoViewResponse {\n key: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoSearchActionCreateRequest {\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoSearchActionUpdateRequest {\n key: string;\n ikoViewKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoManagementParams {\n apiKey: string;\n aggregateKey: string;\n actionKey: string;\n tabKey: string;\n widgetTabKey?: string;\n}\n\ninterface IkoSearchActionResponse {\n key: string;\n ikoViewKey: string;\n title: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoRepositoryConfigCreateRequest {\n title: string;\n key: string;\n type: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoRepositoryConfigUpdateRequest {\n title: string;\n type: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoRepositoryConfigListResponse {\n key: string;\n title: string;\n type: string;\n}\n\ninterface IkoRepositoryConfigResponse {\n key: string;\n title: string;\n type: string;\n properties: Record<string, any | null>;\n}\n\ninterface IkoTabCreateRequest {\n title: string;\n type: string;\n}\n\ninterface IkoTabUpdateRequest {\n key: string;\n title: string;\n type: string;\n}\n\ninterface TabDto {\n key: string;\n title?: string;\n type: string;\n}\n\ntype PropertyFieldType = 'text' | 'keyValueList' | 'integer' | 'dropdown' | 'url';\n\ninterface PropertyField {\n key: string;\n required: boolean;\n title: string;\n tooltip: string;\n type: PropertyFieldType;\n dropdownList: {\n first: string;\n second: string;\n }[];\n}\n\ninterface WidgetAction {\n key: string;\n label: string;\n type: string;\n // Add more fields as necessary if known\n}\n\ninterface WidgetDto {\n key: string;\n title: string;\n width: number;\n highContrast: boolean;\n actions?: WidgetAction[];\n type: string;\n}\n\nenum IkoManagementTabType {\n LIST = 'list',\n SEARCH_FIELDS = 'search',\n WIDGETS = 'widgets',\n TABS = 'tabs',\n}\n\ninterface IkoManagementTab {\n key: IkoManagementTabType;\n title: string;\n component: Type<any>;\n}\n\ninterface IkoSearchField {\n key: string;\n title: string;\n fieldType: string;\n order: number;\n ikoViewKey: string;\n ikoSearchActionKey: string;\n dropdownList?: [string, string][];\n required?: boolean;\n visible?: boolean;\n [key: string]: any;\n}\n\ninterface IkoSearchFieldCreateRequest {\n title: string;\n fieldType: string;\n dropdownList?: [string, string][];\n required?: boolean;\n visible?: boolean;\n}\n\nenum IkoTabType {\n WIDGETS = 'widgets',\n}\n\nexport {\n IkoViewCreateRequest,\n IkoViewListResponse,\n IkoViewResponse,\n IkoViewUpdateRequest,\n IkoSearchActionCreateRequest,\n IkoSearchActionResponse,\n IkoSearchActionUpdateRequest,\n IkoManagementParams,\n IkoManagementTab,\n IkoManagementTabType,\n IkoRepositoryConfigCreateRequest,\n IkoRepositoryConfigListResponse,\n IkoRepositoryConfigResponse,\n IkoRepositoryConfigUpdateRequest,\n IkoSearchField,\n IkoSearchFieldCreateRequest,\n IkoTabCreateRequest,\n IkoTabType,\n IkoTabUpdateRequest,\n PropertyField,\n PropertyFieldType,\n TabDto,\n WidgetAction,\n WidgetDto,\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\ntype ColumnDefaultSort = 'ASC' | 'DESC';\n\ninterface DisplayType {\n type: string;\n displayTypeParameters: Record<string, any>;\n}\n\ninterface ListColumnDto {\n id?: string;\n key: string;\n title?: string;\n path: string;\n displayType: DisplayType;\n sortable: boolean;\n defaultSort?: ColumnDefaultSort;\n order: number;\n}\n\ninterface IkoListColumnRequest {\n key: string;\n title?: string;\n path: string;\n displayType?: DisplayType;\n sortable?: boolean;\n defaultSort?: ColumnDefaultSort;\n order?: number;\n}\n\nexport {IkoListColumnRequest, ListColumnDto, DisplayType, ColumnDefaultSort};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum SearchFieldDataType {\n TEXT = 'text',\n NUMBER = 'number',\n DATE = 'date',\n DATETIME = 'datetime',\n TIME = 'time',\n BOOLEAN = 'boolean',\n BSN = 'bsn',\n}\n\nenum SearchFieldFieldType {\n SINGLE = 'single',\n RANGE = 'range',\n SINGLE_SELECT_DROPDOWN = 'single-select-dropdown',\n MULTI_SELECT_DROPDOWN = 'multi-select-dropdown',\n}\n\nenum SearchFieldMatchType {\n LIKE = 'like',\n EXACT = 'exact',\n}\n\nenum SearchDropdownDataProvider {\n DATABASE = 'dropdownDatabaseDataProvider',\n JSON = 'dropdownJsonFileDataProvider',\n}\n\ninterface SearchField {\n id: string;\n ownerId: string;\n dataType: SearchFieldDataType;\n fieldType: SearchFieldFieldType;\n key: string;\n title?: string;\n path: string;\n order: number;\n matchType: SearchFieldMatchType;\n dropdownDataProvider?: string;\n dropdownValues?: SearchDropdownValue;\n}\n\ninterface SearchDropdownValue {\n [key: string]: string;\n}\n\nexport {\n SearchDropdownDataProvider,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n SearchField,\n SearchDropdownValue,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko.model';\nexport * from './iko-menu.model';\nexport * from './iko-widget.model';\nexport * from './iko-management.model';\nexport * from './iko-management-list.model';\nexport * from './iko-search-field.model';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n ReactiveFormsModule,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {InformationFilled16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ColumnConfig,\n InputLabelModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorPrefix,\n ViewType,\n AutoKeyInputComponent,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n LayerModule,\n ListItem,\n ModalModule,\n ToggleModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n} from 'rxjs';\nimport {\n IkoSearchField,\n SearchDropdownDataProvider,\n SearchDropdownValue,\n SearchFieldDataType,\n SearchFieldFieldType,\n SearchFieldMatchType,\n} from '../../../../../models';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-search-field-modal',\n templateUrl: './search-field-modal.component.html',\n styleUrl: './search-field-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonModule,\n CommonModule,\n DropdownModule,\n IconModule,\n InputLabelModule,\n InputModule,\n LayerModule,\n ModalModule,\n ReactiveFormsModule,\n TranslateModule,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n ToggleModule,\n ],\n})\nexport class IkoManagementSearchFieldModalComponent implements OnInit {\n @Input({required: true}) open: boolean;\n\n @Input() public usedKeys: string[] = [];\n\n private _modalMode: ModalMode = 'add';\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n public readonly $selectedKey = signal<string>('');\n private _prefillData: IkoSearchField | null;\n @Input() public set prefillData(value: IkoSearchField | null) {\n this._prefillData = value;\n this.$selectedKey.set(value?.key);\n this.setPrefilledForm(value);\n }\n public get prefillData(): IkoSearchField | null {\n return this._prefillData;\n }\n @Output() closeEvent = new EventEmitter<Partial<IkoSearchField> | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public readonly formGroup = this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n title: this.fb.control<string>('', Validators.required),\n path: this.fb.control<string>('', Validators.required),\n dataType: this.fb.control<ListItem | null>(null, Validators.required),\n matchType: this.fb.control<ListItem | null>(null, this.matchTypeValidator),\n fieldType: this.fb.control<ListItem | null>(null, Validators.required),\n dropdownDataProvider: this.fb.control<ListItem | null>(null),\n dropdownValues: this.fb.array<{key: string; value: string}>([]),\n required: this.fb.control<boolean>(false),\n });\n\n public get dataType(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('dataType');\n }\n public get dataTypeValue$(): Observable<ListItem | null> {\n return this.dataType?.valueChanges.pipe(startWith(this.dataType.value)) ?? of(null);\n }\n\n public get matchType(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('matchType');\n }\n public get matchTypeValue$(): Observable<ListItem | null> {\n return this.matchType?.valueChanges.pipe(startWith(this.matchType.value)) ?? of(null);\n }\n\n public get dropdownDataProvider(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('dropdownDataProvider');\n }\n\n public get dropdownDataProviderValue$(): Observable<ListItem | null> {\n return (\n this.dropdownDataProvider?.valueChanges.pipe(startWith(this.dropdownDataProvider.value)) ??\n of(null)\n );\n }\n\n public get fieldType(): AbstractControl<ListItem | null> | null {\n return this.formGroup.get('fieldType');\n }\n public get fieldTypeValue$(): Observable<ListItem | null> {\n return this.fieldType?.valueChanges.pipe(startWith(this.fieldType.value)) ?? of(null);\n }\n\n public readonly SearchFieldDataType = SearchFieldDataType;\n public readonly SearchFieldFieldType = SearchFieldFieldType;\n public readonly SearchDropdownDataProvider = SearchDropdownDataProvider;\n\n public get keyValue(): string | null {\n const controlValue = this.formGroup.get('key')?.value;\n\n return !controlValue ? null : controlValue;\n }\n\n public get dataTypeValue(): string | null {\n const controlValue = this.formGroup.get('dataType')?.value;\n this._dataTypeValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get fieldTypeValue(): string | null {\n const controlValue = this.formGroup.get('fieldType')?.value;\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownDataProviderValue(): string | null {\n const controlValue = this.formGroup.get('dropdownDataProvider')?.value;\n this._dropdownProviderValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownValuesArray(): FormArray | null {\n const formArray = this.formGroup.get('dropdownValues');\n\n return !formArray ? null : (formArray as FormArray);\n }\n\n public readonly DROPDOWN_FIELDS: ColumnConfig[] = [\n {\n key: 'key',\n label: 'searchFieldsOverview.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'value',\n label: 'searchFieldsOverview.text',\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _dataTypeValue$ = new BehaviorSubject<SearchFieldDataType | null | undefined>(\n null\n );\n\n private readonly _dropdownProviderValue$ = new BehaviorSubject<\n SearchDropdownDataProvider | null | undefined\n >(null);\n\n public readonly dataTypeItems$: Observable<ListItem[]> = combineLatest([\n this.dataTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFields.text'),\n id: SearchFieldDataType.TEXT,\n },\n {\n content: this.translateService.instant('searchFields.boolean'),\n id: SearchFieldDataType.BOOLEAN,\n },\n {\n content: this.translateService.instant('searchFields.date'),\n id: SearchFieldDataType.DATE,\n },\n {\n content: this.translateService.instant('searchFields.datetime'),\n id: SearchFieldDataType.DATETIME,\n },\n {\n content: this.translateService.instant('searchFields.number'),\n id: SearchFieldDataType.NUMBER,\n },\n {\n content: this.translateService.instant('searchFields.time'),\n id: SearchFieldDataType.TIME,\n },\n {\n content: this.translateService.instant('searchFields.bsn'),\n id: SearchFieldDataType.BSN,\n },\n ].map(item => ({...item, selected: item.id === dataTypeValue?.id}))\n )\n );\n\n public readonly fieldTypeItems$: Observable<ListItem[]> = combineLatest([\n this._dataTypeValue$.pipe(distinctUntilChanged()),\n this.fieldTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue, fieldTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.single'),\n id: SearchFieldFieldType.SINGLE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.range'),\n id: SearchFieldFieldType.RANGE,\n },\n ...(dataTypeValue === SearchFieldDataType.TEXT\n ? [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.single-select-dropdown'\n ),\n id: SearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n },\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.multi-select-dropdown'\n ),\n id: SearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n },\n ]\n : []),\n ].map(item => ({...item, selected: item.id === fieldTypeValue?.id}))\n )\n );\n\n public readonly dataProviderItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.dropdownDataProviderValue$),\n map(dataProviderValue =>\n [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.dropdownDatabaseDataProvider'\n ),\n id: SearchDropdownDataProvider.DATABASE,\n },\n ].map(item => ({...item, selected: item.id === dataProviderValue?.id}))\n )\n );\n\n public readonly matchTypeItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.matchTypeValue$),\n map(matchTypeValue =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.like'),\n id: SearchFieldMatchType.LIKE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.exact'),\n id: SearchFieldMatchType.EXACT,\n },\n ].map(item => ({...item, selected: item.id === matchTypeValue?.id}))\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly iconService: IconService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([TrashCan16, InformationFilled16]);\n }\n\n public ngOnInit(): void {\n this.formGroup.setValidators([\n this.dropdownDataProviderValidator,\n this.dropdownValuesValidator,\n ]);\n }\n\n public addDropdownValue(prefillValue?: {key: string; value: string}): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.push(\n this.fb.group({\n key: this.fb.control(prefillValue?.key ?? '', Validators.required),\n value: this.fb.control(prefillValue?.value ?? '', Validators.required),\n })\n );\n }\n\n public removeDropdownValue(index: number): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.removeAt(index);\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onSave(): void {\n const groupValue = this.formGroup.getRawValue();\n this.closeEvent.emit({\n ...(groupValue.title && {title: groupValue.title}),\n ...(groupValue.key && {key: groupValue.key}),\n ...(groupValue.path && {path: groupValue.path}),\n ...(groupValue.dataType?.content && {dataType: groupValue.dataType.id}),\n ...(groupValue.matchType?.content && {matchType: groupValue.matchType.id}),\n ...(groupValue.fieldType?.content && {fieldType: groupValue.fieldType.id}),\n ...(groupValue.dropdownDataProvider?.content && {\n dropdownDataProvider: groupValue.dropdownDataProvider.id,\n }),\n ...(groupValue.dropdownValues && {\n dropdownValues: groupValue.dropdownValues.reduce(\n (acc, curr) => ({...acc, ...(!!curr?.key && {[curr.key]: curr.value})}),\n {}\n ),\n }),\n required: groupValue.required ?? false,\n });\n\n this.resetForm();\n }\n\n private setPrefilledForm(prefillData: IkoSearchField | null): void {\n if (!prefillData) return;\n\n this.formGroup.patchValue({\n ...prefillData,\n dataType: !prefillData.dataType\n ? null\n : {\n content: prefillData.dataType,\n id: prefillData.dataType,\n selected: true,\n },\n matchType: !prefillData.matchType\n ? null\n : {\n content: prefillData.matchType,\n id: prefillData.matchType,\n selected: true,\n },\n fieldType: !prefillData.fieldType\n ? null\n : {\n content: prefillData.fieldType,\n id: prefillData.fieldType,\n selected: true,\n },\n dropdownDataProvider: !prefillData.dropdownDataProvider\n ? null\n : {\n content: prefillData.dropdownDataProvider,\n id: prefillData.dropdownDataProvider,\n selected: true,\n },\n dropdownValues: [],\n required: !!prefillData.required,\n });\n\n if (prefillData.dropdownDataProvider && prefillData.dropdownValues)\n this.setPrefilledDropdownValues(prefillData.dropdownValues);\n this.formGroup.get('key')?.disable();\n }\n\n private setPrefilledDropdownValues(dropdownValue: SearchDropdownValue): void {\n if (!this.dropdownValuesArray || !this.dropdownDataProviderValue) return;\n\n Object.entries(dropdownValue).forEach(([key, value]) => {\n this.addDropdownValue({key, value});\n });\n }\n\n private matchTypeValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n const dataTypeControlValue: ListItem | null | undefined =\n control.parent?.get('dataType')?.value;\n\n if (\n dataTypeControlValue?.id === SearchFieldDataType.TEXT &&\n (!controlValue || !controlValue.selected)\n )\n return {error: 'Match type not selected'};\n\n return null;\n }\n\n private dropdownDataProviderValidator(group: typeof this.formGroup): ValidationErrors | null {\n const controlValue: ListItem | undefined | null = group.get('dropdownDataProvider')?.value;\n const fieldTypeControlValue: ListItem | null | undefined = group.get('fieldType')?.value;\n\n if (\n [\n SearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n SearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue?.id) &&\n !controlValue\n )\n return {error: 'Dropdown source provider is not specified'};\n\n return null;\n }\n\n private dropdownValuesValidator(group: typeof this.formGroup): ValidationErrors | null {\n const controlValue: ({key: string; value: string} | null)[] | undefined =\n group.get('dropdownValues')?.value;\n const fieldTypeControlValue = group.get('fieldType')?.value?.id;\n const dropdownProviderValue = group.get('dropdownDataProvider')?.value?.id;\n\n if (\n [\n SearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n SearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue) &&\n (!controlValue || controlValue?.length === 0) &&\n dropdownProviderValue === SearchDropdownDataProvider.DATABASE\n )\n return {error: 'Dropdown source provider is not specified or is empty'};\n\n return null;\n }\n\n private resetForm(): void {\n setTimeout(() => {\n while (!!this.dropdownValuesArray?.length) {\n this.dropdownValuesArray.removeAt(0);\n }\n this.formGroup.reset();\n this.formGroup.patchValue({required: false});\n this.formGroup.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [formGroup]=\"formGroup\" class=\"valtimo-search-fields-modal__content\">\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.title' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input-label>\n\n <input data-testid=\"-search-title\" cdsText type=\"text\" formControlName=\"title\" cdsLayer />\n </div>\n\n <div class=\"valtimo-search-fields-modal__input\">\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n data-testid=\"iko-search-key\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n </div>\n\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input-label>\n\n <input cdsLayer data-testid=\"iko-search-key\" cdsText type=\"text\" formControlName=\"path\" />\n\n <!-- TODO: When BE value resolver is in place -->\n <!-- <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n ></valtimo-value-path-selector> -->\n </div>\n\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown cdsLayer data-testid=\"-search-dataType\" formControlName=\"dataType\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dataTypeValue === SearchFieldDataType.TEXT) {\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown cdsLayer data-testid=\"-search-matchType\" formControlName=\"matchType\">\n <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n }\n\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown cdsLayer data-testid=\"-search-fieldType\" formControlName=\"fieldType\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <cds-toggle\n class=\"valtimo-search-fields-modal__input\"\n formControlName=\"required\"\n [label]=\"'searchFieldsOverview.required' | translate\"\n [onText]=\"'searchFieldsOverview.requiredEnabled' | translate\"\n [offText]=\"'searchFieldsOverview.requiredDisabled' | translate\"\n ></cds-toggle>\n\n @if (\n dataTypeValue === SearchFieldDataType.TEXT &&\n (fieldTypeValue === SearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n fieldTypeValue === SearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n ) {\n <div class=\"valtimo-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n data-testid=\"-search-dropdownDataProvider\"\n formControlName=\"dropdownDataProvider\"\n cdsLayer\n >\n <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dropdownDataProviderValue === SearchDropdownDataProvider.DATABASE) {\n <div class=\"valtimo-search-fields-modal__list\" formArrayName=\"dropdownValues\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n [noMargin]=\"true\"\n >\n </v-input-label>\n\n @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n <form [formGroup]=\"dropdownValue\" class=\"valtimo-search-fields-modal__dropdown-values\">\n <cds-text-label>\n {{ 'interface.value' | translate }}\n\n <input\n data-testid=\"iko-search-dropdownKey\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n cdsLayer\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'interface.display' | translate }}\n\n <input\n data-testid=\"-search-dropdownValue\"\n cdsText\n type=\"text\"\n formControlName=\"value\"\n cdsLayer\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger\"\n data-testid=\"iko-search-deleteEnum\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"removeDropdownValue($index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n data-testid=\"-search-addDropdownValue\"\n cdsButton=\"primary\"\n (click)=\"addDropdownValue()\"\n >\n {{ 'interface.addRow' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n }\n }\n </form>\n\n <cds-modal-footer>\n <button data-testid=\"-search-cancel\" cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"onSave()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {ActivatedRoute, Params} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n BreadcrumbService,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n PageTitleService,\n ViewType,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n IkoSearchActionResponse,\n IkoManagementParams,\n IkoRepositoryConfigResponse,\n IkoSearchField,\n SearchDropdownValue,\n SearchFieldFieldType,\n} from '../../../../models';\nimport {IkoManagementApiService} from '../../../../services';\nimport {IkoManagementSearchFieldModalComponent} from './search-field-modal/search-field-modal.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-search-fields',\n templateUrl: './iko-management-search-fields.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ButtonModule,\n CarbonListModule,\n CommonModule,\n ConfirmationModalModule,\n IconModule,\n TranslateModule,\n IkoManagementSearchFieldModalComponent,\n ],\n})\nexport class IkoManagementSearchFieldsComponent implements OnInit, OnDestroy {\n public readonly $modalMode = signal<ModalMode>('add');\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly params$: Observable<IkoManagementParams> = this.route.params.pipe(\n map((params: Params) => ({\n apiKey: params.apiKey,\n aggregateKey: params.key,\n actionKey: params.actionKey,\n tabKey: params.tabKey,\n }))\n );\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n\n public readonly searchFields$: Observable<IkoSearchField[]> = combineLatest([\n this.params$,\n this.translateService.stream('key'),\n this._refresh$,\n ]).pipe(\n switchMap(([params]) =>\n this.ikoManagementApiService.getIkoSearchFields(params.aggregateKey, params.actionKey)\n ),\n map((searchFields: IkoSearchField[]) =>\n searchFields.map((field: IkoSearchField) => ({\n ...field,\n dataTypeText: this.translateService.instant(`searchFields.${field.dataType}`),\n fieldTypeText: this.translateService.instant(`searchFieldsOverview.${field.fieldType}`),\n }))\n ),\n tap(content => {\n const keys = content?.map(item => item.key) ?? [];\n this.usedKeys$.next(keys);\n this.loading$.next(false);\n })\n );\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly deleteField$ = new BehaviorSubject<IkoSearchField | null>(null);\n public readonly fieldModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly prefillData$ = new BehaviorSubject<IkoSearchField | null>(null);\n\n private readonly _searchAction$: Observable<IkoSearchActionResponse> = this.params$.pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) =>\n this.ikoManagementApiService.getIkoSearchAction(params.aggregateKey, params.actionKey)\n )\n );\n private readonly _ikoRepositoryConfig$: Observable<IkoRepositoryConfigResponse> =\n this.params$.pipe(\n switchMap((params: IkoManagementParams) =>\n this.ikoManagementApiService.getIkoRepositoryConfig(params.apiKey)\n )\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'path',\n label: 'searchFieldsOverview.path',\n viewType: ViewType.TEXT,\n },\n {\n key: 'dataTypeText',\n label: 'searchFieldsOverview.dataType',\n viewType: ViewType.TEXT,\n },\n {\n key: 'fieldTypeText',\n label: 'searchFieldsOverview.fieldType',\n viewType: ViewType.TEXT,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editSearchField.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteSearchField.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.setBreadcrumbs();\n this._subscriptions.add(\n combineLatest([this._searchAction$, this.translateService.stream('key')]).subscribe(\n ([searchAction]) => {\n this.pageTitleService.setCustomPageTitle(\n this.translateService.instant('ikoManagement.searchFields.pageTitle', {\n searchActionTitle: searchAction.title,\n }),\n true\n );\n }\n )\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n }\n\n public onItemsReordered(\n searchFields: IkoSearchField[],\n params: {aggregateKey: string; actionKey: string}\n ): void {\n this.ikoManagementApiService\n .updateIkoSearchFields(params.aggregateKey, params.actionKey, searchFields)\n .pipe(take(1))\n .subscribe();\n }\n\n public openAddModal(): void {\n this.$modalMode.set('add');\n this.fieldModalOpen$.next(true);\n }\n\n public deleteSearchField(field: IkoSearchField): void {\n this.deleteField$.next(field);\n this.deleteModalOpen$.next(true);\n }\n\n public editSearchField(field: IkoSearchField): void {\n this.$modalMode.set('edit');\n\n if (!!field.dropdownDataProvider) {\n this.params$\n .pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) =>\n this.ikoManagementApiService.getDropdownData(\n field.dropdownDataProvider,\n params.aggregateKey,\n params.actionKey,\n field.key\n )\n ),\n take(1)\n )\n .subscribe(dropdownValues => {\n field.dropdownValues = dropdownValues as SearchDropdownValue;\n this.prefillData$.next(field);\n this.fieldModalOpen$.next(true);\n });\n\n return;\n }\n this.prefillData$.next(field);\n this.fieldModalOpen$.next(true);\n }\n\n public onDeleteSearchField(field: IkoSearchField): void {\n this.params$\n .pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) => {\n const dropdown$ = field.dropdownDataProvider\n ? this.ikoManagementApiService\n .deleteDropdownData(\n field.dropdownDataProvider,\n params.aggregateKey,\n params.actionKey,\n field.key\n )\n .pipe(map(result => ({params, dropdownResult: result})))\n : of({params, dropdownResult: null});\n\n return dropdown$.pipe(\n switchMap(({params}) =>\n this.ikoManagementApiService.deleteIkoSearchField(\n params.aggregateKey,\n params.actionKey,\n field.key\n )\n )\n );\n })\n )\n .subscribe(() => this._refresh$.next(null));\n\n this.prefillData$.next(null);\n }\n\n public onModalClose(field: IkoSearchField | null): void {\n this.fieldModalOpen$.next(false);\n this.prefillData$.next(null);\n if (!field) return;\n\n const hasDropdownValues: boolean =\n field.fieldType === SearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n field.fieldType === SearchFieldFieldType.MULTI_SELECT_DROPDOWN;\n\n this.params$\n .pipe(\n switchMap((params: {aggregateKey: string; actionKey: string}) => {\n const save$ =\n this.$modalMode() === 'add'\n ? this.ikoManagementApiService.createIkoSearchField(\n params.aggregateKey,\n params.actionKey,\n field.key,\n field\n )\n : this.ikoManagementApiService.updateIkoSearchField(\n params.aggregateKey,\n params.actionKey,\n field.key,\n field\n );\n\n return save$.pipe(map(result => ({result, params})));\n }),\n switchMap(({result, params}) => {\n if (!hasDropdownValues) return of(result);\n\n return this.ikoManagementApiService.postDropdownData(\n field.dropdownDataProvider ?? '',\n params.aggregateKey,\n params.actionKey,\n field.key,\n field.dropdownValues ?? {}\n );\n })\n )\n .subscribe(() => this._refresh$.next(null));\n }\n\n private setBreadcrumbs(): void {\n combineLatest([\n this._ikoRepositoryConfig$,\n this.params$,\n this.translateService.stream('key'),\n ]).subscribe(([repositoryConfig, params]) => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}`],\n content: repositoryConfig.title,\n href: `/iko-management/${repositoryConfig.key}`,\n });\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`],\n content: this.translateService.instant('ikoManagement.searchActions.title'),\n href: `/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`,\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@if (params$ | async; as params) {\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [dragAndDrop]=\"true\"\n [fields]=\"FIELDS\"\n [items]=\"searchFields$ | async\"\n [loading]=\"loading$ | async\"\n (itemsReordered)=\"onItemsReordered($event, params)\"\n (rowClicked)=\"editSearchField($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addFieldButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addFieldButton\"\n [description]=\"'ikoManagement.searchFields.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.searchFields.noResultsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n}\n\n<valtimo-iko-management-search-field-modal\n [open]=\"fieldModalOpen$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [modalMode]=\"$modalMode()\"\n [prefillData]=\"prefillData$ | async\"\n (closeEvent)=\"onModalClose($event)\"\n></valtimo-iko-management-search-field-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.searchFields.deleteModalText\"\n [outputOnConfirm]=\"deleteField$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSearchField($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addFieldButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'searchFieldsOverview.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Params} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {\n BasicWidget,\n IWidgetManagementService,\n ManagementWidgetDetailsComponent,\n WIDGET_MANAGEMENT_SERVICE,\n WidgetManagementComponent,\n WidgetType,\n WidgetWizardService,\n} from '@valtimo/layout';\nimport {combineLatest, map, Observable, Subscription, switchMap, tap} from 'rxjs';\nimport {IkoManagementParams, IkoRepositoryConfigResponse, TabDto} from '../../../../models';\nimport {IkoManagementApiService, IkoWidgetManagementApiService} from '../../../../services';\n\n@Component({\n templateUrl: './iko-management-widgets.component.html',\n styleUrl: './iko-management-widgets.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, WidgetManagementComponent, TranslateModule],\n providers: [\n {\n provide: WIDGET_MANAGEMENT_SERVICE,\n useClass: IkoWidgetManagementApiService,\n },\n ],\n})\nexport class IkoManagementWidgetsComponent\n extends ManagementWidgetDetailsComponent\n implements OnInit, OnDestroy\n{\n public readonly params$: Observable<IkoManagementParams> = this.route.params.pipe(\n map((params: Params) => ({\n apiKey: params.apiKey,\n aggregateKey: params.key,\n actionKey: params.actionKey,\n tabKey: params.tabKey,\n widgetTabKey: params.widgetTabKey,\n })),\n tap((params: IkoManagementParams) => this.ikoWidgetManagementApiService.initParams(params))\n );\n\n public readonly widgets$: Observable<BasicWidget[]> =\n this.ikoWidgetManagementApiService.getWidgetConfiguration();\n\n public readonly AVAILABLE_WIDGET_TYPES = [\n WidgetType.FIELDS,\n WidgetType.COLLECTION,\n WidgetType.TABLE,\n WidgetType.INTERACTIVE_TABLE,\n WidgetType.MAP,\n ];\n\n private readonly _ikoRepositoryConfig$: Observable<IkoRepositoryConfigResponse> =\n this.params$.pipe(\n switchMap((params: Params) =>\n this.ikoManagementApiService.getIkoRepositoryConfig(params.apiKey)\n )\n );\n\n private readonly _ikoTabConfig$: Observable<TabDto> = this.params$.pipe(\n switchMap((params: Params) =>\n this.ikoManagementApiService.getIkoTab(params.aggregateKey, params.widgetTabKey)\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n protected readonly widgetWizardService: WidgetWizardService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private ikoWidgetManagementApiService: IWidgetManagementService<IkoManagementParams>\n ) {\n super(widgetWizardService);\n }\n\n public ngOnInit(): void {\n this.setContext('iko');\n this.setBreadcrumbs();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearThirdBreadcrumb();\n this.breadcrumbService.clearFourthBreadcrumb();\n this._subscriptions.unsubscribe();\n }\n\n private setBreadcrumbs(): void {\n this._subscriptions.add(\n combineLatest([\n this._ikoTabConfig$,\n this._ikoRepositoryConfig$,\n this.ikoWidgetManagementApiService.params$,\n this.translateService.stream('key'),\n ])\n .pipe(\n tap(([tabConfig, repositoryConfig, params]) => {\n if (!params) return;\n\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}`],\n content: repositoryConfig.title,\n href: `/iko-management/${repositoryConfig.key}`,\n });\n\n this.breadcrumbService.setFourthBreadcrumb({\n route: [\n `/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`,\n ],\n content: tabConfig.title || params.widgetTabKey || '',\n href: `/iko-management/${repositoryConfig.key}/${params.aggregateKey}/${params.tabKey}`,\n });\n })\n )\n .subscribe()\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-management\n [params]=\"params$ | async\"\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n></valtimo-widget-management>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n} from '@valtimo/components';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {\n PropertyField,\n IkoSearchActionResponse,\n IkoRepositoryConfigResponse,\n IkoViewResponse,\n} from '../../../../../models';\nimport {filter, map, Observable, switchMap, take} from 'rxjs';\nimport {IkoManagementApiService} from '../../../../../services';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {PropertiesFormComponent} from '../../../../iko-management-properties/iko-management-properties.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-search-action-modal',\n templateUrl: './search-action-modal.component.html',\n styleUrl: './search-action-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ButtonModule,\n LayerModule,\n PropertiesFormComponent,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementSearchActionModalComponent {\n private _modalMode: ModalMode;\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n public readonly $isOpen = signal<boolean>(false);\n @Input() public set open(value: boolean) {\n this.$isOpen.set(value);\n\n if (value) return;\n\n setTimeout(() => {\n this.formGroup.reset();\n this.formGroup.get('key')?.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n public readonly $prefillData = signal<IkoViewResponse | null>(null);\n @Input() public set prefillData(value: IkoSearchActionResponse | null) {\n if (!value) {\n this.$prefillData.set(null);\n return;\n }\n\n this.$prefillData.set(value);\n this.formGroup.patchValue(value);\n this.formGroup.get('key')?.disable();\n }\n\n @Input() public usedKeys: string[] = [];\n @Input() repositoryKey: string;\n @Input() aggregateKey: string;\n\n @Output() public readonly modalClose = new EventEmitter<IkoSearchActionResponse | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public readonly propertyFields$: Observable<PropertyField[]> = toObservable(this.$isOpen).pipe(\n filter((open: boolean) => !!open),\n map(() => this.repositoryKey),\n switchMap((repositoryKey: string | null) =>\n this.ikoManagementApiService.getIkoRepositoryConfig(repositoryKey ?? '')\n ),\n switchMap((repository: IkoRepositoryConfigResponse) =>\n this.ikoManagementApiService.getIkoSearchActionPropertyFields(repository.type)\n )\n );\n\n public readonly formGroup = this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n title: this.fb.control<string>('', Validators.required),\n ikoViewKey: this.fb.control<string>(''),\n properties: this.fb.group({}),\n });\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public get properties(): FormGroup | null {\n const properties = this.formGroup.get('properties');\n return !properties ? null : (properties as FormGroup);\n }\n\n public onCancel(): void {\n this.modalClose.emit(null);\n }\n\n public onSave(): void {\n this.propertyFields$.pipe(take(1)).subscribe(fields => {\n const formData = this.formGroup.getRawValue();\n fields.forEach(field => {\n if (formData.properties[field.key] && field.type === 'keyValueList') {\n formData.properties[field.key] = Array.isArray(formData.properties[field.key])\n ? formData.properties[field.key].reduce((acc: Record<string, any>, cur: any) => {\n if (cur.key) {\n acc[cur.key] = cur.value;\n }\n return acc;\n }, {})\n : {};\n }\n });\n this.modalClose.emit(formData);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n [open]=\"$isOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"'ikoManagement.searchActions.' + modalMode + 'ActionTitle' | translate\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.searchActions.' + modalMode + 'ActionTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [formGroup]=\"formGroup\">\n <cds-label>\n {{ 'interface.title' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.title' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n labelTranslationKey=\"ikoManagement.keyTitle\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n\n <valtimo-iko-management-properties\n [propertiesFormGroup]=\"properties\"\n [fields]=\"propertyFields$ | async\"\n [prefillData]=\"$prefillData()?.properties\"\n />\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"formGroup.invalid\" (click)=\"onSave()\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule, DOCUMENT} from '@angular/common';\nimport {Component, Inject, TemplateRef, ViewChild, signal} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n LoadingModule,\n Notification,\n TabsModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, Observable, switchMap, tap} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\nimport {IkoSearchActionResponse} from '../../../../models';\nimport {IkoManagementApiService} from '../../../../services';\nimport {IkoManagementSearchActionModalComponent} from './search-action-modal/search-action-modal.component';\nimport {GlobalNotificationService, ModalMode} from '@valtimo/shared';\nimport {HttpResponse} from '@angular/common/http';\n\n@Component({\n standalone: true,\n templateUrl: './iko-management-search-actions.component.html',\n imports: [\n ButtonModule,\n CarbonListModule,\n CommonModule,\n ConfirmationModalModule,\n IconModule,\n IkoManagementSearchActionModalComponent,\n TabsModule,\n TranslateModule,\n LoadingModule,\n ],\n})\nexport class IkoManagementSearchActionsComponent {\n @ViewChild('exportingMessage')\n private readonly _exportMessageTemplateRef: TemplateRef<HTMLDivElement>;\n\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n ];\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editSearchAction.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteSearchAction.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly deleteSearchActionKey$ = new BehaviorSubject<string | null>(null);\n public readonly prefillData$ = new BehaviorSubject<IkoSearchActionResponse | null>(null);\n public readonly actionModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly exporting$ = new BehaviorSubject<boolean>(false);\n public readonly repositoryKey$ = this.route.params.pipe(\n map((params: Params) => params.apiKey),\n filter(repositoryKey => !!repositoryKey)\n );\n public readonly aggregateKey$ = this.route.params.pipe(\n map((params: Params) => params.key),\n filter(key => !!key)\n );\n\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly searchActions$: Observable<IkoSearchActionResponse[]> = combineLatest([\n this.aggregateKey$,\n this._refresh$,\n ]).pipe(\n switchMap(([key]) => this.ikoManagementApiService.getManagementIkoSearchActions(key)),\n tap(content => {\n const keys = content?.map(item => item.key) ?? [];\n this.usedKeys$.next(keys);\n this.loading$.next(false);\n })\n );\n\n private _currentNotification!: Notification;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly notificationService: GlobalNotificationService,\n private readonly translateService: TranslateService\n ) {}\n\n public onSearchActionClick(action: IkoSearchActionResponse): void {\n this.router.navigate([`search-action/${action.key}`], {relativeTo: this.route});\n }\n\n public deleteSearchAction(action: IkoSearchActionResponse): void {\n this.deleteSearchActionKey$.next(action.key);\n this.deleteModalOpen$.next(true);\n }\n\n public onDeleteSearchAction(key: string): void {\n this.aggregateKey$\n .pipe(\n switchMap((aggregateKey: string) =>\n this.ikoManagementApiService.deleteIkoSearchAction(aggregateKey, key)\n )\n )\n .subscribe(() => this._refresh$.next(null));\n }\n\n public editSearchAction(action: IkoSearchActionResponse): void {\n this.$modalMode.set('edit');\n this.prefillData$.next(action);\n this.actionModalOpen$.next(true);\n }\n\n public onItemsReordered(searchActions: IkoSearchActionResponse[], aggregateKey: string): void {\n this.ikoManagementApiService\n .updateIkoSearchActions(aggregateKey, searchActions)\n .pipe(take(1))\n .subscribe();\n }\n\n public onModalClose(action: IkoSearchActionResponse | null): void {\n this.actionModalOpen$.next(false);\n this.prefillData$.next(null);\n\n if (!action) return;\n this.aggregateKey$\n .pipe(\n switchMap((aggregateKey: string) =>\n this.$modalMode() === 'add'\n ? this.ikoManagementApiService.createIkoSearchAction(aggregateKey, action.key, action)\n : this.ikoManagementApiService.updateIkoSearchAction(aggregateKey, action.key, action)\n )\n )\n .subscribe(() => {\n this._refresh$.next(null);\n });\n }\n\n public exportConfiguration(): void {\n this.closeCurrentNotification();\n\n this._currentNotification = this.notificationService.showNotification({\n type: 'info',\n title: '',\n showClose: false,\n template: this._exportMessageTemplateRef,\n });\n\n this.startExporting();\n\n combineLatest([this.aggregateKey$])\n .pipe(\n take(1),\n switchMap(([aggregateKey]) =>\n this.ikoManagementApiService.exportIKOConfiguration(aggregateKey)\n )\n )\n .subscribe({\n next: response => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'success',\n title: this.translateService.instant('caseManagement.exportSuccessTitle'),\n duration: 5000,\n });\n this.downloadZip(response);\n this.stopExporting();\n },\n error: () => {\n this.closeCurrentNotification();\n this._currentNotification = this.notificationService.showNotification({\n type: 'error',\n title: this.translateService.instant('caseManagement.exportErrorTitle'),\n message: this.translateService.instant('caseManagement.exportErrorMessage'),\n duration: 5000,\n });\n this.stopExporting();\n },\n });\n }\n\n public openAddModal(): void {\n this.$modalMode.set('add');\n this.actionModalOpen$.next(true);\n }\n\n private startExporting(): void {\n this.exporting$.next(true);\n }\n\n private downloadZip(response: HttpResponse<Blob>): void {\n this.aggregateKey$.pipe(take(1)).subscribe(key => {\n const link = document.createElement('a');\n const contentDisposition = response.headers.get('content-disposition');\n const splitContentDisposition = contentDisposition?.split('filename=') ?? [];\n const fileName = splitContentDisposition.length > 1 && splitContentDisposition[1];\n\n link.href = this.document.defaultView?.URL.createObjectURL(response.body) ?? '';\n link.download = fileName || `${key}.valtimo.zip`;\n link.target = '_blank';\n link.click();\n link.remove();\n });\n }\n\n private closeCurrentNotification(): void {\n if (this._currentNotification) {\n this.notificationService.close(this._currentNotification);\n }\n }\n\n private stopExporting(): void {\n this.exporting$.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@if (aggregateKey$ | async; as aggregateKey) {\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [dragAndDrop]=\"true\"\n [fields]=\"FIELDS\"\n [items]=\"searchActions$ | async\"\n [loading]=\"loading$ | async\"\n (itemsReordered)=\"onItemsReordered($event, aggregateKey)\"\n (rowClicked)=\"onSearchActionClick($event)\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"exportButton\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"addActionButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addActionButton\"\n [description]=\"'ikoManagement.searchActions.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.searchActions.noResultsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-iko-management-search-action-modal\n [usedKeys]=\"usedKeys$ | async\"\n [modalMode]=\"$modalMode()\"\n [repositoryKey]=\"repositoryKey$ | async\"\n [aggregateKey]=\"aggregateKey\"\n [open]=\"actionModalOpen$ | async\"\n [prefillData]=\"prefillData$ | async\"\n (modalClose)=\"onModalClose($event)\"\n ></valtimo-iko-management-search-action-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.searchActions.deleteModalText\"\n [outputOnConfirm]=\"deleteSearchActionKey$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteSearchAction($event)\"\n ></valtimo-confirmation-modal>\n\n <ng-template #exportButton>\n <button [iconOnly]=\"true\" cdsButton=\"ghost\" (click)=\"exportConfiguration()\">\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <ng-template #addActionButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'ikoManagement.searchActions.addActionTitle' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'ikoManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n </ng-template>\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output, signal} from '@angular/core';\nimport {\n ButtonModule,\n InputModule,\n LayerModule,\n ModalModule,\n NumberModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {IkoManagementApiService} from '../../../../services';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n FormBuilder,\n FormControl,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {\n CarbonMultiInputModule,\n InputLabelModule,\n MultiInputValues,\n runAfterCarbonModalClosed,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n ViewType,\n AutoKeyInputComponent\n} from '@valtimo/components';\nimport {ColumnDefaultSort, IkoListColumnRequest, ListColumnDto} from '../../../../models';\nimport {map} from 'rxjs/operators';\nimport {delay, filter, Observable, of, Subscription, switchMap} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {ModalCloseEvent, ModalMode} from '@valtimo/shared';\n\n@Component({\n standalone: true,\n selector: 'valtimo-iko-management-list-modal',\n templateUrl: './list-modal.component.html',\n styleUrls: ['./list-modal.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ButtonModule,\n InputModule,\n ReactiveFormsModule,\n LayerModule,\n SelectModule,\n ToggleModule,\n TooltipModule,\n CarbonMultiInputModule,\n InputLabelModule,\n NumberModule,\n AutoKeyInputComponent\n ],\n})\nexport class IkoManagementListModalComponent implements OnInit, OnDestroy {\n public readonly $openModal = signal<boolean>(false);\n @Input() public set openModal(value: boolean) {\n this.$openModal.set(value);\n }\n\n @Input() public readonly listColumns: ListColumnDto[] = [];\n\n private _selectedListColumn!: ListColumnDto;\n @Input() public set selectedListColumn(value: ListColumnDto) {\n if (!value) return;\n this._selectedListColumn = value;\n this.form.setValue(this.mapListColumnDtoToFormValue(value));\n this.form.markAsPristine();\n }\n\n private _modalMode: ModalMode = 'add';\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n if (value === 'add') {\n this.key.setAsyncValidators(this.keyNotUsedValidator());\n this.key.enable();\n } else {\n this.key.clearAsyncValidators();\n this.key.disable();\n }\n this.key.updateValueAndValidity();\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n @Output() public readonly closeModalEvent = new EventEmitter<ModalCloseEvent>();\n\n public readonly form = this.formBuilder.group({\n title: this.formBuilder.control('', [Validators.required]),\n key: this.formBuilder.control('', [Validators.required], [this.keyNotUsedValidator()]),\n path: this.formBuilder.control('', [Validators.required]),\n displayType: this.formBuilder.control('', [Validators.required]),\n sortable: this.formBuilder.control(false, [Validators.required]),\n defaultSort: this.formBuilder.control(''),\n dateFormat: this.formBuilder.control(''),\n tagAmount: this.formBuilder.control(1),\n booleanDisplayTypeParameters: this.formBuilder.control([\n {key: '', value: ''},\n ]) as FormControl<MultiInputValues>,\n enumDisplayTypeParameters: this.formBuilder.control([\n {key: '', value: ''},\n ]) as FormControl<MultiInputValues>,\n });\n\n public get title(): AbstractControl<string> {\n return this.form.get('title') as AbstractControl<string>;\n }\n public get key(): AbstractControl<string> {\n return this.form.get('key') as AbstractControl<string>;\n }\n public get path(): AbstractControl<string> {\n return this.form.get('path') as AbstractControl<string>;\n }\n public get displayType(): AbstractControl<string> {\n return this.form.get('displayType') as AbstractControl<string>;\n }\n public get sortable(): AbstractControl<boolean> {\n return this.form.get('sortable') as AbstractControl<boolean>;\n }\n public get defaultSort(): AbstractControl<string> {\n return this.form.get('defaultSort') as AbstractControl<string>;\n }\n public get dateFormat(): AbstractControl<string> {\n return this.form.get('dateFormat') as AbstractControl<string>;\n }\n\n public readonly isDateDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.DATE)\n );\n public readonly isBooleanDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.BOOLEAN)\n );\n public readonly isEnumDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.ENUM)\n );\n public readonly isTagsDisplayType$ = this.displayType.valueChanges.pipe(\n map(type => type === ViewType.TAGS)\n );\n\n private readonly _DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.UNDERSCORES_TO_SPACES,\n ViewType.TAGS,\n ViewType.HIDDEN,\n ];\n\n private readonly _ikoViewKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n public readonly displayTypeSelectItems: SelectItem[] = this._DISPLAY_TYPES.map(displayType => ({\n id: displayType,\n translationKey: `listColumnDisplayType.${displayType}`,\n }));\n\n public readonly sortSelectItems: SelectItem[] = [\n {\n translationKey: 'listColumn.sortableAsc',\n id: 'ASC',\n },\n {\n translationKey: 'listColumn.sortableDesc',\n id: 'DESC',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly formBuilder: FormBuilder,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.defaultSort.valueChanges.subscribe(defaultSortValue => {\n if (defaultSortValue) {\n this.sortable.setValue(true);\n this.sortable.disable();\n } else {\n this.sortable.enable();\n }\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public closeModal(): void {\n this.closeModalEvent.emit('close');\n runAfterCarbonModalClosed(this.resetForm);\n }\n\n public addColumn(): void {\n const formValue = this.form.getRawValue();\n const requestBody = this.getCreateRequestBodyFromFormValue();\n\n this.disableForm();\n\n this._ikoViewKey$\n .pipe(\n switchMap(ikoViewKey =>\n this.modalMode === 'add'\n ? this.ikoManagementApiService.createIkoListColumn(\n ikoViewKey,\n formValue.key,\n requestBody\n )\n : this.ikoManagementApiService.updateListColumn(ikoViewKey, formValue.key, requestBody)\n )\n )\n .subscribe({\n next: () => {\n this.enableForm();\n this.closeModalEvent.emit('closeAndRefresh');\n runAfterCarbonModalClosed(this.resetForm);\n },\n error: () => {\n this.enableForm();\n },\n });\n }\n\n private disableForm(): void {\n this.form.disable();\n }\n\n private enableForm(): void {\n this.form.enable();\n }\n\n private mapMultiInputValueToEnum(multiInputValues: MultiInputValues): Record<string, string> {\n return multiInputValues.reduce((acc, curr: any) => {\n return {...acc, [curr.key]: curr.value};\n }, {});\n }\n\n private getCreateRequestBodyFromFormValue(): IkoListColumnRequest {\n const {\n key,\n path,\n sortable,\n displayType,\n dateFormat,\n enumDisplayTypeParameters,\n booleanDisplayTypeParameters,\n defaultSort,\n ...rest\n } = this.form.getRawValue();\n\n const displayTypeParameters: Record<string, any> = (() => {\n switch (displayType) {\n case ViewType.DATE:\n return {dateFormat};\n case ViewType.ENUM:\n return {\n enum: this.mapMultiInputValueToEnum(enumDisplayTypeParameters),\n };\n case ViewType.BOOLEAN:\n return {\n enum: this.mapMultiInputValueToEnum(booleanDisplayTypeParameters),\n };\n default:\n return {};\n }\n })();\n\n return {\n key,\n path,\n sortable: Boolean(sortable),\n ...(defaultSort ? {defaultSort: defaultSort as ColumnDefaultSort} : {}),\n ...rest,\n ...(this.modalMode === 'edit' && {\n order: this._selectedListColumn.order,\n }),\n displayType: {\n type: displayType,\n displayTypeParameters,\n },\n };\n }\n\n private mapEnumToMultiInputValues(enumObj: Record<string, string> | undefined): MultiInputValues {\n if (!enumObj) {\n return [{key: '', value: ''}];\n }\n\n return Object.entries(enumObj).map(([key, value]) => ({key, value}));\n }\n\n private mapListColumnDtoToFormValue(dto: ListColumnDto): any {\n const {key, title, path, sortable, defaultSort, displayType} = dto;\n\n const baseFormValue: any = {\n key,\n title: title || '',\n path,\n sortable,\n defaultSort: defaultSort || '',\n displayType: displayType.type,\n dateFormat: '',\n booleanDisplayTypeParameters: [{key: '', value: ''}],\n enumDisplayTypeParameters: [{key: '', value: ''}],\n tagAmount: 1,\n };\n\n if (displayType.type === ViewType.DATE) {\n baseFormValue.dateFormat = displayType.displayTypeParameters?.dateFormat || '';\n }\n\n if (displayType.type === ViewType.ENUM) {\n baseFormValue.enumDisplayTypeParameters = this.mapEnumToMultiInputValues(\n displayType.displayTypeParameters?.enum\n );\n }\n\n if (displayType.type === ViewType.BOOLEAN) {\n baseFormValue.booleanDisplayTypeParameters = this.mapEnumToMultiInputValues(\n displayType.displayTypeParameters?.enum\n );\n }\n\n return baseFormValue;\n }\n\n private keyNotUsedValidator(): AsyncValidatorFn {\n return (control: AbstractControl) => {\n const value = control.value?.trim();\n if (!value) return of(null);\n\n const exists = this.listColumns.some(\n column => column.key.trim().toLowerCase() === value.toLowerCase()\n );\n return of(exists ? {keyTaken: true} : null).pipe(delay(200));\n };\n }\n\n private resetForm = (): void => {\n this.form.reset();\n this.form.markAsPristine();\n this.form.markAsUntouched();\n this.form.updateValueAndValidity();\n };\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n title:\n (modalMode === 'add' ? 'ikoManagement.addColumn' : 'ikoManagement.editColumn') | translate,\n } as state\"\n [open]=\"$openModal()\"\n [title]=\"state.title\"\n (close)=\"closeModal()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ state.title }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\" class=\"iko-column-form\">\n <cds-label>\n {{ 'ikoManagement.titleTitle' | translate }}\n\n <input\n [mode]=\"modalMode\"\n [invalid]=\"title.dirty && title.invalid\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'ikoManagement.columnTitlePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys$ | async\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"ikoManagement.columnKeyPlaceholder\"\n >\n </valtimo-auto-key-input>\n\n <cds-label>\n {{ 'ikoManagement.pathTitle' | translate }}\n\n <input\n [invalid]=\"path.dirty && path.invalid\"\n formControlName=\"path\"\n cdsText\n placeholder=\"{{ 'ikoManagement.columnPathPlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-toggle\n formControlName=\"sortable\"\n [label]=\"'ikoManagement.sortableTitle' | translate\"\n [onText]=\"'ikoManagement.sortingEnabled' | translate\"\n [offText]=\"'ikoManagement.sortingDisabled' | translate\"\n ></cds-toggle>\n\n <v-select\n [invalid]=\"defaultSort.dirty && defaultSort.invalid\"\n formControlName=\"defaultSort\"\n [items]=\"sortSelectItems\"\n titleTranslationKey=\"ikoManagement.defaultSortTitle\"\n [appendInline]=\"false\"\n ></v-select>\n\n <v-select\n [invalid]=\"displayType.dirty && displayType.invalid\"\n formControlName=\"displayType\"\n [items]=\"displayTypeSelectItems\"\n titleTranslationKey=\"ikoManagement.displayType\"\n [appendInline]=\"false\"\n ></v-select>\n\n <v-input-label\n *ngIf=\"isDateDisplayType$ | async\"\n titleTranslationKey=\"listColumn.dateFormat\"\n tooltipTranslationKey=\"listColumn.dateFormatTooltip\"\n >\n <input cdsText formControlName=\"dateFormat\" />\n </v-input-label>\n\n <v-input-label\n *ngIf=\"isBooleanDisplayType$ | async\"\n titleTranslationKey=\"listColumn.enumTitleOptional\"\n tooltipTranslationKey=\"listColumn.enumTooltipOptional\"\n >\n <valtimo-carbon-multi-input\n type=\"keyValue\"\n formControlName=\"booleanDisplayTypeParameters\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n ></valtimo-carbon-multi-input>\n </v-input-label>\n\n <v-input-label\n *ngIf=\"isEnumDisplayType$ | async\"\n titleTranslationKey=\"listColumn.enumTitle\"\n tooltipTranslationKey=\"listColumn.enumTooltip\"\n >\n <valtimo-carbon-multi-input\n type=\"keyValue\"\n formControlName=\"enumDisplayTypeParameters\"\n ></valtimo-carbon-multi-input>\n </v-input-label>\n\n <v-input-label\n *ngIf=\"isTagsDisplayType$ | async\"\n titleTranslationKey=\"listColumn.tagAmount\"\n tooltipTranslationKey=\"listColumn.tagAmountTooltip\"\n >\n <cds-number formControlName=\"tagAmount\" [min]=\"1\" [step]=\"1\"></cds-number>\n </v-input-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [disabled]=\"form.invalid || form.disabled || !form.dirty\"\n cdsButton=\"primary\"\n (click)=\"addColumn()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n Observable,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n} from '@valtimo/components';\nimport {IkoManagementApiService} from '../../../../services';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {getDisplayTypeParametersView, ModalCloseEvent, ModalMode} from '@valtimo/shared';\nimport {ListColumnDto} from '../../../../models';\nimport {IkoManagementListModalComponent} from '../list-modal/list-modal.component';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\n@Component({\n standalone: true,\n selector: 'valtimo-iko-management-list-columns',\n templateUrl: './iko-management-list.component.html',\n styleUrls: ['./iko-management-list.component.scss'],\n imports: [\n CommonModule,\n CarbonListModule,\n TabsModule,\n TranslateModule,\n IkoManagementListModalComponent,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n})\nexport class IkoManagementListComponent implements OnInit, OnDestroy {\n public readonly $openModal = signal<boolean>(false);\n public readonly openConfirmationModal$ = new BehaviorSubject<boolean>(false);\n public readonly $loading = signal<boolean>(true);\n public readonly $disableInput = signal<boolean>(true);\n public readonly $modalMode = signal<ModalMode>('add');\n\n private readonly _ikoViewKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n public readonly $ikoListColumnDtos = signal<ListColumnDto[]>([]);\n\n public readonly $selectedListColumn = signal<ListColumnDto | null>(null);\n\n private readonly _reloadColumns$ = new BehaviorSubject<null>(null);\n\n public readonly ikoListColumns$ = combineLatest([\n toObservable(this.$ikoListColumnDtos),\n this.translateService.stream('key'),\n ]).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: getDisplayTypeParametersView(\n column.displayType.displayTypeParameters\n ),\n }))\n ),\n tap(() => this.$disableInput.set(false))\n );\n\n public readonly FIELDS: Array<ColumnConfig> = [\n {\n key: 'title',\n label: 'listColumn.title',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'key',\n label: 'listColumn.key',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'path',\n label: 'listColumn.path',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'displayType',\n label: 'listColumn.displayType',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'sortable',\n label: 'listColumn.sortable',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n viewType: 'string',\n sortable: false,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onRowClicked.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClicked.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([this._ikoViewKey$, this._reloadColumns$])\n .pipe(\n tap(() => this.$disableInput.set(true)),\n switchMap(([key]) => this.ikoManagementApiService.getIkoListColumns(key)),\n tap(res => {\n this.$ikoListColumnDtos.set(res);\n this.$loading.set(false);\n })\n )\n .subscribe()\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onItemsReordered(items: {id: string}[]): void {\n const listColumns = this.$ikoListColumnDtos();\n const mappedItems = items\n .map(item => listColumns.find(column => column.id === item.id))\n .map((item, index) => ({...item, order: index}));\n\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(\n switchMap(key => this.ikoManagementApiService.updateIkoListColumnOrder(key, mappedItems))\n )\n .subscribe({\n next: () => {\n this.enableInput();\n this.reloadColumns();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public onRowClicked(event: {key: string}): void {\n const listColumnDto = this.$ikoListColumnDtos().find(column => column.key === event.key);\n if (!listColumnDto) return;\n this.$selectedListColumn.set({...listColumnDto});\n this.$openModal.set(true);\n this.$modalMode.set('edit');\n }\n\n public onDeleteClicked(event: ListColumnDto): void {\n const listColumnDto = this.$ikoListColumnDtos().find(column => column.key === event.key);\n if (!listColumnDto) return;\n this.$selectedListColumn.set({...listColumnDto});\n this.openConfirmationModal$.next(true);\n }\n\n public onDeleteListColumn(event: ListColumnDto): void {\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(switchMap(key => this.ikoManagementApiService.deleteIkoListColumn(key, event.key)))\n .subscribe({\n next: () => {\n this.reloadColumns();\n this.enableInput();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public openModal(): void {\n this.$openModal.set(true);\n }\n\n public onCreateButtonClicked(): void {\n this.$modalMode.set('add');\n this.openModal();\n }\n\n private closeModal(): void {\n this.$openModal.set(false);\n }\n\n public onCloseModalEvent(event: ModalCloseEvent): void {\n this.closeModal();\n if (event === 'closeAndRefresh') this.reloadColumns();\n }\n\n private disableInput(): void {\n this.$disableInput.set(true);\n }\n\n private enableInput(): void {\n this.$disableInput.set(false);\n }\n\n private reloadColumns(): void {\n this._reloadColumns$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n columns: (ikoListColumns$ | async) || [],\n ikoListColumnDtos: $ikoListColumnDtos(),\n selectedListColumn: $selectedListColumn(),\n loading: $loading(),\n openModal: $openModal(),\n disableInput: $disableInput(),\n modalMode: $modalMode(),\n } as state\"\n>\n <valtimo-carbon-list\n [items]=\"state.columns\"\n [loading]=\"state.loading\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"state.disableInput\"\n [actionItems]=\"ACTION_ITEMS\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n >\n <div carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"onCreateButtonClicked()\">\n {{ 'ikoManagement.addColumn' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n\n <valtimo-no-results\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-iko-management-list-modal\n [openModal]=\"state.openModal\"\n [listColumns]=\"state.ikoListColumnDtos\"\n [selectedListColumn]=\"state.selectedListColumn\"\n [modalMode]=\"state.modalMode\"\n (closeModalEvent)=\"onCloseModalEvent($event)\"\n ></valtimo-iko-management-list-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.searchActions.deleteModalText\"\n [showModalSubject$]=\"openConfirmationModal$\"\n [outputOnConfirm]=\"state.selectedListColumn\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteListColumn($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n AutoKeyInputComponent,\n CarbonMultiInputModule,\n InputLabelModule,\n runAfterCarbonModalClosed,\n SelectItem,\n SelectModule,\n ValtimoCdsModalDirective,\n} from '@valtimo/components';\nimport {ModalCloseEvent, ModalMode} from '@valtimo/shared';\nimport {\n ButtonModule,\n InputModule,\n LayerModule,\n ModalModule,\n NumberModule,\n ToggleModule,\n TooltipModule,\n} from 'carbon-components-angular';\nimport {filter, map, Observable, switchMap} from 'rxjs';\nimport {IkoTabType, TabDto} from '../../../../models';\nimport {IkoManagementApiService} from '../../../../services';\n\n@Component({\n selector: 'valtimo-iko-management-tab-details-modal',\n templateUrl: './iko-management-tab-details-modal.component.html',\n styleUrl: './iko-management-tab-details-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n ButtonModule,\n InputModule,\n ReactiveFormsModule,\n LayerModule,\n SelectModule,\n ToggleModule,\n TooltipModule,\n CarbonMultiInputModule,\n InputLabelModule,\n NumberModule,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementTabDetailsModalComponent {\n public readonly $openModal = signal<boolean>(false);\n @Input() public set openModal(value: boolean) {\n this.$openModal.set(value);\n }\n\n @Input() public readonly usedKeys: string[] = [];\n\n public readonly $selectedKey = signal<string>('');\n @Input() public set selectedTab(value: TabDto) {\n if (!value) return;\n this.$selectedKey.set(value.key);\n this.form.setValue({...value, title: value.title || ''});\n this.form.markAsPristine();\n }\n\n private _modalMode: ModalMode = 'add';\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n @Output() public readonly closeModalEvent = new EventEmitter<ModalCloseEvent>();\n\n public readonly form = this.formBuilder.group({\n title: this.formBuilder.control('', Validators.required),\n key: this.formBuilder.control('', [Validators.required]),\n type: this.formBuilder.control('', [Validators.required]),\n });\n\n public get title(): AbstractControl<string> {\n return this.form.get('title') as AbstractControl<string>;\n }\n public get key(): AbstractControl<string> {\n return this.form.get('key') as AbstractControl<string>;\n }\n public get type(): AbstractControl<string> {\n return this.form.get('type') as AbstractControl<string>;\n }\n\n private readonly _ikoViewKey$: Observable<string> = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n private readonly _TAB_TYPES: Array<IkoTabType> = [IkoTabType.WIDGETS];\n\n public readonly tabTypeSelectItems: SelectItem[] = this._TAB_TYPES.map(tabType => ({\n id: tabType,\n translationKey: `ikoManagement.tabTypes.${tabType}`,\n }));\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly formBuilder: FormBuilder,\n private readonly route: ActivatedRoute\n ) {}\n\n public closeModal(): void {\n this.closeModalEvent.emit('close');\n runAfterCarbonModalClosed(this.resetForm);\n }\n\n public addTab(): void {\n const formValue = this.form.getRawValue();\n\n this.disableForm();\n\n this._ikoViewKey$\n .pipe(\n switchMap(ikoViewKey =>\n this.modalMode === 'add'\n ? this.ikoManagementApiService.createIkoTab(ikoViewKey, formValue.key, formValue)\n : this.ikoManagementApiService.updateIkoTab(ikoViewKey, formValue.key, formValue)\n )\n )\n .subscribe({\n next: () => {\n this.enableForm();\n this.closeModalEvent.emit('closeAndRefresh');\n runAfterCarbonModalClosed(this.resetForm);\n },\n error: () => {\n this.enableForm();\n },\n });\n }\n\n private disableForm(): void {\n this.form.disable();\n }\n\n private enableForm(): void {\n this.form.enable();\n }\n\n private resetForm = (): void => {\n this.form.reset();\n this.form.markAsPristine();\n this.form.markAsUntouched();\n this.form.updateValueAndValidity();\n };\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n (close)=\"closeModal()\"\n *ngIf=\"{\n title: (modalMode === 'add' ? 'ikoManagement.addTab' : 'ikoManagement.editTab') | translate,\n } as state\"\n [open]=\"$openModal()\"\n [title]=\"state.title\"\n valtimoCdsModal\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ state.title }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\" class=\"iko-tab-form\">\n <cds-label>\n {{ 'ikoManagement.tabTitle' | translate }}\n\n <input\n [invalid]=\"title.dirty && title.invalid\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'ikoManagement.tabTitlePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n formControlName=\"key\"\n labelTranslationKey=\"ikoManagement.keyTitle\"\n placeholderTranslationKey=\"ikoManagement.tabKeyPlaceholder\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"modalMode === 'edit' ? $selectedKey() : title.value\"\n [mode]=\"modalMode\"\n >\n </valtimo-auto-key-input>\n\n <v-select\n [invalid]=\"type.dirty && type.invalid\"\n [dropUp]=\"false\"\n formControlName=\"type\"\n [items]=\"tabTypeSelectItems\"\n titleTranslationKey=\"ikoManagement.tabTypeTitle\"\n [appendInline]=\"false\"\n ></v-select>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [disabled]=\"form.invalid || form.disabled || !form.dirty\"\n cdsButton=\"primary\"\n (click)=\"addTab()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, computed, OnDestroy, OnInit, signal} from '@angular/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, Subscription, switchMap, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {IkoManagementApiService} from '../../../../services';\nimport {TabDto} from '../../../../models';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {IkoManagementTabDetailsModalComponent} from '../tab-detail-modal/iko-management-tab-details-modal.component';\nimport {ModalCloseEvent, ModalMode} from '@valtimo/shared';\n\n@Component({\n standalone: true,\n templateUrl: './iko-management-tabs.component.html',\n imports: [\n CommonModule,\n CarbonListModule,\n TabsModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n IkoManagementTabDetailsModalComponent,\n TranslatePipe,\n ConfirmationModalModule,\n ],\n})\nexport class IkoManagementTabsComponent implements OnInit, OnDestroy {\n public readonly $disableInput = signal<boolean>(true);\n public readonly $ikoTabDtos = signal<TabDto[]>([]);\n public readonly $usedKeys = computed(() =>\n this.$ikoTabDtos().reduce(\n (acc, curr) => [...acc, ...(curr.key === this.$selectedTab()?.key ? [] : [curr.key])],\n [] as string[]\n )\n );\n public readonly $loading = signal<boolean>(true);\n public readonly $selectedTab = signal<TabDto | null>(null);\n public readonly $openModal = signal<boolean>(false);\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly openConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n private readonly _ikoViewKey$ = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n private readonly _reloadTabs$ = new BehaviorSubject<null>(null);\n\n public readonly ikoTabs$ = combineLatest([\n toObservable(this.$ikoTabDtos),\n this.translateService.stream('key'),\n ]).pipe(\n map(([tabs]) =>\n tabs.map(tab => ({\n ...tab,\n type: this.translateService.instant(`ikoManagement.tabTypes.${tab.type}`),\n }))\n ),\n tap(() => this.$disableInput.set(false))\n );\n\n public readonly FIELDS: Array<ColumnConfig> = [\n {\n key: 'key',\n label: 'ikoManagement.tabKey',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'title',\n label: 'ikoManagement.tabTitle',\n viewType: 'string',\n sortable: false,\n },\n {\n key: 'type',\n label: 'ikoManagement.tabType',\n viewType: 'string',\n sortable: false,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editTab.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClicked.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly translateService: TranslateService,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([this._ikoViewKey$, this._reloadTabs$])\n .pipe(\n tap(() => this.$disableInput.set(true)),\n switchMap(([key]) => this.ikoManagementApiService.getIkoTabs(key)),\n tap(res => {\n this.$ikoTabDtos.set(res);\n this.$loading.set(false);\n })\n )\n .subscribe()\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onRowClicked(event: {key: string}): void {\n const tabDto = this.$ikoTabDtos().find(column => column.key === event.key);\n if (!tabDto) return;\n\n if (tabDto.type === 'widgets') {\n this.router.navigate(['widget-details', tabDto.key], {relativeTo: this.route});\n return;\n }\n\n this.editTab(event);\n }\n\n public editTab(event: {key: string}): void {\n const tabDto = this.$ikoTabDtos().find(column => column.key === event.key);\n if (!tabDto) return;\n this.$selectedTab.set({...tabDto});\n this.$openModal.set(true);\n this.$modalMode.set('edit');\n }\n\n public onDeleteClicked(event: {key: string}): void {\n const tabDto = this.$ikoTabDtos().find(tab => tab.key === event.key);\n if (!tabDto) return;\n this.$selectedTab.set({...tabDto});\n this.openConfirmationModal$.next(true);\n }\n\n public onItemsReordered(items: {key: string}[]): void {\n const tabs = this.$ikoTabDtos();\n const mappedItems = items\n .map(item => tabs.find(column => column.key === item.key))\n .map((item, index) => ({...item, order: index, title: item.title || null}));\n\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(switchMap(key => this.ikoManagementApiService.updateIkoTabs(key, mappedItems)))\n .subscribe({\n next: () => {\n this.enableInput();\n this.reloadTabs();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n public onCreateButtonClicked(): void {\n this.$modalMode.set('add');\n this.$selectedTab.set({title: '', key: '', type: ''});\n this.openModal();\n }\n\n private closeModal(): void {\n this.$openModal.set(false);\n }\n\n public onCloseModalEvent(event: ModalCloseEvent): void {\n this.closeModal();\n if (event === 'closeAndRefresh') this.reloadTabs();\n }\n\n public openModal(): void {\n this.$openModal.set(true);\n }\n\n public onDeleteTab(event: {key: string}): void {\n this.disableInput();\n\n this._ikoViewKey$\n .pipe(switchMap(key => this.ikoManagementApiService.deleteIkoTab(key, event.key)))\n .subscribe({\n next: () => {\n this.reloadTabs();\n this.enableInput();\n },\n error: () => {\n this.enableInput();\n },\n });\n }\n\n private disableInput(): void {\n this.$disableInput.set(true);\n }\n\n private enableInput(): void {\n this.$disableInput.set(false);\n }\n\n private reloadTabs(): void {\n this._reloadTabs$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n tabs: (ikoTabs$ | async) || [],\n ikoTabColumnDtos: $ikoTabDtos(),\n selectedTab: $selectedTab(),\n loading: $loading(),\n openModal: $openModal(),\n disableInput: $disableInput(),\n modalMode: $modalMode(),\n usedKeys: $usedKeys(),\n } as state\"\n>\n <valtimo-carbon-list\n [items]=\"state.tabs\"\n [loading]=\"state.loading\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"state.disableInput\"\n [actionItems]=\"ACTION_ITEMS\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n >\n <div carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"onCreateButtonClicked()\">\n {{ 'ikoManagement.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n\n <valtimo-no-results\n [title]=\"'ikoManagement.noTabConfigWarningTitle' | translate\"\n [description]=\"'ikoManagement.noTabConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.deleteTabModalText\"\n [showModalSubject$]=\"openConfirmationModal$\"\n [outputOnConfirm]=\"state.selectedTab\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteTab($event)\"\n ></valtimo-confirmation-modal>\n\n <valtimo-iko-management-tab-details-modal\n [openModal]=\"state.openModal\"\n [selectedTab]=\"state.selectedTab\"\n [modalMode]=\"state.modalMode\"\n [usedKeys]=\"state.usedKeys\"\n (closeModalEvent)=\"onCloseModalEvent($event)\"\n ></valtimo-iko-management-tab-details-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IkoManagementTab, IkoManagementTabType} from '../models';\nimport {IkoManagementSearchActionsComponent} from '../components/iko-management-details/components/search-actions/iko-management-search-actions.component';\nimport {IkoManagementListComponent} from '../components/iko-management-details/components/list/iko-management-list.component';\nimport {IkoManagementTabsComponent} from '../components/iko-management-details/components/tabs/iko-management-tabs.component';\n\nconst IKO_MANAGEMENT_TABS: IkoManagementTab[] = [\n {\n key: IkoManagementTabType.SEARCH_FIELDS,\n title: 'ikoManagement.searchActions.title',\n component: IkoManagementSearchActionsComponent,\n },\n {\n key: IkoManagementTabType.LIST,\n title: 'ikoManagement.list',\n component: IkoManagementListComponent,\n },\n {\n key: IkoManagementTabType.TABS,\n title: 'ikoManagement.tabs.title',\n component: IkoManagementTabsComponent,\n },\n];\n\nexport {IKO_MANAGEMENT_TABS};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './iko-management.constants';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, ViewChild, ViewContainerRef} from '@angular/core';\nimport {\n BreadcrumbService,\n CarbonListModule,\n ColumnConfig,\n PageTitleService,\n} from '@valtimo/components';\nimport {IkoApiService, IkoManagementApiService} from '../../services';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n Observable,\n Subscription,\n switchMap,\n take,\n} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {map} from 'rxjs/operators';\nimport {TabsModule} from 'carbon-components-angular';\nimport {IkoManagementTab, IkoManagementTabType} from '../../models';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {IKO_MANAGEMENT_TABS} from '../../constants';\n\n@Component({\n selector: 'valtimo-iko-management-details',\n standalone: true,\n templateUrl: './iko-management-details.component.html',\n styleUrl: './iko-management-details.component.scss',\n imports: [CommonModule, CarbonListModule, TabsModule, TranslateModule],\n})\nexport class IkoManagementDetailsComponent implements OnInit, OnDestroy {\n private readonly _dynamicContainerSubject$ = new BehaviorSubject<ViewContainerRef | null>(null);\n @ViewChild('tabComponent', {static: false, read: ViewContainerRef})\n public set dynamicContainer(view: ViewContainerRef) {\n if (view) this._dynamicContainerSubject$.next(view);\n }\n private get _dynamicContainer$(): Observable<ViewContainerRef> {\n return this._dynamicContainerSubject$.pipe(filter(container => !!container));\n }\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly tabKey$: Observable<IkoManagementTabType> = this.route.params.pipe(\n map(params => params?.tabKey),\n filter(key => !!key)\n );\n\n private readonly _key$ = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n private readonly _apiKey$ = this.route.params.pipe(\n map(params => params?.apiKey),\n filter(key => !!key)\n );\n\n public readonly currentMenuItem$ = combineLatest([\n this._key$,\n this.ikoApiService.cachedMenuItems$,\n ]).pipe(\n map(([key, items]) => {\n const currentItem = items.find(item => item.key === key);\n if (!currentItem) return;\n this.pageTitleService.setCustomPageTitle(currentItem.title || '-');\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'ikoManagement.title',\n },\n ];\n\n public readonly TABS = IKO_MANAGEMENT_TABS;\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly ikoApiService: IkoApiService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public ngOnInit(): void {\n this.openActivateTabSubscription();\n this.setThirdBreadcrumb();\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.pageTitleService.enableReset();\n this.breadcrumbService.clearThirdBreadcrumb();\n }\n\n public onTabSelected(tab: IkoManagementTab): void {\n this.router.navigate([`../${tab.key}`], {relativeTo: this.route});\n }\n\n private openActivateTabSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.tabKey$, this._dynamicContainer$]).subscribe(([tabKey, container]) => {\n const tab = this.TABS.find(tab => tab.key === tabKey);\n container.clear();\n container.createComponent(tab.component);\n })\n );\n }\n\n private setThirdBreadcrumb(): void {\n this._apiKey$\n .pipe(\n take(1),\n switchMap(apiKey => this.ikoManagementApiService.getIkoRepositoryConfig(apiKey))\n )\n .subscribe(repositoryConfig => {\n this.breadcrumbService.setThirdBreadcrumb({\n route: [`/iko-management/${repositoryConfig.key}`],\n content: repositoryConfig?.title ?? '',\n href: `/iko-management/${repositoryConfig.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<ng-container\n *ngIf=\"{\n currentMenuItem: currentMenuItem$ | async,\n tabKey: tabKey$ | async,\n } as obs\"\n>\n <cds-tabs type=\"contained\">\n <cds-tab\n *ngFor=\"let tab of TABS\"\n [active]=\"obs.tabKey === tab.key\"\n [heading]=\"tab.title | translate\"\n (selected)=\"onTabSelected(tab)\"\n >\n </cds-tab>\n </cds-tabs>\n\n <ng-template #tabComponent></ng-template>\n</ng-container>\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n runAfterCarbonModalClosed,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LayerModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, filter, Observable, switchMap, take} from 'rxjs';\nimport {PropertyField, IkoViewResponse, IkoRepositoryConfigResponse} from '../../../models';\nimport {IkoManagementApiService} from '../../../services';\nimport {PropertiesFormComponent} from '../../iko-management-properties/iko-management-properties.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management-view-modal',\n templateUrl: './iko-management-view-modal.component.html',\n styleUrl: './iko-management-view-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n PropertiesFormComponent,\n LayerModule,\n AutoKeyInputComponent,\n ],\n})\nexport class IkoManagementViewModalComponent {\n private readonly _open$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set open(value: boolean) {\n this._open$.next(value);\n if (!value) this.formGroup.reset();\n }\n public get open$(): Observable<boolean> {\n return this._open$.asObservable();\n }\n\n private _modalMode: ModalMode;\n @Input()\n public set modalMode(value: ModalMode) {\n this._modalMode = value;\n }\n public get modalMode(): ModalMode {\n return this._modalMode;\n }\n\n private readonly _apiKey$ = new BehaviorSubject<string | null>(null);\n\n @Input() public set apiKey(value: string | null) {\n if (!value) return;\n\n this._apiKey$.next(value);\n }\n\n public readonly $prefillData = signal<IkoViewResponse | null>(null);\n @Input() public set prefillData(value: IkoViewResponse | null) {\n if (!value) {\n this.$prefillData.set(null);\n return;\n }\n\n this.$prefillData.set(value);\n this.formGroup.patchValue(value);\n }\n\n @Input() public usedKeys: string[] = [];\n\n @Output() public readonly modalClose = new EventEmitter<any | null>();\n\n public get title(): AbstractControl<string> {\n return this.formGroup.get('title') as AbstractControl<string>;\n }\n\n public readonly propertyFields$: Observable<PropertyField[]> = this.open$.pipe(\n filter((open: boolean) => !!open),\n switchMap(() => this._apiKey$),\n switchMap((repositoryKey: string | null) =>\n this.ikoManagementApiService.getIkoViewType(repositoryKey ?? '')\n ),\n switchMap((repository: IkoRepositoryConfigResponse) =>\n this.ikoManagementApiService.getIkoViewPropertyFields(repository.type)\n )\n );\n public formGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', Validators.required),\n properties: this.fb.group({}, Validators.required),\n });\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public get properties(): FormGroup | null {\n const properties = this.formGroup.get('properties');\n return !properties ? null : (properties as FormGroup);\n }\n\n public onCancel(): void {\n this.modalClose.emit(null);\n runAfterCarbonModalClosed(() => {\n this.resetForm();\n });\n }\n\n public onSave(): void {\n this.propertyFields$.pipe(take(1)).subscribe(fields => {\n const formData = this.formGroup.getRawValue();\n fields.forEach(field => {\n if (formData.properties[field.key] && field.type === 'keyValueList') {\n formData.properties[field.key] = Array.isArray(formData.properties[field.key])\n ? formData.properties[field.key].reduce((acc: Record<string, any>, cur: any) => {\n if (cur.key) {\n acc[cur.key] = cur.value;\n }\n return acc;\n }, {})\n : {};\n }\n });\n this.modalClose.emit(formData);\n });\n runAfterCarbonModalClosed(() => {\n this.resetForm();\n });\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.formGroup.reset({\n title: '',\n key: '',\n properties: {},\n });\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.views.' + modalMode | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent>\n <cds-label>\n {{ 'interface.title' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.title' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n\n <valtimo-iko-management-properties\n [propertiesFormGroup]=\"properties\"\n [fields]=\"propertyFields$ | async\"\n [prefillData]=\"$prefillData()?.properties\"\n />\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"formGroup.invalid\" cdsButton=\"primary\" (click)=\"onSave()\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nenum UPLOAD_STATUS {\n ACTIVE = 'active',\n ERROR = 'error',\n FINISHED = 'finished',\n}\n\nenum UPLOAD_STEP {\n FILE_SELECT = 'fileSelect',\n FILE_UPLOAD = 'fileUpload',\n ACCESS_CONTROL = 'accessControl',\n}\n\nconst STEPS = [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD, UPLOAD_STEP.ACCESS_CONTROL];\n\nexport {STEPS, UPLOAD_STATUS, UPLOAD_STEP};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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';\n\n@Component({\n standalone: true,\n selector: 'valtimo-case-management-upload-step',\n templateUrl: './iko-management-upload-step.component.html',\n styleUrls: ['./iko-management-upload-step.component.scss'],\n})\nexport class IkoManagementUploadStepComponent {\n @Input() illustration!: string;\n @Input() message!: string;\n @Input() title!: string;\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"valtimo-upload-step__content\">\n <div class=\"valtimo-upload-step__title\">{{ title }}</div>\n\n <div class=\"valtimo-upload-step__message\">{{ message }}</div>\n</div>\n\n<img [src]=\"illustration\" alt=\"{{ illustration }}\" class=\"valtimo-upload-step__illustration\" />\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ButtonModule,\n CheckboxModule,\n FileItem,\n FileUploaderModule,\n IconModule,\n InputModule,\n ModalModule,\n NotificationContent,\n NotificationModule,\n ProgressBarModule,\n} from 'carbon-components-angular';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {CARBON_CONSTANTS, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, switchMap, take} from 'rxjs';\nimport {UPLOAD_STEP, STEPS, UPLOAD_STATUS} from './iko-management-upload.constants';\nimport {IkoManagementApiService} from '../../../services';\nimport {IkoManagementUploadStepComponent} from './step/iko-management-upload-step.component';\n\n@Component({\n standalone: true,\n selector: 'valtimo-iko-management-upload-modal',\n templateUrl: './iko-management-upload-modal.component.html',\n styleUrls: ['./iko-management-upload-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n ModalModule,\n ValtimoCdsModalDirective,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n ProgressBarModule,\n CheckboxModule,\n FileUploaderModule,\n IkoManagementUploadStepComponent,\n NotificationModule,\n TranslateModule,\n ],\n})\nexport class IkoManagementUploadModalComponent implements OnInit, OnDestroy {\n private readonly _open$ = new BehaviorSubject<boolean>(false);\n\n @Input() public set open(value: boolean) {\n this._open$.next(value);\n\n if (!value) this.resetForm();\n }\n\n public get open$(): Observable<boolean> {\n return this._open$.asObservable();\n }\n\n @Output() modalClose = new EventEmitter<boolean>();\n\n public readonly showCheckboxError$ = new BehaviorSubject<boolean>(false);\n public readonly activeStep$ = new BehaviorSubject<UPLOAD_STEP>(UPLOAD_STEP.FILE_SELECT);\n public readonly backButtonEnabled$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) => [UPLOAD_STEP.ACCESS_CONTROL].includes(activeStep))\n );\n\n private readonly _disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly uploadStatus$ = new BehaviorSubject<UPLOAD_STATUS>(UPLOAD_STATUS.ACTIVE);\n\n public readonly nextButtonDisabled$: Observable<boolean> = combineLatest([\n this.activeStep$,\n this._disabled$,\n this.uploadStatus$,\n ]).pipe(\n map(([activeStep, disabled, status]) =>\n activeStep === UPLOAD_STEP.FILE_UPLOAD ? status !== UPLOAD_STATUS.FINISHED : disabled\n )\n );\n\n public readonly isStepAfterUpload$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) => ![UPLOAD_STEP.FILE_SELECT].includes(activeStep))\n );\n\n public readonly notificationObj$: Observable<NotificationContent> = combineLatest([\n this.translateService.stream('interface.warning'),\n this.translateService.stream('ikoManagement.importDefinition.overwriteWarning'),\n ]).pipe(\n map(([title, message]) => ({\n type: 'warning',\n title,\n message,\n showClose: false,\n lowContrast: true,\n }))\n );\n\n public readonly showCloseButton$: Observable<boolean> = this.activeStep$.pipe(\n map((activeStep: UPLOAD_STEP) =>\n [UPLOAD_STEP.FILE_SELECT, UPLOAD_STEP.FILE_UPLOAD].includes(activeStep)\n )\n );\n\n public acceptedFiles: string[] = ['.zip'];\n public selectedFile: File | null;\n\n public readonly UPLOAD_STATUS = UPLOAD_STATUS;\n public readonly UPLOAD_STEP = UPLOAD_STEP;\n private readonly _subscriptions = new Subscription();\n private readonly _importFile$ = new BehaviorSubject<string | FormData>('');\n\n public form: FormGroup = this.fb.group({\n file: this.fb.control(new Set<any>(), [Validators.required]),\n });\n\n private _checked = false;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly ikoManagementApiService: IkoManagementApiService\n ) {}\n\n public ngOnInit(): void {\n const control: AbstractControl | null = this.form.get('file');\n if (!control) return;\n\n this._subscriptions.add(\n this.form.get('file').valueChanges.subscribe((fileSet: Set<FileItem>) => {\n const [fileItem] = fileSet;\n if (!fileItem) {\n this._disabled$.next(true);\n this.showCheckboxError$.next(false);\n this._checked = false;\n return;\n }\n\n this.setZipFile(fileItem);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.resetModal();\n }\n\n public onCloseModal(definitionUploaded?: boolean): void {\n this.modalClose.emit(definitionUploaded ?? false);\n this.resetModal();\n }\n\n public onNextClick(activeStep: UPLOAD_STEP): void {\n const nextIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) + 1;\n if (nextIndex === STEPS.length) {\n return;\n }\n\n if (activeStep === UPLOAD_STEP.FILE_SELECT && !this._checked) {\n this.showCheckboxError$.next(true);\n return;\n }\n\n this.showCheckboxError$.next(false);\n this.activeStep$.next(STEPS[nextIndex]);\n\n if (STEPS[nextIndex] === UPLOAD_STEP.FILE_UPLOAD) {\n this.uploadDefinition();\n }\n }\n\n public onBackClick(activeStep: UPLOAD_STEP): void {\n const prevIndex: number = STEPS.findIndex((step: UPLOAD_STEP) => step === activeStep) - 1;\n if (prevIndex === -1) {\n return;\n }\n\n this.activeStep$.next(STEPS[prevIndex]);\n }\n\n public onCheckedChange(checked: boolean): void {\n this._checked = checked;\n\n if (!checked) {\n return;\n }\n\n this.showCheckboxError$.next(false);\n }\n\n public onCancel(): void {\n this.modalClose.emit(false);\n }\n\n private uploadDefinition(): void {\n this._disabled$.next(true);\n this._importFile$\n .pipe(\n switchMap((file: any) => this.ikoManagementApiService.importConfigurationZip(file)),\n take(1)\n )\n .subscribe({\n next: () => {\n this._disabled$.next(false);\n this.uploadStatus$.next(UPLOAD_STATUS.FINISHED);\n },\n error: () => {\n this.uploadStatus$.next(UPLOAD_STATUS.ERROR);\n this._disabled$.next(false);\n },\n });\n }\n\n private setZipFile(fileItem: FileItem): void {\n const file = fileItem?.file;\n\n if (!file) {\n this._importFile$.next('');\n return;\n }\n\n const blob = new Blob([fileItem.file], {type: fileItem.file.type});\n const fd = new FormData();\n fd.append('file', blob, fileItem.file.name);\n this._importFile$.next(fd);\n this._disabled$.next(false);\n }\n\n private resetForm(): void {\n this.form.get('file')?.setValue(new Set<any>());\n }\n\n private resetModal(): void {\n setTimeout(() => {\n this.resetForm();\n this.activeStep$.next(UPLOAD_STEP.FILE_SELECT);\n this.uploadStatus$.next(UPLOAD_STATUS.ACTIVE);\n this.showCheckboxError$.next(false);\n this._disabled$.next(true);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n uploadStatus: uploadStatus$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n showCloseButton: showCloseButton$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-definition-uploader__content\">\n @switch (obs.activeStep) {\n @case (UPLOAD_STEP.FILE_SELECT) {\n <form [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'ikoManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'ikoManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'ikoManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n @if (!obs.nextButtonDisabled) {\n <cds-inline-notification\n [notificationObj]=\"obs.notificationObj\"\n ></cds-inline-notification>\n\n <div class=\"valtimo-definition-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'ikoManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n @if (obs.showCheckboxError) {\n <div class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n {{ 'ikoManagement.importDefinition.checkbox.error' | translate }}\n </div>\n }\n </div>\n }\n </form>\n }\n\n @case (UPLOAD_STEP.FILE_UPLOAD) {\n <cds-progress-bar\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'ikoManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'ikoManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n }\n\n @default {\n <valtimo-case-management-upload-step\n [message]=\"\n 'ikoManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"'ikoManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-case-management-upload-step>\n }\n }\n </section>\n\n <cds-modal-footer class=\"valtimo-definition-uploader__footer\">\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.ACCESS_CONTROL\n \"\n cdsButton=\"primary\"\n [disabled]=\"\n obs.nextButtonDisabled || (obs.activeStep === UPLOAD_STEP.FILE_SELECT && !_checked)\n \"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'ikoManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.ACCESS_CONTROL\n \"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n MenuService,\n PageTitleService,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, switchMap, take, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {IKO_MANAGEMENT_TABS} from '../../constants';\nimport {IkoViewResponse} from '../../models';\nimport {IkoManagementApiService} from '../../services';\nimport {IkoManagementViewModalComponent} from './view-modal/iko-management-view-modal.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Upload16} from '@carbon/icons';\nimport {IkoManagementUploadModalComponent} from './upload-modal/iko-management-upload-modal.component';\nimport {ModalMode} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-iko-management',\n standalone: true,\n templateUrl: './iko-management.component.html',\n imports: [\n CommonModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n IkoManagementViewModalComponent,\n IkoManagementUploadModalComponent,\n TranslateModule,\n ConfirmationModalModule,\n ],\n})\nexport class IkoManagementComponent implements OnInit, OnDestroy {\n public readonly $loading = signal<boolean>(true);\n public readonly usedKeys$ = new BehaviorSubject<string[]>([]);\n public readonly apiKey$ = this.route.params.pipe(\n map(params => params?.apiKey as string),\n filter(key => !!key)\n );\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly ikoViews$ = combineLatest([this.apiKey$, this._refresh$]).pipe(\n tap(() => this.$loading.set(true)),\n switchMap(([apiKey]) =>\n this.ikoManagementApiService.getManagementIkoViews(undefined, undefined, apiKey).pipe(\n map(ikoViewPage => ikoViewPage.content),\n tap(content => {\n const keys = content?.map(item => item.key) ?? [];\n this.usedKeys$.next(keys);\n this.$loading.set(false);\n })\n )\n )\n );\n\n public readonly $modalMode = signal<ModalMode>('add');\n public readonly $viewModalOpen = signal<boolean>(false);\n public readonly $uploadModalOpen = signal<boolean>(false);\n public readonly $prefillData = signal<any | null>(null);\n public readonly $keyToDelete = signal<string | null>(null);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'ikoManagement.views.title',\n },\n ];\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onEditClick.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteClick.bind(this),\n type: 'danger',\n },\n ];\n\n constructor(\n private readonly ikoManagementApiService: IkoManagementApiService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly menuService: MenuService,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Upload16]);\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n this.setPageTitle();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public onRowClicked(event: IkoViewResponse): void {\n this.apiKey$.pipe(take(1)).subscribe(apiKey => {\n this.router.navigate(['iko-management', apiKey, event.key, IKO_MANAGEMENT_TABS[0].key]);\n });\n }\n\n public openAddModal(): void {\n this.$modalMode.set('add');\n this.$prefillData.set(null);\n this.$viewModalOpen.set(true);\n }\n\n public openUploadModal(): void {\n this.$uploadModalOpen.set(true);\n }\n\n public onEditClick(item: IkoViewResponse): void {\n this.$modalMode.set('edit');\n this.$prefillData.set(item);\n this.$viewModalOpen.set(true);\n }\n\n public onDeleteClick(item: IkoViewResponse): void {\n this.$keyToDelete.set(item.key);\n this.showDeleteModal$.next(true);\n }\n\n public onDeleteConfirm(key: string): void {\n this.ikoManagementApiService.deleteIkoView(key).subscribe(() => {\n this.menuService.reload();\n this._refresh$.next(null);\n });\n }\n\n public onViewModalClose(item: IkoViewResponse | null, ikoRepositoryConfigKey: string) {\n this.$viewModalOpen.set(false);\n this.$prefillData.set(null);\n if (!item) return;\n\n if (this.$modalMode() === 'edit') {\n this.ikoManagementApiService\n .updateIkoView(item.key, {\n ...item,\n ikoRepositoryConfigKey,\n })\n .pipe(take(1))\n .subscribe(() => {\n this.menuService.reload();\n this._refresh$.next(null);\n });\n return;\n }\n\n this.ikoManagementApiService\n .createIkoView(item.key, {...item, ikoRepositoryConfigKey})\n .pipe(take(1))\n .subscribe(() => {\n this.menuService.reload();\n this._refresh$.next(null);\n });\n }\n\n public onUploadModalClose(item: boolean) {\n this.$uploadModalOpen.set(false);\n if (!item) return;\n\n this._refresh$.next(null);\n this.menuService.reload();\n }\n\n private setPageTitle(): void {\n this.apiKey$\n .pipe(\n take(1),\n switchMap(apiKey => this.ikoManagementApiService.getIkoRepositoryConfig(apiKey))\n )\n .subscribe(repositoryConfig => {\n this.pageTitleService.setCustomPageTitle(repositoryConfig.title);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [items]=\"ikoViews$ | async\"\n [loading]=\"$loading()\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"uploadButton\"></ng-container>\n\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addViewButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addViewButton\"\n [description]=\"'ikoManagement.views.noResultsDescription' | translate\"\n [title]=\"'ikoManagement.views.noResultsTitle' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #uploadButton>\n <button [iconOnly]=\"true\" cdsButton=\"ghost\" (click)=\"openUploadModal()\">\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #addViewButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'ikoManagement.views.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-iko-management-view-modal\n *ngIf=\"apiKey$ | async as apiKey\"\n [apiKey]=\"apiKey\"\n [open]=\"$viewModalOpen()\"\n [prefillData]=\"$prefillData()\"\n [usedKeys]=\"usedKeys$ | async\"\n [modalMode]=\"$modalMode()\"\n (modalClose)=\"onViewModalClose($event, apiKey)\"\n></valtimo-iko-management-view-modal>\n\n<valtimo-iko-management-upload-modal\n [open]=\"$uploadModalOpen()\"\n (modalClose)=\"onUploadModalClose($event)\"\n></valtimo-iko-management-upload-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"ikoManagement.views.deleteContent\"\n [outputOnConfirm]=\"$keyToDelete()\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {AsyncPipe, CommonModule, NgClass, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {Component, OnInit, OnDestroy} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Search16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n PageTitleService,\n InputModule,\n DatePickerModule,\n SelectModule,\n ParagraphModule,\n InputLabelModule,\n DateTimePickerComponent,\n FormModule,\n} from '@valtimo/components';\nimport {SearchFieldBoolean, SearchFieldValues} from '@valtimo/shared';\nimport {\n ButtonModule as CarbonButtonModule,\n IconModule,\n IconService,\n InputModule as CarbonInputModule,\n LayerModule,\n TabsModule,\n TimePickerModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, take} from 'rxjs';\nimport {IkoSearchActionUser} from '../../models';\nimport {IkoApiService} from '../../services';\nimport {validateBsn} from '@valtimo/shared';\n\ntype SearchFormValue = string | boolean | string[] | null | undefined;\n\n@Component({\n selector: 'valtimo-iko-search',\n standalone: true,\n templateUrl: './iko-search.component.html',\n styleUrls: ['./iko-search.component.scss'],\n imports: [\n CommonModule,\n InputModule,\n CarbonButtonModule,\n CarbonInputModule,\n IconModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CarbonListModule,\n TabsModule,\n LayerModule,\n AsyncPipe,\n DatePickerModule,\n NgIf,\n NgClass,\n ParagraphModule,\n TimePickerModule,\n DateTimePickerComponent,\n InputLabelModule,\n InputModule,\n FormModule,\n SelectModule,\n ],\n})\nexport class IkoSearchComponent implements OnInit, OnDestroy {\n public readonly formValues: Record<string, SearchFormValue> = {};\n public readonly dropdownSelectItemsMap: Map<string, Array<any>> = new Map();\n public readonly values$ = new BehaviorSubject<any>({});\n public readonly bsnErrors: Record<string, string | null> = {};\n\n private readonly BOOLEAN_POSITIVE: SearchFieldBoolean = 'booleanPositive';\n private readonly BOOLEAN_NEGATIVE: SearchFieldBoolean = 'booleanNegative';\n\n private readonly _BOOLEAN_TYPES: Array<SearchFieldBoolean> = [\n this.BOOLEAN_POSITIVE,\n this.BOOLEAN_NEGATIVE,\n ];\n\n public readonly booleanItems$: Observable<Array<any>> = this.translateService.stream('key').pipe(\n map(() =>\n this._BOOLEAN_TYPES.map(type => ({\n id: type,\n text: this.translateService.instant(`searchFields.${type}`),\n }))\n )\n );\n\n private readonly _key$ = this.route.params.pipe(\n map(params => params?.key),\n filter(key => !!key)\n );\n\n public readonly ikoSearchActions$: Observable<IkoSearchActionUser[]> = this._key$.pipe(\n switchMap(key =>\n combineLatest([\n of(key),\n this.ikoApiService.cachedMenuItems$,\n this.ikoApiService.getIkoSearchActions(key),\n ])\n ),\n map(([key, menuItems, ikoSearchActions]) => {\n const currentMenuItem = menuItems.find(item => item.key === key);\n\n if (currentMenuItem && currentMenuItem?.title)\n this.pageTitleService.setCustomPageTitle(currentMenuItem.title, true);\n\n return ikoSearchActions;\n })\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly pageTitleService: PageTitleService,\n private readonly iconService: IconService,\n private readonly ikoApiService: IkoApiService,\n private readonly translateService: TranslateService\n ) {\n this.iconService.register(Search16);\n }\n\n public ngOnInit(): void {\n this.openDropdownSubscription();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n }\n\n public searchDisabled(params: {key: string; required: boolean; dataType?: string}[]): boolean {\n const hasMissingRequired = params.some(param => {\n if (!param.required) return false;\n return !this.hasValue(this.formValues[param.key]);\n });\n\n const hasInvalidBsn = params.some(\n param => param.dataType === 'bsn' && this.bsnErrors[param.key] !== null\n );\n\n return hasMissingRequired || hasInvalidBsn;\n }\n\n public isQueryGroup(param: any): param is {group: true; fields: any[]} {\n return param && param.group === true && Array.isArray(param.fields);\n }\n\n public searchGroup(paramKey: string, params: {key: string}[]): void {\n this.values$.pipe(take(1)).subscribe(values => {\n const queryParams: Record<string, any> = {};\n\n for (const param of params) {\n const value = values[param.key];\n\n if (value === null) continue;\n\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value.start !== null &&\n value.end !== null\n ) {\n queryParams[param.key] = JSON.stringify({\n rangeFrom: value.start,\n rangeTo: value.end,\n });\n } else {\n queryParams[param.key] = value;\n }\n }\n\n this.router.navigate([paramKey], {\n relativeTo: this.route,\n queryParams,\n });\n });\n }\n\n public singleValueChange(searchFieldKey: string, value: any, dataType: string): void {\n this.formValues[searchFieldKey] = value;\n\n this.values$.pipe(take(1)).subscribe(values => {\n if (dataType === 'bsn') {\n this.validateBsnValue(searchFieldKey, value);\n }\n\n if (value) {\n this.values$.next({\n ...values,\n [searchFieldKey]: this.getSingleValue(value, dataType),\n });\n } else if (Object.keys(values).includes(searchFieldKey)) {\n const valuesCopy = {...values};\n delete valuesCopy[searchFieldKey];\n this.values$.next(valuesCopy);\n }\n });\n }\n\n public multipleValueChange(searchFieldKey: string, value: any, dataType: string): void {\n this.formValues[searchFieldKey] = value;\n\n this.values$.pipe(take(1)).subscribe(values => {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const hasStart = value.start !== undefined && value.start !== '';\n const hasEnd = value.end !== undefined && value.end !== '';\n\n if (hasStart || hasEnd) {\n this.values$.next({\n ...values,\n [searchFieldKey]: {\n start: hasStart ? this.getSingleValue(value.start, dataType) : null,\n end: hasEnd ? this.getSingleValue(value.end, dataType) : null,\n },\n });\n return;\n }\n }\n\n if (Array.isArray(value) && value.length > 0) {\n this.values$.next({\n ...values,\n [searchFieldKey]: value.map(v =>\n this.getSingleValue(typeof v === 'object' && 'id' in v ? v.id : v, dataType)\n ),\n });\n return;\n }\n\n if (values[searchFieldKey] !== undefined) {\n const valuesCopy = {...values};\n delete valuesCopy[searchFieldKey];\n this.values$.next(valuesCopy);\n }\n });\n }\n\n private openDropdownSubscription(): void {\n combineLatest([this._key$, this.ikoSearchActions$]).subscribe(\n ([aggregateKey, searchActions]) => {\n searchActions.forEach(action => {\n action.searchFields?.forEach(field => {\n if (\n field.dataType === 'time' &&\n field.fieldType === 'single' &&\n this.formValues[field.key] === undefined\n ) {\n this.formValues[field.key] = '';\n }\n\n if (field.dataType === 'time' && field.fieldType === 'range') {\n if (this.formValues[field.key + '_start'] === undefined) {\n this.formValues[field.key + '_start'] = '';\n }\n\n if (this.formValues[field.key + '_end'] === undefined) {\n this.formValues[field.key + '_end'] = '';\n }\n }\n });\n });\n\n searchActions.forEach(action => {\n const actionKey = action.key;\n\n action.searchFields\n ?.filter(field => field.dropdownDataProvider)\n .forEach(field => {\n this.ikoApiService\n .getDropdownData(field.dropdownDataProvider!, aggregateKey, actionKey, field.key)\n .subscribe(dropdownData => {\n this.dropdownSelectItemsMap[field.key] = dropdownData\n ? Object.keys(dropdownData).map(dropdownFieldKey => ({\n id: dropdownFieldKey,\n text: (dropdownData as any)[dropdownFieldKey],\n }))\n : [];\n });\n });\n });\n }\n );\n }\n\n private getSingleValue(value: any, dataType: string): any {\n if (dataType === 'boolean') {\n if (value === this.BOOLEAN_POSITIVE) {\n return true;\n }\n if (value === this.BOOLEAN_NEGATIVE) {\n return false;\n }\n }\n\n return value;\n }\n\n private validateBsnValue(fieldKey: string, value: string | null | undefined): void {\n if (!value) {\n this.bsnErrors[fieldKey] = null;\n return;\n }\n\n const validation = validateBsn(value);\n this.bsnErrors[fieldKey] = validation.isValid ? null : validation.errorKey;\n }\n\n private hasValue(value: SearchFormValue): boolean {\n if (value === null || value === undefined) return false;\n\n if (typeof value === 'string') return value.trim().length > 0;\n\n if (typeof value === 'boolean') return true;\n\n if (Array.isArray(value)) return value.length > 0;\n\n if (typeof value === 'object') {\n const v = value as any;\n return (\n (v.start !== null && v.start !== undefined && v.start !== '') ||\n (v.end !== null && v.end !== undefined && v.end !== '')\n );\n }\n\n return 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@if (ikoSearchActions$ | async; as ikoSearchActions) {\n @if (ikoSearchActions.length === 0) {\n <valtimo-no-results [title]=\"'iko.searchFieldsNoResults' | translate\"></valtimo-no-results>\n\n } @else {\n <h4>{{ 'iko.searchVia' | translate }}</h4>\n\n <cds-tabs class=\"iko-search-tabs\" type=\"line\">\n @for (param of ikoSearchActions; track param.key ?? param.fields?.[0]?.key) {\n <cds-tab\n (keyup.enter)=\"!searchDisabled(param.searchFields) && searchGroup(param.key, param.searchFields)\"\n class=\"query-group\"\n [heading]=\"param.title\"\n [cdsLayer]=\"1\"\n >\n <div class=\"query-group__row\">\n @for (field of param.searchFields; track field.key) {\n <div\n class=\"query-group__field\"\n [ngClass]=\"{\n 'query-group__field--time': field.dataType === 'time',\n 'query-group__field--date': field.dataType === 'date',\n 'query-group__field--datetime': field.dataType === 'datetime',\n }\"\n >\n <v-input-label *ngIf=\"field.title\" [title]=\"field.title\"></v-input-label>\n\n @if (field.dataType === 'text' && field.fieldType === 'single') {\n <v-input\n [dataTestId]=\"'iko-search-field-' + field.key\"\n [name]=\"field.key\"\n [placeholder]=\"'searchFields.textPlaceholder' | translate\"\n [defaultValue]=\"formValues[field.key]\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></v-input>\n\n } @else if (field.dataType === 'text' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <v-input\n name=\"start\"\n [placeholder]=\"'searchFields.textPlaceholder' | translate\"\n ></v-input>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <v-input\n name=\"end\"\n [placeholder]=\"'searchFields.textPlaceholder' | translate\"\n ></v-input>\n </v-form>\n }\n @else if (field.dataType === 'text' && (field.fieldType === 'single-select-dropdown' || field.fieldType === 'single_select_dropdown')) {\n <v-select\n *ngIf=\"dropdownSelectItemsMap[field.key]\"\n [items]=\"dropdownSelectItemsMap[field.key]\"\n [margin]=\"false\"\n [required]=\"field.required\"\n [name]=\"field.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n [appendInline]=\"false\"\n ></v-select>\n }\n @else if (field.dataType === 'text' && (field.fieldType === 'multi-select-dropdown' || field.fieldType === 'multi_select_dropdown')) {\n <v-select\n *ngIf=\"dropdownSelectItemsMap[field.key]\"\n [items]=\"dropdownSelectItemsMap[field.key]\"\n [margin]=\"false\"\n [multiple]=\"true\"\n [required]=\"field.required\"\n [name]=\"field.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n [appendInline]=\"false\"\n ></v-select>\n }\n @else if (field.dataType === 'number' && field.fieldType === 'single') {\n <v-input\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [placeholder]=\"'searchFields.numberPlaceholder' | translate\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></v-input>\n\n } @else if (field.dataType === 'number' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <v-input\n type=\"number\"\n name=\"start\"\n [placeholder]=\"'searchFields.numberPlaceholder' | translate\"\n ></v-input>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <v-input\n type=\"number\"\n name=\"end\"\n [placeholder]=\"'searchFields.numberPlaceholder' | translate\"\n ></v-input>\n </v-form>\n }\n @else if (field.dataType === 'boolean' && field.fieldType === 'single') {\n <v-select\n *ngIf=\"booleanItems$ | async as booleanItems\"\n [items]=\"booleanItems\"\n (selectedChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></v-select>\n }\n\n @else if (field.dataType === 'time' && field.fieldType === 'single') {\n <cds-timepicker\n [placeholder]=\"'searchFields.timePlaceholder' | translate\"\n [ngModel]=\"formValues[field.key]\"\n (ngModelChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></cds-timepicker>\n\n } @else if (field.dataType === 'time' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <cds-timepicker [(ngModel)]=\"formValues[field.key + '_start']\"></cds-timepicker>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <cds-timepicker [(ngModel)]=\"formValues[field.key + '_end']\"></cds-timepicker>\n </v-form>\n }\n @else if (field.dataType === 'date' && field.fieldType === 'single') {\n <valtimo-date-time-picker\n [defaultDate]=\"formValues[field.key] ?? ''\"\n [enableTime]=\"false\"\n [showFieldLabel]=\"false\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></valtimo-date-time-picker>\n\n } @else if (field.dataType === 'date' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <valtimo-date-time-picker\n name=\"start\"\n [enableTime]=\"false\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <valtimo-date-time-picker\n name=\"end\"\n [enableTime]=\"false\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n </v-form>\n }\n @else if (field.dataType === 'datetime' && field.fieldType === 'single') {\n <valtimo-date-time-picker\n [enableTime]=\"true\"\n [showFieldLabel]=\"false\"\n (valueChange)=\"singleValueChange(field.key, $event, field.dataType)\"\n ></valtimo-date-time-picker>\n\n } @else if (field.dataType === 'datetime' && field.fieldType === 'range') {\n <v-form\n className=\"multiple-search-fields\"\n (valueChange)=\"multipleValueChange(field.key, $event, field.dataType)\"\n >\n <valtimo-date-time-picker\n name=\"start\"\n [enableTime]=\"true\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n\n <valtimo-date-time-picker\n name=\"end\"\n [enableTime]=\"true\"\n [showFieldLabel]=\"false\"\n ></valtimo-date-time-picker>\n </v-form>\n }\n </div>\n }\n </div>\n\n <button\n cdsButton=\"primary\"\n class=\"query-group__search-button\"\n [disabled]=\"searchDisabled(param.searchFields)\"\n (click)=\"searchGroup(param.key, param.searchFields)\"\n >\n {{ 'searchFields.searchButtonText' | translate }}\n <svg cdsIcon=\"search\" size=\"16\"></svg>\n </button>\n </cds-tab>\n }\n </cds-tabs>\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\n\nimport {IkoDetailsComponent} from './components/iko-details/iko-details.component';\nimport {IkoListComponent} from './components/iko-list/iko-list.component';\nimport {IkoManagementApiComponent} from './components/iko-management-api/iko-management-api.component';\nimport {IkoManagementSearchFieldsComponent} from './components/iko-management-details/components/search-fields/iko-management-search-fields.component';\nimport {IkoManagementWidgetsComponent} from './components/iko-management-details/components/widgets/iko-management-widgets.component';\nimport {IkoManagementDetailsComponent} from './components/iko-management-details/iko-management-details.component';\nimport {IkoManagementComponent} from './components/iko-management/iko-management.component';\nimport {IkoSearchComponent} from './components/iko-search/iko-search.component';\n\nconst routes: Routes = [\n {\n path: 'iko/:key',\n component: IkoSearchComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n customPageTitle: true,\n },\n },\n {\n path: 'iko/:key/:searchKey',\n component: IkoListComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'interface.results',\n },\n },\n {\n path: 'iko/:key/:searchKey/details/:id',\n component: IkoDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'interface.details',\n customPageTitle: true,\n },\n },\n {\n path: 'iko-management',\n component: IkoManagementApiComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey',\n component: IkoManagementComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey',\n component: IkoManagementDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n customPageTitle: true,\n title: 'IKO Details',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey/search-action/:actionKey',\n component: IkoManagementSearchFieldsComponent,\n canActivate: [AuthGuardService],\n data: {\n customPageTitle: true,\n title: 'IKO Search action details',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey/widget-details/:widgetTabKey',\n component: IkoManagementWidgetsComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'IKO Widget details',\n roles: [ROLE_ADMIN],\n },\n },\n {\n path: 'iko-management/:apiKey',\n component: IkoManagementComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Iko',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n {\n path: 'iko-management/:apiKey/:key/:tabKey',\n component: IkoManagementDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n customPageTitle: true,\n title: 'IKO Details',\n roles: [ROLE_ADMIN],\n },\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class IkoRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 {CommonModule} from '@angular/common';\nimport {IKO_TOKEN} from '@valtimo/shared';\nimport {IkoRoutingModule} from './iko-routing.module';\nimport {IkoSearchComponent} from './components/iko-search/iko-search.component';\nimport {IkoMenuService} from './services/iko-menu.service';\nimport {MenuService} from '@valtimo/components';\n\n@NgModule({\n imports: [CommonModule, IkoRoutingModule, IkoSearchComponent],\n providers: [\n IkoMenuService,\n {\n provide: IKO_TOKEN,\n useValue: true,\n },\n ],\n})\nexport class IkoModule {\n constructor(\n private readonly ikoMenuService: IkoMenuService,\n private readonly menuService: MenuService\n ) {\n this.menuService.registerAppendMenuItemsFunction(this.ikoMenuService.appendIkoMenuItems);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of iko\n */\n\nexport * from './lib/iko.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.IkoApiService","i2","i3","map","i1.IkoTabService","i2.IkoApiService","i2.IkoTabService","i4","i5","i2.IkoManagementApiService","i7","i1.IkoManagementApiService","i6","take","i3.IkoManagementApiService","i4.IkoApiService","InputModule","CarbonButtonModule","CarbonInputModule","i1.IkoMenuService"],"mappings":"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"}