@valtimo/iko 13.48.0 → 13.49.1

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.
Files changed (25) hide show
  1. package/fesm2022/valtimo-iko.mjs +78 -22
  2. package/fesm2022/valtimo-iko.mjs.map +1 -1
  3. package/lib/components/iko-list/iko-list.component.d.ts +1 -0
  4. package/lib/components/iko-list/iko-list.component.d.ts.map +1 -1
  5. package/lib/components/tabs/iko-widget/iko-widget.component.d.ts +3 -0
  6. package/lib/components/tabs/iko-widget/iko-widget.component.d.ts.map +1 -1
  7. package/lib/components/widget-collection/iko-widget-collection.component.d.ts +1 -0
  8. package/lib/components/widget-collection/iko-widget-collection.component.d.ts.map +1 -1
  9. package/lib/components/widget-custom/iko-widget-custom.component.d.ts +1 -1
  10. package/lib/components/widget-custom/iko-widget-custom.component.d.ts.map +1 -1
  11. package/lib/components/widget-field/iko-widget-field.component.d.ts +1 -1
  12. package/lib/components/widget-field/iko-widget-field.component.d.ts.map +1 -1
  13. package/lib/components/widget-formio/iko-widget-formio.component.d.ts +1 -1
  14. package/lib/components/widget-formio/iko-widget-formio.component.d.ts.map +1 -1
  15. package/lib/components/widget-interactive-table/iko-widget-interactive-table.component.d.ts +1 -0
  16. package/lib/components/widget-interactive-table/iko-widget-interactive-table.component.d.ts.map +1 -1
  17. package/lib/components/widget-map/iko-widget-map.component.d.ts +1 -1
  18. package/lib/components/widget-map/iko-widget-map.component.d.ts.map +1 -1
  19. package/lib/components/widget-metroline/iko-widget-metroline.component.d.ts +1 -1
  20. package/lib/components/widget-metroline/iko-widget-metroline.component.d.ts.map +1 -1
  21. package/lib/components/widget-table/iko-widget-table.component.d.ts +1 -0
  22. package/lib/components/widget-table/iko-widget-table.component.d.ts.map +1 -1
  23. package/lib/services/iko-api.service.d.ts +1 -0
  24. package/lib/services/iko-api.service.d.ts.map +1 -1
  25. package/package.json +1 -1
@@ -11,11 +11,11 @@ import * as i2$1 from '@valtimo/components';
11
11
  import { CarbonListModule, FormIoModule, FitPageDirective, RenderInPageHeaderDirective, SelectModule, CARBON_CONSTANTS, ValtimoCdsModalDirective, AutoKeyInputComponent, ViewType, ConfirmationModalModule, runAfterCarbonModalClosed, CarbonMultiInputModule, InputLabelModule, WidgetLayout, WIDGET_LAYOUT_VALUES, WIDGET_LAYOUT_TRANSLATION_KEYS, WidgetLayoutInfoComponent, ValuePathSelectorPrefix, InputModule as InputModule$1, DatePickerModule, ParagraphModule, DateTimePickerComponent, FormModule, registerCustomFormioComponent } from '@valtimo/components';
12
12
  import * as i6 from 'carbon-components-angular';
13
13
  import { InputModule, PaginationModule, TilesModule, ButtonModule, ModalModule, TabsModule, IconModule, LayerModule, TooltipModule, LoadingModule, ToggleModule, NumberModule, DropdownModule, ProgressBarModule, CheckboxModule, FileUploaderModule, NotificationModule, TimePickerModule } from 'carbon-components-angular';
14
- import { BehaviorSubject, filter, of, switchMap, combineLatest, distinctUntilChanged, tap, map as map$1, ReplaySubject, take, Subscription, delay, startWith, catchError } from 'rxjs';
15
- import * as i1$2 from '@valtimo/layout';
16
- import { WidgetCollectionComponent, WidgetCustomComponent, WidgetFieldComponent, WidgetFormioComponent, WidgetInteractiveTableComponent, WidgetTableComponent, WidgetMapComponent, WidgetMetrolineComponent, WidgetType, WidgetContainerComponent, WidgetDataGroupService, ManagementWidgetDetailsComponent, WIDGET_MANAGEMENT_SERVICE, WidgetManagementComponent } from '@valtimo/layout';
14
+ import { BehaviorSubject, filter, of, switchMap, startWith, combineLatest, distinctUntilChanged, tap, map as map$1, catchError, ReplaySubject, take, Subscription, delay } from 'rxjs';
17
15
  import * as i5 from '@ngx-translate/core';
18
16
  import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
17
+ import * as i1$2 from '@valtimo/layout';
18
+ import { catchWidgetDataError, WidgetCollectionComponent, groupWidgetData, WidgetCustomComponent, WidgetFieldComponent, WidgetFormioComponent, WidgetInteractiveTableComponent, WidgetTableComponent, WidgetMapComponent, WidgetMetrolineComponent, WidgetType, WidgetContainerComponent, WidgetDataGroupService, ManagementWidgetDetailsComponent, WIDGET_MANAGEMENT_SERVICE, WidgetManagementComponent } from '@valtimo/layout';
19
19
  import * as i1 from '@angular/common/http';
20
20
  import { HttpHeaders, HttpParams } from '@angular/common/http';
21
21
  import { map, take as take$1 } from 'rxjs/operators';
@@ -56,6 +56,7 @@ class IkoApiService extends BaseApiService {
56
56
  this.configService = configService;
57
57
  this.globalNotificationService = globalNotificationService;
58
58
  this.router = router;
59
+ this.WIDGET_DATA_SKIP_TOAST_STATUSES = '500,502,503,504';
59
60
  this._cachedMenuItems$ = new BehaviorSubject([]);
60
61
  }
61
62
  getIkoViews(key, title, page = 0, size = 10000, sort = 'title,asc') {
@@ -79,14 +80,19 @@ class IkoApiService extends BaseApiService {
79
80
  return this.httpClient.get(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget`));
80
81
  }
81
82
  getIkoWidgetData(ikoViewKey, tabKey, widgetId, id, queryParams) {
82
- return this.httpClient.get(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget/${widgetId}/data?id=${id}${!queryParams ? '' : '&' + queryParams.toString()}`));
83
+ return this.httpClient.get(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget/${widgetId}/data?id=${id}${!queryParams ? '' : '&' + queryParams.toString()}`), {
84
+ headers: new HttpHeaders().set(InterceptorSkip, this.WIDGET_DATA_SKIP_TOAST_STATUSES),
85
+ });
83
86
  }
84
87
  /** Every widget in the group in one request. Paging and filtering use getIkoWidgetData. */
85
88
  getIkoWidgetDataGroup(ikoViewKey, tabKey, group, id) {
86
89
  const params = new HttpParams().set('group', group).set('id', id);
87
90
  return this.httpClient.get(this.getApiUrl(`/v1/iko-view/${ikoViewKey}/tab/${tabKey}/widget/data?${params.toString()}`),
88
- // An unrecognised group falls back to per-widget requests — no global error toast
89
- { headers: new HttpHeaders().set(InterceptorSkip, '404') });
91
+ // An unrecognised group falls back to per-widget requests, and the widgets of a group that
92
+ // could not be filled say so themselves — neither warrants a global error toast
93
+ {
94
+ headers: new HttpHeaders().set(InterceptorSkip, `404,${this.WIDGET_DATA_SKIP_TOAST_STATUSES}`),
95
+ });
90
96
  }
91
97
  searchIkoSearchAction(ikoKey, paramKey, filters) {
92
98
  return this.httpClient.post(this.getApiUrl(`/v1/iko-view/${ikoKey}/search-action/${paramKey}/search`), filters);
@@ -575,13 +581,17 @@ class IkoWidgetCollectionComponent {
575
581
  this._widgetParams$ = new BehaviorSubject(null);
576
582
  this.widgetConfiguration$ = new BehaviorSubject(null);
577
583
  this._queryParams$ = new BehaviorSubject(new HttpParams());
584
+ this._reloadWidgetData$ = this.widgetLayoutService.widgetDataReload$.pipe(filter(uuid => uuid === this.widgetUuid), startWith(null));
578
585
  this.widgetData$ = combineLatest([
579
586
  this.widgetConfiguration$,
580
587
  this._widgetParams$,
581
588
  this._queryParams$.pipe(distinctUntilChanged((prevParams, currParams) => prevParams.toString() === currParams.toString())),
589
+ this._reloadWidgetData$,
582
590
  ]).pipe(switchMap(([widgetConfiguration, widgetParams, queryParams]) => !widgetParams || !widgetConfiguration
583
591
  ? of(null)
584
- : this.ikoApiService.getIkoWidgetData(widgetParams.ikoViewKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId, queryParams)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
592
+ : this.ikoApiService
593
+ .getIkoWidgetData(widgetParams.ikoViewKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId, queryParams)
594
+ .pipe(catchWidgetDataError(this.widgetLayoutService, () => this.widgetUuid))), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
585
595
  }
586
596
  onPaginationEvent(event) {
587
597
  this._queryParams$.next(new HttpParams()
@@ -655,7 +665,9 @@ class IkoWidgetCustomComponent {
655
665
  this.widgetDataGroupService = widgetDataGroupService;
656
666
  this.widgetLayoutService = widgetLayoutService;
657
667
  this._widgetConfigSubject$ = new BehaviorSubject(null);
658
- this.widgetData$ = this._widgetConfigSubject$.pipe(switchMap(widgetConfiguration => !widgetConfiguration ? of(null) : this.widgetDataGroupService.dataFor(widgetConfiguration.key)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
668
+ this.widgetData$ = this._widgetConfigSubject$.pipe(switchMap(widgetConfiguration => !widgetConfiguration
669
+ ? of(null)
670
+ : groupWidgetData(this.widgetDataGroupService, this.widgetLayoutService, widgetConfiguration.key, () => this.widgetUuid)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
659
671
  }
660
672
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetCustomComponent, deps: [{ token: i1$2.WidgetDataGroupService }, { token: i1$2.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
661
673
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoWidgetCustomComponent, isStandalone: true, selector: "valtimo-iko-widget-custom", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: WidgetCustomComponent, selector: "valtimo-widget-custom", inputs: ["widgetConfiguration", "widgetData", "widgetUuid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -710,7 +722,9 @@ class IkoWidgetFieldComponent {
710
722
  this.widgetDataGroupService = widgetDataGroupService;
711
723
  this.widgetLayoutService = widgetLayoutService;
712
724
  this.widgetConfiguration$ = new BehaviorSubject(null);
713
- this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration ? of(null) : this.widgetDataGroupService.dataFor(widgetConfiguration.key)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
725
+ this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration
726
+ ? of(null)
727
+ : groupWidgetData(this.widgetDataGroupService, this.widgetLayoutService, widgetConfiguration.key, () => this.widgetUuid)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
714
728
  }
715
729
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetFieldComponent, deps: [{ token: i1$2.WidgetDataGroupService }, { token: i1$2.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
716
730
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoWidgetFieldComponent, isStandalone: true, selector: "valtimo-iko-widget-field", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleFieldsEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -776,7 +790,9 @@ class IkoWidgetFormioComponent {
776
790
  this.widgetDataGroupService = widgetDataGroupService;
777
791
  this.widgetLayoutService = widgetLayoutService;
778
792
  this._widgetConfigurationSubject$ = new BehaviorSubject(null);
779
- this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration ? of(null) : this.widgetDataGroupService.dataFor(widgetConfiguration.key)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
793
+ this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration
794
+ ? of(null)
795
+ : groupWidgetData(this.widgetDataGroupService, this.widgetLayoutService, widgetConfiguration.key, () => this.widgetUuid)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
780
796
  }
781
797
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetFormioComponent, deps: [{ token: i1$2.WidgetDataGroupService }, { token: i1$2.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
782
798
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoWidgetFormioComponent, isStandalone: true, selector: "valtimo-iko-widget-formio", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: FormIoModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: WidgetFormioComponent, selector: "valtimo-widget-formio", inputs: ["documentId", "widgetConfiguration", "widgetData", "widgetUuid", "refreshForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -839,14 +855,18 @@ class IkoWidgetInteractiveTableComponent {
839
855
  this.widgetConfiguration$ = new BehaviorSubject(null);
840
856
  this._widgetParams$ = new BehaviorSubject(null);
841
857
  this._queryParams$ = new BehaviorSubject(new HttpParams());
858
+ this._reloadWidgetData$ = this.widgetLayoutService.widgetDataReload$.pipe(filter(uuid => uuid === this.widgetUuid), startWith(null));
842
859
  this.widgetData$ = combineLatest([
843
860
  this.widgetConfiguration$,
844
861
  this._widgetParams$,
845
862
  this._queryParams$.pipe(distinctUntilChanged((prevParams, currParams) => prevParams.toString() === currParams.toString())),
846
863
  this.listService.forceRefresh$,
864
+ this._reloadWidgetData$,
847
865
  ]).pipe(switchMap(([widgetConfiguration, widgetParams, queryParams]) => !widgetParams || !widgetConfiguration
848
866
  ? of(null)
849
- : this.ikoApiService.getIkoWidgetData(widgetParams.ikoViewKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId, queryParams)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
867
+ : this.ikoApiService
868
+ .getIkoWidgetData(widgetParams.ikoViewKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId, queryParams)
869
+ .pipe(catchWidgetDataError(this.widgetLayoutService, () => this.widgetUuid))), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
850
870
  }
851
871
  onQueryParamsEvent(params) {
852
872
  this._queryParams$.next(params);
@@ -937,13 +957,17 @@ class IkoWidgetTableComponent {
937
957
  this.widgetConfiguration$ = new BehaviorSubject(null);
938
958
  this._widgetParams$ = new BehaviorSubject(null);
939
959
  this._queryParams$ = new BehaviorSubject(new HttpParams());
960
+ this._reloadWidgetData$ = this.widgetLayoutService.widgetDataReload$.pipe(filter(uuid => uuid === this.widgetUuid), startWith(null));
940
961
  this.widgetData$ = combineLatest([
941
962
  this.widgetConfiguration$,
942
963
  this._widgetParams$,
943
964
  this._queryParams$.pipe(distinctUntilChanged((prevParams, currParams) => prevParams.toString() === currParams.toString())),
965
+ this._reloadWidgetData$,
944
966
  ]).pipe(switchMap(([widgetConfiguration, widgetParams, queryParams]) => !widgetParams || !widgetConfiguration
945
967
  ? of(null)
946
- : this.ikoApiService.getIkoWidgetData(widgetParams.ikoViewKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId, queryParams)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
968
+ : this.ikoApiService
969
+ .getIkoWidgetData(widgetParams.ikoViewKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId, queryParams)
970
+ .pipe(catchWidgetDataError(this.widgetLayoutService, () => this.widgetUuid))), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
947
971
  }
948
972
  onPaginationEvent(event) {
949
973
  this._queryParams$.next(new HttpParams()
@@ -1014,7 +1038,9 @@ class IkoWidgetMapComponent {
1014
1038
  this.widgetDataGroupService = widgetDataGroupService;
1015
1039
  this.widgetLayoutService = widgetLayoutService;
1016
1040
  this.widgetConfiguration$ = new BehaviorSubject(null);
1017
- this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration ? of(null) : this.widgetDataGroupService.dataFor(widgetConfiguration.key)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
1041
+ this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration
1042
+ ? of(null)
1043
+ : groupWidgetData(this.widgetDataGroupService, this.widgetLayoutService, widgetConfiguration.key, () => this.widgetUuid)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
1018
1044
  }
1019
1045
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetMapComponent, deps: [{ token: i1$2.WidgetDataGroupService }, { token: i1$2.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
1020
1046
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoWidgetMapComponent, isStandalone: true, selector: "valtimo-iko-widget-map", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: WidgetMapComponent, selector: "valtimo-widget-map", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleMapEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -1076,7 +1102,9 @@ class IkoWidgetMetrolineComponent {
1076
1102
  this.widgetDataGroupService = widgetDataGroupService;
1077
1103
  this.widgetLayoutService = widgetLayoutService;
1078
1104
  this.widgetConfiguration$ = new BehaviorSubject(null);
1079
- this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration ? of(null) : this.widgetDataGroupService.dataFor(widgetConfiguration.key)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
1105
+ this.widgetData$ = this.widgetConfiguration$.pipe(switchMap(widgetConfiguration => !widgetConfiguration
1106
+ ? of(null)
1107
+ : groupWidgetData(this.widgetDataGroupService, this.widgetLayoutService, widgetConfiguration.key, () => this.widgetUuid)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
1080
1108
  }
1081
1109
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetMetrolineComponent, deps: [{ token: i1$2.WidgetDataGroupService }, { token: i1$2.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
1082
1110
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoWidgetMetrolineComponent, isStandalone: true, selector: "valtimo-iko-widget-metroline", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-metroline\n [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetData]=\"widgetData$ | async\"\n>\n</valtimo-widget-metroline>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: WidgetMetrolineComponent, selector: "valtimo-widget-metroline", inputs: ["widgetConfiguration", "widgetData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -1137,13 +1165,24 @@ class IkoWidgetComponent {
1137
1165
  this.entryId$ = this.ikoTabService.entryId$;
1138
1166
  this._key$ = new BehaviorSubject('');
1139
1167
  this.loading$ = new BehaviorSubject(true);
1168
+ this.widgetsError$ = new BehaviorSubject(false);
1169
+ this._reloadWidgets$ = new BehaviorSubject(null);
1140
1170
  this._context$ = combineLatest([
1141
1171
  this.ikoViewKey$,
1142
1172
  this.key$,
1143
1173
  this.entryId$,
1144
1174
  ]).pipe(distinctUntilChanged(([viewA, tabA, idA], [viewB, tabB, idB]) => viewA === viewB && tabA === tabB && idA === idB));
1145
1175
  // Source and widget list are set before the container renders, so widgets find their group
1146
- this.widgets$ = this._context$.pipe(tap(([ikoViewKey, tabKey, entryId]) => this.setDataSource(ikoViewKey, tabKey, entryId)), switchMap(([ikoViewKey, tabKey]) => this.ikoApiService.getIkoWidget(ikoViewKey, tabKey)), tap((widgets) => this.widgetDataGroupService.setWidgets(widgets)));
1176
+ this.widgets$ = combineLatest([
1177
+ this._context$,
1178
+ this._reloadWidgets$,
1179
+ ]).pipe(map$1(([context]) => context), tap(([ikoViewKey, tabKey, entryId]) => {
1180
+ this.widgetsError$.next(false);
1181
+ this.setDataSource(ikoViewKey, tabKey, entryId);
1182
+ }), switchMap(([ikoViewKey, tabKey]) => this.ikoApiService.getIkoWidget(ikoViewKey, tabKey).pipe(catchError(() => {
1183
+ this.widgetsError$.next(true);
1184
+ return of([]);
1185
+ }))), tap((widgets) => this.widgetDataGroupService.setWidgets(widgets)));
1147
1186
  this.widgetLayout$ = combineLatest([
1148
1187
  this.ikoViewKey$,
1149
1188
  this.key$,
@@ -1169,6 +1208,9 @@ class IkoWidgetComponent {
1169
1208
  [WidgetType.METROLINE]: IkoWidgetMetrolineComponent,
1170
1209
  };
1171
1210
  }
1211
+ onRetryWidgets() {
1212
+ this._reloadWidgets$.next(null);
1213
+ }
1172
1214
  setDataSource(ikoViewKey, tabKey, entryId) {
1173
1215
  this.widgetDataGroupService.setSource({
1174
1216
  fetchGroup: (group) => this.ikoApiService.getIkoWidgetDataGroup(ikoViewKey, tabKey, group, entryId),
@@ -1176,11 +1218,18 @@ class IkoWidgetComponent {
1176
1218
  });
1177
1219
  }
1178
1220
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetComponent, deps: [{ token: IkoTabService }, { token: IkoApiService }, { token: i1$2.WidgetDataGroupService }, { token: i1$1.NGXLogger }], target: i0.ɵɵFactoryTarget.Component }); }
1179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoWidgetComponent, isStandalone: true, selector: "ng-component", inputs: { key: "key" }, providers: [WidgetDataGroupService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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 [disableOverflow]=\"true\"\n class=\"iko-widget-container\"\n [widgets]=\"widgets$ | async\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetParams]=\"widgetParams$ | async\"\n [widgetLayout]=\"widgetLayout$ | async\"\n>\n</valtimo-widget-container>\n", styles: [":host ::ng-deep .widgets-container{overflow:hidden}.iko-widget-container{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: WidgetContainerComponent, selector: "valtimo-widget-container", inputs: ["widgets", "widgetLayout", "widgetComponentMap", "widgetParams"] }, { kind: "directive", type: FitPageDirective, selector: "[fitPage]", inputs: ["spaceAdjustment", "fitPageDisabled", "disableOverflow", "bottomMargin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: IkoWidgetComponent, isStandalone: true, selector: "ng-component", inputs: { key: "key" }, providers: [WidgetDataGroupService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n@let hasWidgetsError = widgetsError$ | async;\n\n@if (hasWidgetsError) {\n <valtimo-no-results\n [action]=\"retryWidgets\"\n [title]=\"'widgets.dataError.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n ></valtimo-no-results>\n\n <ng-template #retryWidgets>\n <button cdsButton=\"tertiary\" size=\"sm\" (click)=\"onRetryWidgets()\">\n {{ 'widgets.dataError.retry' | translate }}\n </button>\n </ng-template>\n}\n\n<valtimo-widget-container\n fitPage\n [disableOverflow]=\"true\"\n class=\"iko-widget-container\"\n [class.iko-widget-container--hidden]=\"hasWidgetsError\"\n [widgets]=\"widgets$ | async\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetParams]=\"widgetParams$ | async\"\n [widgetLayout]=\"widgetLayout$ | async\"\n>\n</valtimo-widget-container>\n", styles: [":host ::ng-deep .widgets-container{overflow:hidden}.iko-widget-container{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto}.iko-widget-container--hidden{display:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "directive", type: FitPageDirective, selector: "[fitPage]", inputs: ["spaceAdjustment", "fitPageDisabled", "disableOverflow", "bottomMargin"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: WidgetContainerComponent, selector: "valtimo-widget-container", inputs: ["widgets", "widgetLayout", "widgetComponentMap", "widgetParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1180
1222
  }
1181
1223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoWidgetComponent, decorators: [{
1182
1224
  type: Component,
1183
- args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, WidgetContainerComponent, FitPageDirective], providers: [WidgetDataGroupService], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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 [disableOverflow]=\"true\"\n class=\"iko-widget-container\"\n [widgets]=\"widgets$ | async\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetParams]=\"widgetParams$ | async\"\n [widgetLayout]=\"widgetLayout$ | async\"\n>\n</valtimo-widget-container>\n", styles: [":host ::ng-deep .widgets-container{overflow:hidden}.iko-widget-container{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
1225
+ args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
1226
+ ButtonModule,
1227
+ CarbonListModule,
1228
+ CommonModule,
1229
+ FitPageDirective,
1230
+ TranslateModule,
1231
+ WidgetContainerComponent,
1232
+ ], providers: [WidgetDataGroupService], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n@let hasWidgetsError = widgetsError$ | async;\n\n@if (hasWidgetsError) {\n <valtimo-no-results\n [action]=\"retryWidgets\"\n [title]=\"'widgets.dataError.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n ></valtimo-no-results>\n\n <ng-template #retryWidgets>\n <button cdsButton=\"tertiary\" size=\"sm\" (click)=\"onRetryWidgets()\">\n {{ 'widgets.dataError.retry' | translate }}\n </button>\n </ng-template>\n}\n\n<valtimo-widget-container\n fitPage\n [disableOverflow]=\"true\"\n class=\"iko-widget-container\"\n [class.iko-widget-container--hidden]=\"hasWidgetsError\"\n [widgets]=\"widgets$ | async\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetParams]=\"widgetParams$ | async\"\n [widgetLayout]=\"widgetLayout$ | async\"\n>\n</valtimo-widget-container>\n", styles: [":host ::ng-deep .widgets-container{overflow:hidden}.iko-widget-container{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto}.iko-widget-container--hidden{display:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
1184
1233
  }], ctorParameters: () => [{ type: IkoTabService }, { type: IkoApiService }, { type: i1$2.WidgetDataGroupService }, { type: i1$1.NGXLogger }], propDecorators: { key: [{
1185
1234
  type: Input
1186
1235
  }] } });
@@ -1307,6 +1356,7 @@ class IkoListComponent {
1307
1356
  this.router = router;
1308
1357
  this.rowSelectedEvent = new EventEmitter();
1309
1358
  this.loading$ = new BehaviorSubject(true);
1359
+ this.searchError$ = new BehaviorSubject(false);
1310
1360
  this._searchParams$ = new ReplaySubject(1);
1311
1361
  this.listConfig$ = this._searchParams$.pipe(switchMap(inputParams => {
1312
1362
  if (inputParams && this.ikoViewKey) {
@@ -1329,8 +1379,14 @@ class IkoListComponent {
1329
1379
  });
1330
1380
  return { ikoViewKey: params.key, searchKey: params.searchKey, filters: queryParams };
1331
1381
  }));
1332
- }), tap(() => this.loading$.next(true)), switchMap(({ ikoViewKey, searchKey, filters }) => this.ikoApiService.searchIkoSearchAction(ikoViewKey, searchKey, { filters })), map$1(res => ({
1333
- fields: res.headers.reduce((acc, curr) => [
1382
+ }), tap(() => {
1383
+ this.loading$.next(true);
1384
+ this.searchError$.next(false);
1385
+ }), switchMap(({ ikoViewKey, searchKey, filters }) => this.ikoApiService.searchIkoSearchAction(ikoViewKey, searchKey, { filters }).pipe(catchError(() => {
1386
+ this.searchError$.next(true);
1387
+ return of(null);
1388
+ }))), map$1(res => ({
1389
+ fields: (res?.headers ?? []).reduce((acc, curr) => [
1334
1390
  ...acc,
1335
1391
  ...(curr.displayType.type === 'hidden'
1336
1392
  ? []
@@ -1345,7 +1401,7 @@ class IkoListComponent {
1345
1401
  },
1346
1402
  ]),
1347
1403
  ], []),
1348
- items: res.rows.content.map(stuff => stuff.items.reduce((acc, curr) => ({ ...acc, [curr.key]: curr.value }), {})),
1404
+ items: (res?.rows?.content ?? []).map(stuff => stuff.items.reduce((acc, curr) => ({ ...acc, [curr.key]: curr.value }), {})),
1349
1405
  })), tap(() => this.loading$.next(false)));
1350
1406
  combineLatest([this.route.params, this.route.queryParams])
1351
1407
  .pipe(takeUntilDestroyed())
@@ -1373,11 +1429,11 @@ class IkoListComponent {
1373
1429
  }
1374
1430
  }
1375
1431
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoListComponent, deps: [{ token: i2$1.BreadcrumbService }, { token: IkoApiService }, { token: i3.ActivatedRoute }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1376
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: IkoListComponent, isStandalone: true, selector: "valtimo-iko-list", inputs: { ikoViewKey: "ikoViewKey", searchParams: "searchParams" }, outputs: { rowSelectedEvent: "rowSelectedEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
1432
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: IkoListComponent, isStandalone: true, selector: "valtimo-iko-list", inputs: { ikoViewKey: "ikoViewKey", searchParams: "searchParams" }, outputs: { rowSelectedEvent: "rowSelectedEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@let hasSearchError = searchError$ | async;\n\n@if (hasSearchError) {\n <valtimo-no-results\n title=\"{{ 'widgets.dataError.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n ></valtimo-no-results>\n}\n\n<valtimo-carbon-list\n *ngIf=\"{\n listConfig: listConfig$ | async,\n loading: loading$ | async,\n } as obs\"\n [class.iko-list--hidden]=\"hasSearchError\"\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", styles: [".iko-list--hidden{display:none}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
1377
1433
  }
1378
1434
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IkoListComponent, decorators: [{
1379
1435
  type: Component,
1380
- args: [{ selector: 'valtimo-iko-list', standalone: true, imports: [CommonModule, CarbonListModule, TranslatePipe], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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" }]
1436
+ args: [{ selector: 'valtimo-iko-list', standalone: true, imports: [CommonModule, CarbonListModule, TranslatePipe], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@let hasSearchError = searchError$ | async;\n\n@if (hasSearchError) {\n <valtimo-no-results\n title=\"{{ 'widgets.dataError.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n ></valtimo-no-results>\n}\n\n<valtimo-carbon-list\n *ngIf=\"{\n listConfig: listConfig$ | async,\n loading: loading$ | async,\n } as obs\"\n [class.iko-list--hidden]=\"hasSearchError\"\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", styles: [".iko-list--hidden{display:none}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
1381
1437
  }], ctorParameters: () => [{ type: i2$1.BreadcrumbService }, { type: IkoApiService }, { type: i3.ActivatedRoute }, { type: i3.Router }], propDecorators: { ikoViewKey: [{
1382
1438
  type: Input
1383
1439
  }], searchParams: [{