@valtimo/iko 13.2.1 → 13.4.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.
- package/fesm2022/valtimo-iko.mjs +977 -433
- package/fesm2022/valtimo-iko.mjs.map +1 -1
- package/lib/components/iko-management/iko-management.component.d.ts +20 -10
- package/lib/components/iko-management/iko-management.component.d.ts.map +1 -1
- package/lib/components/iko-management/view-modal/iko-management-view-modal.component.d.ts +32 -0
- package/lib/components/iko-management/view-modal/iko-management-view-modal.component.d.ts.map +1 -0
- package/lib/components/iko-management-api/iko-management-api.component.d.ts +12 -19
- package/lib/components/iko-management-api/iko-management-api.component.d.ts.map +1 -1
- package/lib/components/iko-management-api/repository-modal/iko-management-repository-modal.component.d.ts +39 -0
- package/lib/components/iko-management-api/repository-modal/iko-management-repository-modal.component.d.ts.map +1 -0
- package/lib/components/iko-management-details/components/search-actions/iko-management-search-actions.component.d.ts +1 -0
- package/lib/components/iko-management-details/components/search-actions/iko-management-search-actions.component.d.ts.map +1 -1
- package/lib/components/iko-management-details/components/search-actions/search-action-modal/search-action-modal.component.d.ts +13 -6
- package/lib/components/iko-management-details/components/search-actions/search-action-modal/search-action-modal.component.d.ts.map +1 -1
- package/lib/components/iko-management-details/components/tab-detail-modal/iko-management-tab-details-modal.component.d.ts +4 -3
- package/lib/components/iko-management-details/components/tab-detail-modal/iko-management-tab-details-modal.component.d.ts.map +1 -1
- package/lib/components/iko-management-details/components/tabs/iko-management-tabs.component.d.ts.map +1 -1
- package/lib/components/iko-management-details/components/widgets/iko-management-widgets.component.d.ts.map +1 -1
- package/lib/components/iko-management-properties/iko-management-properties.component.d.ts +26 -0
- package/lib/components/iko-management-properties/iko-management-properties.component.d.ts.map +1 -0
- package/lib/components/tabs/iko-widget/iko-widget.component.d.ts.map +1 -1
- package/lib/components/widget-collection/iko-widget-collection.component.d.ts +2 -1
- package/lib/components/widget-collection/iko-widget-collection.component.d.ts.map +1 -1
- package/lib/components/widget-field/iko-widget-field.component.d.ts +2 -1
- package/lib/components/widget-field/iko-widget-field.component.d.ts.map +1 -1
- package/lib/components/widget-formio/iko-widget-formio.component.d.ts.map +1 -1
- package/lib/components/widget-interactive-table/iko-widget-interactive-table.component.d.ts +31 -0
- package/lib/components/widget-interactive-table/iko-widget-interactive-table.component.d.ts.map +1 -0
- package/lib/components/widget-interactive-table/index.d.ts +2 -0
- package/lib/components/widget-interactive-table/index.d.ts.map +1 -0
- package/lib/components/widget-table/iko-widget-table.component.d.ts +2 -1
- package/lib/components/widget-table/iko-widget-table.component.d.ts.map +1 -1
- package/lib/iko-routing.module.d.ts.map +1 -1
- package/lib/models/iko-management.model.d.ts +5 -3
- package/lib/models/iko-management.model.d.ts.map +1 -1
- package/lib/services/iko-api.service.d.ts +10 -2
- package/lib/services/iko-api.service.d.ts.map +1 -1
- package/lib/services/iko-management-api.service.d.ts +2 -0
- package/lib/services/iko-management-api.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/lib/mock/iko.mock.d.ts +0 -4
- package/lib/mock/iko.mock.d.ts.map +0 -1
- package/lib/mock/index.d.ts +0 -2
- package/lib/mock/index.d.ts.map +0 -1
package/fesm2022/valtimo-iko.mjs
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Input, ViewEncapsulation, ChangeDetectionStrategy, Component,
|
|
2
|
+
import { Injectable, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, ViewChild, ViewContainerRef, signal, computed, effect, EventEmitter, Output, Inject, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i2 from '@valtimo/shared';
|
|
6
6
|
import { BaseApiService, getDisplayTypeParametersView, ROLE_ADMIN, IKO_TOKEN } from '@valtimo/shared';
|
|
7
|
-
import * as i3 from '@angular/router';
|
|
7
|
+
import * as i3$1 from '@angular/router';
|
|
8
8
|
import { RouterModule } from '@angular/router';
|
|
9
9
|
import { AuthGuardService } from '@valtimo/security';
|
|
10
10
|
import * as i1$2 from '@valtimo/components';
|
|
11
|
-
import { CarbonListModule,
|
|
11
|
+
import { CarbonListModule, FormIoModule, RenderInPageHeaderDirective, SelectModule, CARBON_CONSTANTS, ValtimoCdsModalDirective, ConfirmationModalModule, ViewType, ValuePathSelectorPrefix, InputLabelModule, runAfterCarbonModalClosed, CarbonMultiInputModule, AutoKeyInputComponent } from '@valtimo/components';
|
|
12
12
|
import * as i6 from 'carbon-components-angular';
|
|
13
|
-
import { InputModule, PaginationModule, TilesModule, ButtonModule, TabsModule,
|
|
14
|
-
import { BehaviorSubject, filter, of, switchMap, combineLatest, tap, map as map$1,
|
|
13
|
+
import { InputModule, PaginationModule, TilesModule, ButtonModule, ModalModule, TabsModule, IconModule, LayerModule, DropdownModule, ToggleModule, TooltipModule, NumberModule } from 'carbon-components-angular';
|
|
14
|
+
import { BehaviorSubject, filter, of, switchMap, combineLatest, tap, map as map$1, startWith, take, distinctUntilChanged, Subscription, delay } from 'rxjs';
|
|
15
15
|
import * as i2$1 from '@valtimo/layout';
|
|
16
|
-
import { WidgetCollectionComponent, WidgetCustomComponent, WidgetFieldComponent, WidgetFormioComponent, WidgetTableComponent, WidgetType, WidgetContainerComponent, WIDGET_MANAGEMENT_SERVICE, WidgetManagementComponent } from '@valtimo/layout';
|
|
17
|
-
import * as i3$
|
|
16
|
+
import { WidgetCollectionComponent, WidgetCustomComponent, WidgetFieldComponent, WidgetFormioComponent, WidgetInteractiveTableComponent, WidgetTableComponent, WidgetType, WidgetContainerComponent, WIDGET_MANAGEMENT_SERVICE, WidgetManagementComponent } from '@valtimo/layout';
|
|
17
|
+
import * as i3$2 from '@ngx-translate/core';
|
|
18
18
|
import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
|
|
19
19
|
import * as i1 from '@angular/common/http';
|
|
20
20
|
import { HttpParams } from '@angular/common/http';
|
|
21
21
|
import { map, take as take$1 } from 'rxjs/operators';
|
|
22
22
|
import * as i1$1 from 'ngx-logger';
|
|
23
23
|
import { isEqual } from 'lodash';
|
|
24
|
-
import * as
|
|
24
|
+
import * as i3 from '@valtimo/case';
|
|
25
|
+
import { CaseListActionsComponent, CaseListService } from '@valtimo/case';
|
|
26
|
+
import * as i1$3 from '@angular/forms';
|
|
25
27
|
import { Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
26
28
|
import { TrashCan16, InformationFilled16, Search16 } from '@carbon/icons';
|
|
27
29
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
28
|
-
import { runAfterCarbonModalClosed as runAfterCarbonModalClosed$1, ValtimoCdsModalDirective as ValtimoCdsModalDirective$1, SelectModule as SelectModule$1, CarbonMultiInputModule as CarbonMultiInputModule$1, InputLabelModule as InputLabelModule$1, AutoKeyInputComponent } from 'dist/valtimo/components';
|
|
29
30
|
|
|
30
31
|
/*
|
|
31
32
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -49,10 +50,11 @@ class IkoApiService extends BaseApiService {
|
|
|
49
50
|
setCachedMenuItems(items) {
|
|
50
51
|
this._cachedMenuItems$.next(items);
|
|
51
52
|
}
|
|
52
|
-
constructor(httpClient, configService) {
|
|
53
|
+
constructor(httpClient, configService, globalNotificationService) {
|
|
53
54
|
super(httpClient, configService);
|
|
54
55
|
this.httpClient = httpClient;
|
|
55
56
|
this.configService = configService;
|
|
57
|
+
this.globalNotificationService = globalNotificationService;
|
|
56
58
|
this._cachedMenuItems$ = new BehaviorSubject([]);
|
|
57
59
|
}
|
|
58
60
|
getIkoDataAggregates(key, title, page = 0, size = 10000, sort = 'title,asc') {
|
|
@@ -81,7 +83,52 @@ class IkoApiService extends BaseApiService {
|
|
|
81
83
|
searchIkoDataRequest(ikoKey, paramKey, filters) {
|
|
82
84
|
return this.httpClient.post(this.getApiUrl(`/v1/iko-data-aggregate/${ikoKey}/data-request/${paramKey}/search`), filters);
|
|
83
85
|
}
|
|
84
|
-
|
|
86
|
+
handleAction(action, resolved = null) {
|
|
87
|
+
if (!action)
|
|
88
|
+
return;
|
|
89
|
+
const navigateTo = this.resolveProperty(action?.navigateTo, resolved);
|
|
90
|
+
if (navigateTo) {
|
|
91
|
+
this.navigateTo(navigateTo);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const caseDefinitionKey = this.resolveProperty(action?.caseDefinitionKey, resolved);
|
|
95
|
+
if (caseDefinitionKey)
|
|
96
|
+
this.startCase(caseDefinitionKey);
|
|
97
|
+
const processDefinitionKey = this.resolveProperty(action?.processDefinitionKey, resolved);
|
|
98
|
+
if (processDefinitionKey) {
|
|
99
|
+
this.globalNotificationService.showToast({
|
|
100
|
+
title: 'An unexpected error occurred',
|
|
101
|
+
caption: `Unsupported action: Start process ${processDefinitionKey}`,
|
|
102
|
+
type: 'error',
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
navigateTo(navigateTo) {
|
|
107
|
+
if (navigateTo.startsWith(window.location.origin) || navigateTo.startsWith('/')) {
|
|
108
|
+
window.open(navigateTo, '_self');
|
|
109
|
+
}
|
|
110
|
+
else if (navigateTo.startsWith('http')) {
|
|
111
|
+
window.open(navigateTo, '_blank');
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.globalNotificationService.showToast({
|
|
115
|
+
title: 'An unexpected error occurred',
|
|
116
|
+
caption: `Unable to navigate to ${navigateTo}`,
|
|
117
|
+
type: 'error',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
startCase(caseDefinitionKey) {
|
|
122
|
+
this.globalNotificationService.showToast({
|
|
123
|
+
title: 'Test',
|
|
124
|
+
caption: `Start case ${caseDefinitionKey}`,
|
|
125
|
+
type: 'info',
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
resolveProperty(property, resolved) {
|
|
129
|
+
return property ? (resolved ? resolved[property] : property) : null;
|
|
130
|
+
}
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoApiService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }, { token: i2.GlobalNotificationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
85
132
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoApiService, providedIn: 'root' }); }
|
|
86
133
|
}
|
|
87
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoApiService, decorators: [{
|
|
@@ -89,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
89
136
|
args: [{
|
|
90
137
|
providedIn: 'root',
|
|
91
138
|
}]
|
|
92
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
139
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }, { type: i2.GlobalNotificationService }] });
|
|
93
140
|
|
|
94
141
|
/*
|
|
95
142
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -178,16 +225,22 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
178
225
|
return this.httpClient.get(this.getApiUrl(`/v1/iko-data-aggregate/${key}`));
|
|
179
226
|
}
|
|
180
227
|
createIkoDataAggregate(key, body) {
|
|
181
|
-
return this.httpClient.post(this.getApiUrl(
|
|
228
|
+
return this.httpClient.post(this.getApiUrl(`management/v1/iko-data-aggregate/${key}`), body);
|
|
182
229
|
}
|
|
183
230
|
updateIkoDataAggregate(key, body) {
|
|
184
|
-
return this.httpClient.put(this.getApiUrl(
|
|
231
|
+
return this.httpClient.put(this.getApiUrl(`management/v1/iko-data-aggregate/${key}`), body);
|
|
185
232
|
}
|
|
186
233
|
deleteIkoDataAggregate(key) {
|
|
187
|
-
return this.httpClient.delete(this.getApiUrl(
|
|
234
|
+
return this.httpClient.delete(this.getApiUrl(`management/v1/iko-data-aggregate/${key}`));
|
|
235
|
+
}
|
|
236
|
+
getIkoRepositoryPropertyFields(type) {
|
|
237
|
+
return this.httpClient.get(this.getApiUrl(`management/v1/iko-property-fields/${type}/repository-config`));
|
|
188
238
|
}
|
|
189
239
|
getIkoDataAggregatePropertyFields(type) {
|
|
190
|
-
return this.httpClient.get(this.getApiUrl(
|
|
240
|
+
return this.httpClient.get(this.getApiUrl(`management/v1/iko-property-fields/${type}/data-aggregate`));
|
|
241
|
+
}
|
|
242
|
+
getIkoDataAggregateType(key) {
|
|
243
|
+
return this.httpClient.get(this.getApiUrl(`/management/v1/iko/${key}`));
|
|
191
244
|
}
|
|
192
245
|
getManagementIkoDataAggregates(key, title, ikoRepositoryConfigKey, page = 0, size = 100, sort = 'title,asc') {
|
|
193
246
|
let params = new HttpParams().set('page', page).set('size', size).set('sort', sort);
|
|
@@ -218,7 +271,7 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
218
271
|
return this.httpClient.delete(this.getApiUrl(`management/v1/iko-data-aggregate/${aggregateKey}/data-request/${key}`));
|
|
219
272
|
}
|
|
220
273
|
getIkoDataRequestPropertyFields(type) {
|
|
221
|
-
return this.httpClient.get(this.getApiUrl(
|
|
274
|
+
return this.httpClient.get(this.getApiUrl(`management/v1/iko-property-fields/${type}/data-request`));
|
|
222
275
|
}
|
|
223
276
|
getIkoRepositoryConfigs() {
|
|
224
277
|
return this.httpClient.get(this.getApiUrl(`/management/v1/iko`));
|
|
@@ -230,10 +283,10 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
230
283
|
return this.httpClient.post(this.getApiUrl(`management/v1/iko/${key}`), body);
|
|
231
284
|
}
|
|
232
285
|
updateIkoRepositoryConfig(key, body) {
|
|
233
|
-
return this.httpClient.put(this.getApiUrl(`/v1/iko/${key}`), body);
|
|
286
|
+
return this.httpClient.put(this.getApiUrl(`/management/v1/iko/${key}`), body);
|
|
234
287
|
}
|
|
235
288
|
deleteIkoRepositoryConfig(key) {
|
|
236
|
-
return this.httpClient.delete(this.getApiUrl(`/v1/iko/${key}`));
|
|
289
|
+
return this.httpClient.delete(this.getApiUrl(`/management/v1/iko/${key}`));
|
|
237
290
|
}
|
|
238
291
|
getIkoRepositoryConfigPropertyFields(type) {
|
|
239
292
|
return this.httpClient.get(this.getApiUrl(`/management/v1/iko-property-fields/${type}/repository-config`));
|
|
@@ -259,44 +312,9 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
259
312
|
deleteIkoTab(aggregateKey, tabKey) {
|
|
260
313
|
return this.httpClient.delete(this.getApiUrl(`/management/v1/iko-data-aggregate/${aggregateKey}/tab/${tabKey}`));
|
|
261
314
|
}
|
|
262
|
-
// public getIkoWidgets(aggregateKey: string, tabKey: string): Observable<BasicWidget[]> {
|
|
263
|
-
// return this.httpClient.get<BasicWidget[]>(
|
|
264
|
-
// this.getApiUrl(`/v1/iko-data-aggregate/${aggregateKey}/tab/${tabKey}/widget`)
|
|
265
|
-
// );
|
|
266
|
-
// }
|
|
267
315
|
getIkoWidget(aggregateKey, tabKey, widgetKey) {
|
|
268
316
|
return this.httpClient.get(this.getApiUrl(`/v1/iko-data-aggregate/${aggregateKey}/tab/${tabKey}/widget/${widgetKey}`));
|
|
269
317
|
}
|
|
270
|
-
// public createIkoWidget(
|
|
271
|
-
// aggregateKey: string,
|
|
272
|
-
// tabKey: string,
|
|
273
|
-
// widgetKey: string,
|
|
274
|
-
// body: WidgetDto
|
|
275
|
-
// ): Observable<WidgetDto> {
|
|
276
|
-
// return this.httpClient.post<WidgetDto>(
|
|
277
|
-
// this.getApiUrl(`/v1/iko-data-aggregate/${aggregateKey}/tab/${tabKey}/widget/${widgetKey}`),
|
|
278
|
-
// body
|
|
279
|
-
// );
|
|
280
|
-
// }
|
|
281
|
-
// public updateIkoWidgets(
|
|
282
|
-
// aggregateKey: string,
|
|
283
|
-
// tabKey: string,
|
|
284
|
-
// body: WidgetDto[]
|
|
285
|
-
// ): Observable<WidgetDto[]> {
|
|
286
|
-
// return this.httpClient.put<WidgetDto[]>(
|
|
287
|
-
// this.getApiUrl(`/v1/iko-data-aggregate/${aggregateKey}/tab/${tabKey}/widget`),
|
|
288
|
-
// body
|
|
289
|
-
// );
|
|
290
|
-
// }
|
|
291
|
-
// public deleteIkoWidget(
|
|
292
|
-
// aggregateKey: string,
|
|
293
|
-
// tabKey: string,
|
|
294
|
-
// widgetKey: string
|
|
295
|
-
// ): Observable<void> {
|
|
296
|
-
// return this.httpClient.delete<void>(
|
|
297
|
-
// this.getApiUrl(`/v1/iko-data-aggregate/${aggregateKey}/tab/${tabKey}/widget/${widgetKey}`)
|
|
298
|
-
// );
|
|
299
|
-
// }
|
|
300
318
|
getIkoSearchFields(aggregateKey, requestKey) {
|
|
301
319
|
return this.httpClient.get(this.getApiUrl(`management/v1/iko-data-aggregate/${aggregateKey}/data-request/${requestKey}/search-field`));
|
|
302
320
|
}
|
|
@@ -505,8 +523,11 @@ class IkoWidgetCollectionComponent {
|
|
|
505
523
|
onPaginationEvent(event) {
|
|
506
524
|
this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);
|
|
507
525
|
}
|
|
526
|
+
onWidgetActionClick(action) {
|
|
527
|
+
this.ikoApiService.handleAction(action);
|
|
528
|
+
}
|
|
508
529
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetCollectionComponent, deps: [{ token: IkoApiService }, { token: i2$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
509
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
530
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoWidgetCollectionComponent, isStandalone: true, selector: "valtimo-iko-widget-collection", inputs: { widgetConfiguration: "widgetConfiguration", widgetParams: "widgetParams", 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-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length >= 1) {\n <button cdsButton=\"ghost\" (click)=\"onWidgetActionClick(obs.widgetConfiguration?.actions[0])\">\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-collection>\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: InputModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetCollectionComponent, selector: "valtimo-widget-collection", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
510
531
|
}
|
|
511
532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetCollectionComponent, decorators: [{
|
|
512
533
|
type: Component,
|
|
@@ -519,7 +540,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
519
540
|
TranslateModule,
|
|
520
541
|
ButtonModule,
|
|
521
542
|
WidgetCollectionComponent,
|
|
522
|
-
], 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-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" }]
|
|
543
|
+
], 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-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length >= 1) {\n <button cdsButton=\"ghost\" (click)=\"onWidgetActionClick(obs.widgetConfiguration?.actions[0])\">\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-collection>\n" }]
|
|
523
544
|
}], ctorParameters: () => [{ type: IkoApiService }, { type: i2$1.WidgetLayoutService }], propDecorators: { widgetConfiguration: [{
|
|
524
545
|
type: Input
|
|
525
546
|
}], widgetParams: [{
|
|
@@ -635,8 +656,11 @@ class IkoWidgetFieldComponent {
|
|
|
635
656
|
? of(null)
|
|
636
657
|
: this.ikoApiService.getIkoWidgetData(widgetParams.dataAggregateKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
|
|
637
658
|
}
|
|
659
|
+
onWidgetActionClick(action) {
|
|
660
|
+
this.ikoApiService.handleAction(action);
|
|
661
|
+
}
|
|
638
662
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetFieldComponent, deps: [{ token: IkoApiService }, { token: i2$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
639
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoWidgetFieldComponent, isStandalone: true, selector: "valtimo-iko-widget-field", inputs: { widgetConfiguration: "widgetConfiguration", widgetParams: "widgetParams", 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
663
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoWidgetFieldComponent, isStandalone: true, selector: "valtimo-iko-widget-field", inputs: { widgetConfiguration: "widgetConfiguration", widgetParams: "widgetParams", 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", "compact"], outputs: ["noVisibleFieldsEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
640
664
|
}
|
|
641
665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetFieldComponent, decorators: [{
|
|
642
666
|
type: Component,
|
|
@@ -645,7 +669,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
645
669
|
InputModule,
|
|
646
670
|
TranslateModule,
|
|
647
671
|
CarbonListModule,
|
|
648
|
-
EllipsisPipe,
|
|
649
672
|
ButtonModule,
|
|
650
673
|
WidgetFieldComponent,
|
|
651
674
|
], 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" }]
|
|
@@ -688,11 +711,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
688
711
|
* See the License for the specific language governing permissions and
|
|
689
712
|
* limitations under the License.
|
|
690
713
|
*/
|
|
714
|
+
// TODO: remove component, document id is required, which makes no sense for iko
|
|
691
715
|
class IkoWidgetFormioComponent {
|
|
692
716
|
set widgetConfiguration(value) {
|
|
693
717
|
if (!value)
|
|
694
718
|
return;
|
|
695
|
-
this.layoutService.setWidgetWithExternalData(value.uuid);
|
|
696
719
|
this._widgetConfigurationSubject$.next(value);
|
|
697
720
|
}
|
|
698
721
|
get widgetConfiguration$() {
|
|
@@ -703,7 +726,7 @@ class IkoWidgetFormioComponent {
|
|
|
703
726
|
this._widgetConfigurationSubject$ = new BehaviorSubject(null);
|
|
704
727
|
}
|
|
705
728
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetFormioComponent, deps: [{ token: i2$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
706
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetUuid]=\"widgetUuid\"\n>\n</valtimo-widget-formio>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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", "widgetUuid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
729
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 [widgetConfiguration]=\"widgetConfiguration$ | async\"\n [widgetUuid]=\"widgetUuid\"\n>\n</valtimo-widget-formio>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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", "widgetUuid", "refreshForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
707
730
|
}
|
|
708
731
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetFormioComponent, decorators: [{
|
|
709
732
|
type: Component,
|
|
@@ -730,6 +753,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
730
753
|
* limitations under the License.
|
|
731
754
|
*/
|
|
732
755
|
|
|
756
|
+
/*
|
|
757
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
758
|
+
*
|
|
759
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
760
|
+
* you may not use this file except in compliance with the License.
|
|
761
|
+
* You may obtain a copy of the License at
|
|
762
|
+
*
|
|
763
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
764
|
+
*
|
|
765
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
766
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
767
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
768
|
+
* See the License for the specific language governing permissions and
|
|
769
|
+
* limitations under the License.
|
|
770
|
+
*/
|
|
771
|
+
class IkoWidgetInteractiveTableComponent {
|
|
772
|
+
set widgetConfiguration(value) {
|
|
773
|
+
this._widgetConfiguration = value;
|
|
774
|
+
this.widgetConfiguration$.next(value);
|
|
775
|
+
}
|
|
776
|
+
get widgetConfiguration() {
|
|
777
|
+
return this._widgetConfiguration;
|
|
778
|
+
}
|
|
779
|
+
set widgetParams(value) {
|
|
780
|
+
this._widgetParams$.next(value);
|
|
781
|
+
}
|
|
782
|
+
constructor(ikoApiService, widgetLayoutService, listService) {
|
|
783
|
+
this.ikoApiService = ikoApiService;
|
|
784
|
+
this.widgetLayoutService = widgetLayoutService;
|
|
785
|
+
this.listService = listService;
|
|
786
|
+
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
787
|
+
this._widgetParams$ = new BehaviorSubject(null);
|
|
788
|
+
this._queryParams$ = new BehaviorSubject(null);
|
|
789
|
+
this.widgetData$ = combineLatest([
|
|
790
|
+
this.widgetConfiguration$,
|
|
791
|
+
this._widgetParams$,
|
|
792
|
+
this.listService.forceRefresh$,
|
|
793
|
+
]).pipe(switchMap(([widgetConfiguration, widgetParams]) => !widgetParams || !widgetConfiguration
|
|
794
|
+
? of(null)
|
|
795
|
+
: this.ikoApiService.getIkoWidgetData(widgetParams.dataAggregateKey, widgetParams.tabKey, widgetConfiguration.key, widgetParams.entryId)), tap(() => this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid)));
|
|
796
|
+
}
|
|
797
|
+
onPaginationEvent(event) {
|
|
798
|
+
this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);
|
|
799
|
+
}
|
|
800
|
+
onRowClickEvent(event, widgetConfiguration) {
|
|
801
|
+
this.ikoApiService.handleAction(widgetConfiguration.properties.rowClickAction, event.resolved);
|
|
802
|
+
}
|
|
803
|
+
onActionEvent(action) {
|
|
804
|
+
this.ikoApiService.handleAction(action);
|
|
805
|
+
}
|
|
806
|
+
onCaseStartEvent(caseDefintion) {
|
|
807
|
+
this.listService.setCaseDefinitionKey(caseDefintion.caseDefinitionKey);
|
|
808
|
+
this.listActionsComponent.startCase();
|
|
809
|
+
}
|
|
810
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetInteractiveTableComponent, deps: [{ token: IkoApiService }, { token: i2$1.WidgetLayoutService }, { token: i3.CaseListService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
811
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoWidgetInteractiveTableComponent, isStandalone: true, selector: "valtimo-iko-widget-interactive-table", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid", widgetParams: "widgetParams" }, providers: [CaseListService], viewQueries: [{ propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }], 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-interactive-table\n *ngIf=\"widgetConfiguration$ | async as widgetConfiguration\"\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (actionEvent)=\"onActionEvent($event)\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n (rowClickEvent)=\"onRowClickEvent($event, widgetConfiguration)\"\n (caseStartEvent)=\"onCaseStartEvent($event)\"\n>\n</valtimo-widget-interactive-table>\n\n<valtimo-case-list-actions [navigateAfterSubmit]=\"false\"></valtimo-case-list-actions>\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: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: WidgetInteractiveTableComponent, selector: "valtimo-widget-interactive-table", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent", "rowClickEvent", "actionEvent", "caseStartEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading", "navigateAfterSubmit"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "ngmodule", type: ModalModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
812
|
+
}
|
|
813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetInteractiveTableComponent, decorators: [{
|
|
814
|
+
type: Component,
|
|
815
|
+
args: [{ selector: 'valtimo-iko-widget-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
816
|
+
CommonModule,
|
|
817
|
+
CarbonListModule,
|
|
818
|
+
PaginationModule,
|
|
819
|
+
TilesModule,
|
|
820
|
+
TranslateModule,
|
|
821
|
+
ButtonModule,
|
|
822
|
+
WidgetInteractiveTableComponent,
|
|
823
|
+
CaseListActionsComponent,
|
|
824
|
+
ModalModule,
|
|
825
|
+
], providers: [CaseListService], 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-interactive-table\n *ngIf=\"widgetConfiguration$ | async as widgetConfiguration\"\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (actionEvent)=\"onActionEvent($event)\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n (rowClickEvent)=\"onRowClickEvent($event, widgetConfiguration)\"\n (caseStartEvent)=\"onCaseStartEvent($event)\"\n>\n</valtimo-widget-interactive-table>\n\n<valtimo-case-list-actions [navigateAfterSubmit]=\"false\"></valtimo-case-list-actions>\n" }]
|
|
826
|
+
}], ctorParameters: () => [{ type: IkoApiService }, { type: i2$1.WidgetLayoutService }, { type: i3.CaseListService }], propDecorators: { listActionsComponent: [{
|
|
827
|
+
type: ViewChild,
|
|
828
|
+
args: [CaseListActionsComponent]
|
|
829
|
+
}], widgetConfiguration: [{
|
|
830
|
+
type: Input,
|
|
831
|
+
args: [{ required: true }]
|
|
832
|
+
}], widgetUuid: [{
|
|
833
|
+
type: Input
|
|
834
|
+
}], widgetParams: [{
|
|
835
|
+
type: Input
|
|
836
|
+
}] } });
|
|
837
|
+
|
|
838
|
+
/*
|
|
839
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
840
|
+
*
|
|
841
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
842
|
+
* you may not use this file except in compliance with the License.
|
|
843
|
+
* You may obtain a copy of the License at
|
|
844
|
+
*
|
|
845
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
846
|
+
*
|
|
847
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
848
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
849
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
850
|
+
* See the License for the specific language governing permissions and
|
|
851
|
+
* limitations under the License.
|
|
852
|
+
*/
|
|
853
|
+
|
|
733
854
|
/*
|
|
734
855
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
735
856
|
*
|
|
@@ -775,8 +896,11 @@ class IkoWidgetTableComponent {
|
|
|
775
896
|
getPageSizeParam(widgetConfiguration) {
|
|
776
897
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
777
898
|
}
|
|
899
|
+
onWidgetActionClick(action) {
|
|
900
|
+
this.ikoApiService.handleAction(action);
|
|
901
|
+
}
|
|
778
902
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetTableComponent, deps: [{ token: IkoApiService }, { token: i2$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
779
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
903
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoWidgetTableComponent, isStandalone: true, selector: "valtimo-iko-widget-table", inputs: { widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid", widgetParams: "widgetParams" }, 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-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length >= 1) {\n <button cdsButton=\"ghost\" (click)=\"onWidgetActionClick(widgetConfiguration?.actions[0])\">\n {{ widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetTableComponent, selector: "valtimo-widget-table", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
780
904
|
}
|
|
781
905
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetTableComponent, decorators: [{
|
|
782
906
|
type: Component,
|
|
@@ -788,7 +912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
788
912
|
TranslateModule,
|
|
789
913
|
ButtonModule,
|
|
790
914
|
WidgetTableComponent,
|
|
791
|
-
], 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-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n</valtimo-widget-table>\n" }]
|
|
915
|
+
], 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-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length >= 1) {\n <button cdsButton=\"ghost\" (click)=\"onWidgetActionClick(widgetConfiguration?.actions[0])\">\n {{ widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-table>\n" }]
|
|
792
916
|
}], ctorParameters: () => [{ type: IkoApiService }, { type: i2$1.WidgetLayoutService }], propDecorators: { widgetConfiguration: [{
|
|
793
917
|
type: Input,
|
|
794
918
|
args: [{ required: true }]
|
|
@@ -862,6 +986,7 @@ class IkoWidgetComponent {
|
|
|
862
986
|
[WidgetType.CUSTOM]: IkoWidgetCustomComponent,
|
|
863
987
|
[WidgetType.FORMIO]: IkoWidgetFormioComponent,
|
|
864
988
|
[WidgetType.TABLE]: IkoWidgetTableComponent,
|
|
989
|
+
[WidgetType.INTERACTIVE_TABLE]: IkoWidgetInteractiveTableComponent,
|
|
865
990
|
[WidgetType.COLLECTION]: IkoWidgetCollectionComponent,
|
|
866
991
|
};
|
|
867
992
|
}
|
|
@@ -954,13 +1079,13 @@ class IkoDetailsComponent {
|
|
|
954
1079
|
const componentRef = this._container.createComponent(TabComponentTypes[tab.type]);
|
|
955
1080
|
componentRef.instance.key = tab.key;
|
|
956
1081
|
}
|
|
957
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoDetailsComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoApiService }, { token: IkoTabService }, { token: i1$2.PageTitleService }, { token: i3.ActivatedRoute }, { token: i3$
|
|
958
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoDetailsComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "_container", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], 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<ng-container\n *ngIf=\"{tabs: tabs$ | async, activeTabKey: activeTabKey$ | async} as obs\"\n renderInPageHeader\n>\n <ng-template>\n <cds-tabs>\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", styles: ["::ng-deep .
|
|
1082
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoDetailsComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoApiService }, { token: IkoTabService }, { token: i1$2.PageTitleService }, { token: i3$1.ActivatedRoute }, { token: i3$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1083
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoDetailsComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "_container", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], 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<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", styles: ["::ng-deep .page-actions{margin-left:unset!important}.valtimo-iko-details ::ng-deep .cds--tab-content{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: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i6.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i6.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
959
1084
|
}
|
|
960
1085
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoDetailsComponent, decorators: [{
|
|
961
1086
|
type: Component,
|
|
962
|
-
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TabsModule, RenderInPageHeaderDirective, ...[IkoTabComponents]], 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<ng-container\n *ngIf=\"{tabs: tabs$ | async, activeTabKey: activeTabKey$ | async} as obs\"\n renderInPageHeader\n>\n <ng-template>\n <cds-tabs>\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", styles: ["::ng-deep .
|
|
963
|
-
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoApiService }, { type: IkoTabService }, { type: i1$2.PageTitleService }, { type: i3.ActivatedRoute }, { type: i3$
|
|
1087
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TabsModule, RenderInPageHeaderDirective, ...[IkoTabComponents]], 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<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", styles: ["::ng-deep .page-actions{margin-left:unset!important}.valtimo-iko-details ::ng-deep .cds--tab-content{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"] }]
|
|
1088
|
+
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoApiService }, { type: IkoTabService }, { type: i1$2.PageTitleService }, { type: i3$1.ActivatedRoute }, { type: i3$2.TranslateService }], propDecorators: { _container: [{
|
|
964
1089
|
type: ViewChild,
|
|
965
1090
|
args: ['content', { read: ViewContainerRef, static: true }]
|
|
966
1091
|
}] } });
|
|
@@ -1029,13 +1154,13 @@ class IkoListComponent {
|
|
|
1029
1154
|
queryParamsHandling: 'preserve',
|
|
1030
1155
|
});
|
|
1031
1156
|
}
|
|
1032
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoListComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoApiService }, { token: i3.ActivatedRoute }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1033
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoListComponent, isStandalone: true, selector: "valtimo-iko-list", 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=\"listConfig$ | async as
|
|
1157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoListComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoApiService }, { token: i3$1.ActivatedRoute }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1158
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoListComponent, isStandalone: true, selector: "valtimo-iko-list", 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></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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }] }); }
|
|
1034
1159
|
}
|
|
1035
1160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoListComponent, decorators: [{
|
|
1036
1161
|
type: Component,
|
|
1037
|
-
args: [{ selector: 'valtimo-iko-list', standalone: true, imports: [CommonModule, CarbonListModule], 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=\"listConfig$ | async as
|
|
1038
|
-
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoApiService }, { type: i3.ActivatedRoute }, { type: i3.Router }] });
|
|
1162
|
+
args: [{ selector: 'valtimo-iko-list', standalone: true, imports: [CommonModule, CarbonListModule], 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></valtimo-carbon-list>\n" }]
|
|
1163
|
+
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoApiService }, { type: i3$1.ActivatedRoute }, { type: i3$1.Router }] });
|
|
1039
1164
|
|
|
1040
1165
|
/*
|
|
1041
1166
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1052,265 +1177,220 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1052
1177
|
* See the License for the specific language governing permissions and
|
|
1053
1178
|
* limitations under the License.
|
|
1054
1179
|
*/
|
|
1055
|
-
class
|
|
1056
|
-
set
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
if (!value)
|
|
1061
|
-
return;
|
|
1062
|
-
this._selectedListColumn = value;
|
|
1063
|
-
this.form.setValue(this.mapListColumnDtoToFormValue(value));
|
|
1064
|
-
this.form.markAsPristine();
|
|
1065
|
-
}
|
|
1066
|
-
set modalMode(value) {
|
|
1067
|
-
this._modalMode = value;
|
|
1068
|
-
if (value === 'add') {
|
|
1069
|
-
this.key.setAsyncValidators(this.keyNotUsedValidator());
|
|
1070
|
-
this.key.enable();
|
|
1071
|
-
}
|
|
1072
|
-
else {
|
|
1073
|
-
this.key.clearAsyncValidators();
|
|
1074
|
-
this.key.disable();
|
|
1180
|
+
class PropertiesFormComponent {
|
|
1181
|
+
set fields(fields) {
|
|
1182
|
+
if (fields) {
|
|
1183
|
+
this.applyPropertyControls(this.fb, this.propertiesFormGroup, fields);
|
|
1184
|
+
this.$fields.set(fields);
|
|
1075
1185
|
}
|
|
1076
|
-
this.key.updateValueAndValidity();
|
|
1077
|
-
}
|
|
1078
|
-
get modalMode() {
|
|
1079
|
-
return this._modalMode;
|
|
1080
1186
|
}
|
|
1081
|
-
|
|
1082
|
-
|
|
1187
|
+
set prefillData(value) {
|
|
1188
|
+
this.$prefillData.set(value ?? {});
|
|
1083
1189
|
}
|
|
1084
|
-
|
|
1085
|
-
|
|
1190
|
+
constructor(fb) {
|
|
1191
|
+
this.fb = fb;
|
|
1192
|
+
this.$fields = signal([]);
|
|
1193
|
+
this.$prefillData = signal({});
|
|
1194
|
+
this.$selectItems = computed(() => this.$fields()
|
|
1195
|
+
.filter(field => field?.dropdownList)
|
|
1196
|
+
.reduce((acc, field) => {
|
|
1197
|
+
acc[field.key] = field.dropdownList.map(item => ({
|
|
1198
|
+
id: item.first,
|
|
1199
|
+
text: item.second,
|
|
1200
|
+
}));
|
|
1201
|
+
return acc;
|
|
1202
|
+
}, {}));
|
|
1203
|
+
this.combined = computed(() => ({
|
|
1204
|
+
prefill: this.$prefillData(),
|
|
1205
|
+
fields: this.$fields(),
|
|
1206
|
+
}));
|
|
1207
|
+
this._effect = effect(() => {
|
|
1208
|
+
const { prefill, fields } = this.combined();
|
|
1209
|
+
this.mapPrefillDataToForm(prefill, fields);
|
|
1210
|
+
});
|
|
1086
1211
|
}
|
|
1087
|
-
|
|
1088
|
-
return this.
|
|
1212
|
+
getFa(key) {
|
|
1213
|
+
return this.propertiesFormGroup.get(key);
|
|
1089
1214
|
}
|
|
1090
|
-
|
|
1091
|
-
|
|
1215
|
+
onAddKeyValue(key, required) {
|
|
1216
|
+
this.addKeyValue(this.getFa(key), this.fb, required);
|
|
1092
1217
|
}
|
|
1093
|
-
|
|
1094
|
-
|
|
1218
|
+
onDeleteRowClick(key, index) {
|
|
1219
|
+
this.getFa(key).removeAt(index);
|
|
1095
1220
|
}
|
|
1096
|
-
|
|
1097
|
-
|
|
1221
|
+
applyPropertyControls(fb, propertiesGroup, fields) {
|
|
1222
|
+
fields.forEach(field => {
|
|
1223
|
+
if (propertiesGroup.contains(field.key))
|
|
1224
|
+
return;
|
|
1225
|
+
switch (field.type) {
|
|
1226
|
+
case 'text':
|
|
1227
|
+
case 'url':
|
|
1228
|
+
case 'integer':
|
|
1229
|
+
case 'dropdown':
|
|
1230
|
+
propertiesGroup.addControl(field.key, fb.control('', field.required ? [Validators.required] : []));
|
|
1231
|
+
break;
|
|
1232
|
+
case 'keyValueList':
|
|
1233
|
+
propertiesGroup.addControl(field.key, fb.array([
|
|
1234
|
+
fb.group({
|
|
1235
|
+
key: fb.control('', Validators.required),
|
|
1236
|
+
value: fb.control('', Validators.required),
|
|
1237
|
+
}),
|
|
1238
|
+
]));
|
|
1239
|
+
break;
|
|
1240
|
+
}
|
|
1241
|
+
});
|
|
1098
1242
|
}
|
|
1099
|
-
|
|
1100
|
-
|
|
1243
|
+
getControlInvalid(controlKey) {
|
|
1244
|
+
const control = this.propertiesFormGroup.get(controlKey);
|
|
1245
|
+
if (!control) {
|
|
1246
|
+
return true;
|
|
1247
|
+
}
|
|
1248
|
+
return !control.valid && !control.pristine;
|
|
1101
1249
|
}
|
|
1102
|
-
|
|
1103
|
-
this.
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
booleanDisplayTypeParameters: this.formBuilder.control([
|
|
1120
|
-
{ key: '', value: '' },
|
|
1121
|
-
]),
|
|
1122
|
-
enumDisplayTypeParameters: this.formBuilder.control([
|
|
1123
|
-
{ key: '', value: '' },
|
|
1124
|
-
]),
|
|
1250
|
+
mapPrefillDataToForm(prefillData, propertyFields) {
|
|
1251
|
+
if (!prefillData || !this.propertiesFormGroup)
|
|
1252
|
+
return;
|
|
1253
|
+
propertyFields.forEach((field) => {
|
|
1254
|
+
if (field.type === 'keyValueList') {
|
|
1255
|
+
const keyValueList = !prefillData[field.key]
|
|
1256
|
+
? [{ key: '', value: '' }]
|
|
1257
|
+
: Array.isArray(prefillData[field.key])
|
|
1258
|
+
? prefillData[field.key]
|
|
1259
|
+
: Object.entries(prefillData[field.key]).map(([key, value]) => ({
|
|
1260
|
+
key,
|
|
1261
|
+
value,
|
|
1262
|
+
}));
|
|
1263
|
+
this.getFa(field.key).clear();
|
|
1264
|
+
keyValueList.forEach(item => this.onAddKeyValue(field.key, field.required));
|
|
1265
|
+
prefillData[field.key] = keyValueList;
|
|
1266
|
+
}
|
|
1125
1267
|
});
|
|
1126
|
-
this.
|
|
1127
|
-
this.isBooleanDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.BOOLEAN));
|
|
1128
|
-
this.isEnumDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.ENUM));
|
|
1129
|
-
this.isTagsDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.TAGS));
|
|
1130
|
-
this._DISPLAY_TYPES = [
|
|
1131
|
-
ViewType.TEXT,
|
|
1132
|
-
ViewType.DATE,
|
|
1133
|
-
ViewType.BOOLEAN,
|
|
1134
|
-
ViewType.ENUM,
|
|
1135
|
-
ViewType.ARRAY_COUNT,
|
|
1136
|
-
ViewType.UNDERSCORES_TO_SPACES,
|
|
1137
|
-
ViewType.TAGS,
|
|
1138
|
-
ViewType.HIDDEN,
|
|
1139
|
-
];
|
|
1140
|
-
this._dataAggregateKey$ = this.route.params.pipe(map(params => params?.key), filter(key => !!key));
|
|
1141
|
-
this.displayTypeSelectItems = this._DISPLAY_TYPES.map(displayType => ({
|
|
1142
|
-
id: displayType,
|
|
1143
|
-
translationKey: `listColumnDisplayType.${displayType}`,
|
|
1144
|
-
}));
|
|
1145
|
-
this.sortSelectItems = [
|
|
1146
|
-
{
|
|
1147
|
-
translationKey: 'listColumn.sortableAsc',
|
|
1148
|
-
id: 'ASC',
|
|
1149
|
-
},
|
|
1150
|
-
{
|
|
1151
|
-
translationKey: 'listColumn.sortableDesc',
|
|
1152
|
-
id: 'DESC',
|
|
1153
|
-
},
|
|
1154
|
-
];
|
|
1155
|
-
this._subscriptions = new Subscription();
|
|
1156
|
-
this.resetForm = () => {
|
|
1157
|
-
this.form.reset();
|
|
1158
|
-
this.form.markAsPristine();
|
|
1159
|
-
this.form.markAsUntouched();
|
|
1160
|
-
this.form.updateValueAndValidity();
|
|
1161
|
-
};
|
|
1268
|
+
this.propertiesFormGroup.patchValue(prefillData);
|
|
1162
1269
|
}
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
this.sortable.disable();
|
|
1168
|
-
}
|
|
1169
|
-
else {
|
|
1170
|
-
this.sortable.enable();
|
|
1171
|
-
}
|
|
1270
|
+
addKeyValue(arr, fb, required) {
|
|
1271
|
+
arr.push(fb.group({
|
|
1272
|
+
key: fb.control('', required ? Validators.required : []),
|
|
1273
|
+
value: fb.control('', required ? Validators.required : []),
|
|
1172
1274
|
}));
|
|
1173
1275
|
}
|
|
1174
|
-
|
|
1175
|
-
|
|
1276
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PropertiesFormComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1277
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PropertiesFormComponent, isStandalone: true, selector: "valtimo-iko-management-properties", inputs: { propertiesFormGroup: "propertiesFormGroup", fields: "fields", prefillData: "prefillData" }, 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<form [formGroup]=\"propertiesFormGroup\">\n @for (propertyField of $fields(); track propertyField.key) {\n @switch (true) {\n @case (propertyField.type === 'text' ||\n propertyField.type === 'url' ||\n propertyField.type === 'integer') {\n <cds-label>\n {{ propertyField.title }}\n <input\n [formControlName]=\"propertyField.key\"\n cdsText\n cdsLayer\n [placeholder]=\"propertyField.title\"\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 [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\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", styles: ["form{display:flex;flex-direction:column;gap:16px}fieldset{display:flex;gap:16px}::ng-deep label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i1$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }] }); }
|
|
1278
|
+
}
|
|
1279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PropertiesFormComponent, decorators: [{
|
|
1280
|
+
type: Component,
|
|
1281
|
+
args: [{ selector: 'valtimo-iko-management-properties', standalone: true, imports: [
|
|
1282
|
+
CommonModule,
|
|
1283
|
+
ReactiveFormsModule,
|
|
1284
|
+
TranslatePipe,
|
|
1285
|
+
ButtonModule,
|
|
1286
|
+
InputModule,
|
|
1287
|
+
IconModule,
|
|
1288
|
+
LayerModule,
|
|
1289
|
+
SelectModule,
|
|
1290
|
+
], 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<form [formGroup]=\"propertiesFormGroup\">\n @for (propertyField of $fields(); track propertyField.key) {\n @switch (true) {\n @case (propertyField.type === 'text' ||\n propertyField.type === 'url' ||\n propertyField.type === 'integer') {\n <cds-label>\n {{ propertyField.title }}\n <input\n [formControlName]=\"propertyField.key\"\n cdsText\n cdsLayer\n [placeholder]=\"propertyField.title\"\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 [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\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", styles: ["form{display:flex;flex-direction:column;gap:16px}fieldset{display:flex;gap:16px}::ng-deep label{width:100%}\n"] }]
|
|
1291
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { propertiesFormGroup: [{
|
|
1292
|
+
type: Input,
|
|
1293
|
+
args: [{ required: true }]
|
|
1294
|
+
}], fields: [{
|
|
1295
|
+
type: Input
|
|
1296
|
+
}], prefillData: [{
|
|
1297
|
+
type: Input
|
|
1298
|
+
}] } });
|
|
1299
|
+
|
|
1300
|
+
class IkoManagementRepositoryModalComponent {
|
|
1301
|
+
set open(value) {
|
|
1302
|
+
this._open$.next(value);
|
|
1303
|
+
if (!value)
|
|
1304
|
+
this.resetForm();
|
|
1176
1305
|
}
|
|
1177
|
-
|
|
1178
|
-
this.
|
|
1179
|
-
runAfterCarbonModalClosed(this.resetForm);
|
|
1306
|
+
get open$() {
|
|
1307
|
+
return this._open$.asObservable();
|
|
1180
1308
|
}
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
this.
|
|
1186
|
-
|
|
1187
|
-
? this.ikoManagementApiService.createIkoListColumn(dataAggregateKey, formValue.key, requestBody)
|
|
1188
|
-
: this.ikoManagementApiService.updateListColumn(dataAggregateKey, formValue.key, requestBody)))
|
|
1189
|
-
.subscribe({
|
|
1190
|
-
next: () => {
|
|
1191
|
-
this.enableForm();
|
|
1192
|
-
this.closeModalEvent.emit('closeAndRefresh');
|
|
1193
|
-
runAfterCarbonModalClosed(this.resetForm);
|
|
1194
|
-
},
|
|
1195
|
-
error: () => {
|
|
1196
|
-
this.enableForm();
|
|
1197
|
-
},
|
|
1198
|
-
});
|
|
1199
|
-
}
|
|
1200
|
-
disableForm() {
|
|
1201
|
-
this.form.disable();
|
|
1309
|
+
set prefillData(value) {
|
|
1310
|
+
this.$prefillData.set(value);
|
|
1311
|
+
if (!value)
|
|
1312
|
+
return;
|
|
1313
|
+
this.formGroup.patchValue(value);
|
|
1314
|
+
this.formGroup.get('key')?.disable();
|
|
1202
1315
|
}
|
|
1203
|
-
|
|
1204
|
-
this.
|
|
1316
|
+
constructor(fb, ikoManagementApiService, configService) {
|
|
1317
|
+
this.fb = fb;
|
|
1318
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
1319
|
+
this.configService = configService;
|
|
1320
|
+
this._open$ = new BehaviorSubject(false);
|
|
1321
|
+
this.$prefillData = signal(null);
|
|
1322
|
+
this.modalClose = new EventEmitter();
|
|
1323
|
+
this.enableIkoType = false;
|
|
1324
|
+
this.disabled$ = new BehaviorSubject(true);
|
|
1325
|
+
this._ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();
|
|
1326
|
+
this.ikoRepositoryTypeSelectItems$ = this._ikoRepositoryTypes$.pipe(map$1(types => Object.keys(types).map(typeKey => ({ id: typeKey, text: types[typeKey] }))), tap(() => {
|
|
1327
|
+
this.disabled$.next(false);
|
|
1328
|
+
}));
|
|
1329
|
+
this.formGroup = this.fb.group({
|
|
1330
|
+
title: this.fb.control('', Validators.required),
|
|
1331
|
+
key: this.fb.control('', Validators.required),
|
|
1332
|
+
type: this.fb.control('', Validators.required),
|
|
1333
|
+
properties: this.fb.group({}, Validators.required),
|
|
1334
|
+
});
|
|
1335
|
+
this.propertyFields$ = this.formGroup
|
|
1336
|
+
.get('type')
|
|
1337
|
+
.valueChanges.pipe(startWith(this.formGroup.get('type').value), tap(_ => this.formGroup.patchValue({ properties: {} })), filter(type => !!type && !Array.isArray(type)), switchMap(type => this.ikoManagementApiService.getIkoRepositoryPropertyFields(type)));
|
|
1338
|
+
this.enableIkoType = this.configService.getFeatureToggle('enableIkoType');
|
|
1205
1339
|
}
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
}, {});
|
|
1340
|
+
get properties() {
|
|
1341
|
+
const properties = this.formGroup.get('properties');
|
|
1342
|
+
return !properties ? null : properties;
|
|
1210
1343
|
}
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
const displayTypeParameters = (() => {
|
|
1214
|
-
switch (displayType) {
|
|
1215
|
-
case ViewType.DATE:
|
|
1216
|
-
return { dateFormat };
|
|
1217
|
-
case ViewType.ENUM:
|
|
1218
|
-
return {
|
|
1219
|
-
enum: this.mapMultiInputValueToEnum(enumDisplayTypeParameters),
|
|
1220
|
-
};
|
|
1221
|
-
case ViewType.BOOLEAN:
|
|
1222
|
-
return {
|
|
1223
|
-
enum: this.mapMultiInputValueToEnum(booleanDisplayTypeParameters),
|
|
1224
|
-
};
|
|
1225
|
-
default:
|
|
1226
|
-
return {};
|
|
1227
|
-
}
|
|
1228
|
-
})();
|
|
1229
|
-
return {
|
|
1230
|
-
key,
|
|
1231
|
-
path,
|
|
1232
|
-
sortable: Boolean(sortable),
|
|
1233
|
-
...(defaultSort ? { defaultSort: defaultSort } : {}),
|
|
1234
|
-
...rest,
|
|
1235
|
-
...(this.modalMode === 'edit' && {
|
|
1236
|
-
order: this._selectedListColumn.order,
|
|
1237
|
-
}),
|
|
1238
|
-
displayType: {
|
|
1239
|
-
type: displayType,
|
|
1240
|
-
displayTypeParameters,
|
|
1241
|
-
},
|
|
1242
|
-
};
|
|
1344
|
+
onCancel() {
|
|
1345
|
+
this.modalClose.emit(null);
|
|
1243
1346
|
}
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
return [{ key: '', value: '' }];
|
|
1247
|
-
}
|
|
1248
|
-
return Object.entries(enumObj).map(([key, value]) => ({ key, value }));
|
|
1347
|
+
onSave() {
|
|
1348
|
+
this.modalClose.emit(this.formGroup.getRawValue());
|
|
1249
1349
|
}
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
key,
|
|
1254
|
-
title: title || '',
|
|
1255
|
-
path,
|
|
1256
|
-
sortable,
|
|
1257
|
-
defaultSort: defaultSort || '',
|
|
1258
|
-
displayType: displayType.type,
|
|
1259
|
-
dateFormat: '',
|
|
1260
|
-
booleanDisplayTypeParameters: [{ key: '', value: '' }],
|
|
1261
|
-
enumDisplayTypeParameters: [{ key: '', value: '' }],
|
|
1262
|
-
tagAmount: 1,
|
|
1263
|
-
};
|
|
1264
|
-
if (displayType.type === ViewType.DATE) {
|
|
1265
|
-
baseFormValue.dateFormat = displayType.displayTypeParameters?.dateFormat || '';
|
|
1266
|
-
}
|
|
1267
|
-
if (displayType.type === ViewType.ENUM) {
|
|
1268
|
-
baseFormValue.enumDisplayTypeParameters = this.mapEnumToMultiInputValues(displayType.displayTypeParameters?.enum);
|
|
1350
|
+
getControlInvalid(controlKey) {
|
|
1351
|
+
if (controlKey === 'type' && !this.enableIkoType) {
|
|
1352
|
+
return false;
|
|
1269
1353
|
}
|
|
1270
|
-
|
|
1271
|
-
|
|
1354
|
+
const control = this.formGroup.get(controlKey);
|
|
1355
|
+
if (!control) {
|
|
1356
|
+
return true;
|
|
1272
1357
|
}
|
|
1273
|
-
return
|
|
1358
|
+
return !control.valid && !control.pristine;
|
|
1274
1359
|
}
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1360
|
+
resetForm() {
|
|
1361
|
+
setTimeout(() => {
|
|
1362
|
+
this.formGroup.reset({
|
|
1363
|
+
title: '',
|
|
1364
|
+
key: '',
|
|
1365
|
+
type: 'iko',
|
|
1366
|
+
properties: {},
|
|
1367
|
+
});
|
|
1368
|
+
this.formGroup.get('key')?.enable();
|
|
1369
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
1283
1370
|
}
|
|
1284
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1285
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementListModalComponent, isStandalone: true, selector: "valtimo-iko-management-list-modal", inputs: { openModal: "openModal", listColumns: "listColumns", selectedListColumn: "selectedListColumn", modalMode: "modalMode" }, outputs: { closeModalEvent: "closeModalEvent" }, 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<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", styles: [".iko-column-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: TranslateModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i1$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i6.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: CarbonMultiInputModule }, { kind: "component", type: i1$2.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["addRowText", "addRowTranslationKey", "arbitraryAmountTitles", "arbitraryValueAmount", "defaultValues", "deleteRowText", "deleteRowTranslationKey", "disabled", "dropdownColumnTitle", "dropdownItems", "dropdownWidth", "fullWidth", "hideAddButton", "hideDeleteButton", "initialAmountOfRows", "keyColumnTitle", "margin", "maxRows", "minimumAmountOfRows", "name", "required", "title", "titleTranslationKey", "tooltip", "type", "valueColumnTitle", "valuePathSelectorCaseDefinitionKey", "valuePathSelectorPrefixes", "valuePathSelectorShowCaseDefinitionSelector", "valuePathSelectorNotation", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1$2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: NumberModule }, { kind: "component", type: i6.NumberComponent, selector: "cds-number, ibm-number", inputs: ["readonly", "theme", "disabled", "skeleton", "invalid", "id", "placeholder", "size", "required", "value", "min", "max", "label", "helperText", "invalidText", "step", "precision", "warn", "warnText", "ariaLabel", "decrementLabel", "incrementLabel", "fluid"], outputs: ["change"] }] }); }
|
|
1371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementRepositoryModalComponent, deps: [{ token: i1$3.FormBuilder }, { token: IkoManagementApiService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementRepositoryModalComponent, isStandalone: true, selector: "valtimo-iko-management-repository-modal", inputs: { open: "open", prefillData: "prefillData" }, outputs: { modalClose: "modalClose" }, ngImport: i0, template: "<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>Add view</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 <cds-label [invalid]=\"getControlInvalid('key')\">\n {{ 'ikoManagement.keyTitle' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('key')\"\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'ikoManagement.keyPlaceholder' | translate }}\"\n />\n </cds-label>\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\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", styles: ["form{display:flex;flex-direction:column;gap:16px}fieldset{display:flex;gap:16px}::ng-deep label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: PropertiesFormComponent, selector: "valtimo-iko-management-properties", inputs: ["propertiesFormGroup", "fields", "prefillData"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i1$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1286
1373
|
}
|
|
1287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementRepositoryModalComponent, decorators: [{
|
|
1288
1375
|
type: Component,
|
|
1289
|
-
args: [{
|
|
1376
|
+
args: [{ selector: 'valtimo-iko-management-repository-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1290
1377
|
CommonModule,
|
|
1291
1378
|
TranslateModule,
|
|
1292
1379
|
ModalModule,
|
|
1293
1380
|
ValtimoCdsModalDirective,
|
|
1294
|
-
ButtonModule,
|
|
1295
1381
|
InputModule,
|
|
1296
1382
|
ReactiveFormsModule,
|
|
1297
|
-
|
|
1383
|
+
ButtonModule,
|
|
1384
|
+
IconModule,
|
|
1385
|
+
PropertiesFormComponent,
|
|
1298
1386
|
SelectModule,
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
InputLabelModule,
|
|
1303
|
-
NumberModule,
|
|
1304
|
-
], 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<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", styles: [".iko-column-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1305
|
-
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i2$2.FormBuilder }, { type: i3.ActivatedRoute }], propDecorators: { openModal: [{
|
|
1306
|
-
type: Input
|
|
1307
|
-
}], listColumns: [{
|
|
1308
|
-
type: Input
|
|
1309
|
-
}], selectedListColumn: [{
|
|
1387
|
+
LayerModule,
|
|
1388
|
+
], template: "<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>Add view</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 <cds-label [invalid]=\"getControlInvalid('key')\">\n {{ 'ikoManagement.keyTitle' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('key')\"\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'ikoManagement.keyPlaceholder' | translate }}\"\n />\n </cds-label>\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\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", styles: ["form{display:flex;flex-direction:column;gap:16px}fieldset{display:flex;gap:16px}::ng-deep label{width:100%}\n"] }]
|
|
1389
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: IkoManagementApiService }, { type: i2.ConfigService }], propDecorators: { open: [{
|
|
1310
1390
|
type: Input
|
|
1311
|
-
}],
|
|
1391
|
+
}], prefillData: [{
|
|
1312
1392
|
type: Input
|
|
1313
|
-
}],
|
|
1393
|
+
}], modalClose: [{
|
|
1314
1394
|
type: Output
|
|
1315
1395
|
}] } });
|
|
1316
1396
|
|
|
@@ -1330,13 +1410,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1330
1410
|
* limitations under the License.
|
|
1331
1411
|
*/
|
|
1332
1412
|
class IkoManagementApiComponent {
|
|
1333
|
-
constructor(ikoManagementApiService, pageTitleService, router
|
|
1413
|
+
constructor(ikoManagementApiService, pageTitleService, router) {
|
|
1334
1414
|
this.ikoManagementApiService = ikoManagementApiService;
|
|
1335
1415
|
this.pageTitleService = pageTitleService;
|
|
1336
1416
|
this.router = router;
|
|
1337
|
-
this
|
|
1338
|
-
this
|
|
1339
|
-
this
|
|
1417
|
+
this.$modalOpen = signal(false);
|
|
1418
|
+
this.$prefillData = signal(null);
|
|
1419
|
+
this.$keyToDelete = signal(null);
|
|
1420
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
1340
1421
|
this.disabled$ = new BehaviorSubject(true);
|
|
1341
1422
|
this.loading$ = new BehaviorSubject(true);
|
|
1342
1423
|
this._reload$ = new BehaviorSubject(null);
|
|
@@ -1347,95 +1428,81 @@ class IkoManagementApiComponent {
|
|
|
1347
1428
|
label: 'ikoManagement.ikoServer',
|
|
1348
1429
|
},
|
|
1349
1430
|
];
|
|
1350
|
-
this.
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1431
|
+
this.ACTION_ITEMS = [
|
|
1432
|
+
{
|
|
1433
|
+
label: 'interface.edit',
|
|
1434
|
+
callback: this.onEditClick.bind(this),
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
label: 'interface.delete',
|
|
1438
|
+
callback: this.onDeleteClick.bind(this),
|
|
1439
|
+
type: 'danger',
|
|
1440
|
+
},
|
|
1441
|
+
];
|
|
1356
1442
|
this._ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();
|
|
1357
1443
|
this.ikoRepositoryTypeSelectItems$ = this._ikoRepositoryTypes$.pipe(map(types => Object.keys(types).map(typeKey => ({ id: typeKey, text: types[typeKey] }))), tap(() => {
|
|
1358
1444
|
this.disabled$.next(false);
|
|
1359
1445
|
}));
|
|
1360
|
-
this.pluginSelectItems$ = this.form
|
|
1361
|
-
.get('type')
|
|
1362
|
-
.valueChanges.pipe(startWith(this.form.get('type').value), tap(() => this.form.patchValue({ pluginId: '' })), switchMap(type => combineLatest([
|
|
1363
|
-
type ? this.ikoManagementApiService.getIkoRepositoryConfigPropertyFields(type) : of([]),
|
|
1364
|
-
this.translateService.stream('key'),
|
|
1365
|
-
])), map(([res]) => res?.reduce((acc, curr) => {
|
|
1366
|
-
return [
|
|
1367
|
-
...acc,
|
|
1368
|
-
...curr?.dropdownList.map(field => ({
|
|
1369
|
-
id: field.first,
|
|
1370
|
-
text: field.second,
|
|
1371
|
-
})),
|
|
1372
|
-
];
|
|
1373
|
-
}, []) || []), tap(() => {
|
|
1374
|
-
this.disabled$.next(false);
|
|
1375
|
-
}));
|
|
1376
|
-
this._subscriptions = new Subscription();
|
|
1377
1446
|
}
|
|
1378
1447
|
ngOnInit() {
|
|
1379
1448
|
this.pageTitleService.disableReset();
|
|
1380
1449
|
}
|
|
1381
1450
|
ngOnDestroy() {
|
|
1382
|
-
this._subscriptions.unsubscribe();
|
|
1383
1451
|
this.pageTitleService.enableReset();
|
|
1384
1452
|
}
|
|
1385
1453
|
onRowClicked(event) {
|
|
1386
1454
|
this.router.navigate(['iko-management', event.key]);
|
|
1387
1455
|
}
|
|
1388
1456
|
openModal() {
|
|
1389
|
-
this.
|
|
1390
|
-
}
|
|
1391
|
-
closeModal() {
|
|
1392
|
-
this.openModal$.next(false);
|
|
1393
|
-
setTimeout(() => {
|
|
1394
|
-
this.form.reset();
|
|
1395
|
-
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
1396
|
-
}
|
|
1397
|
-
getControlInvalid(controlKey) {
|
|
1398
|
-
const control = this.form.get(controlKey);
|
|
1399
|
-
if (!control) {
|
|
1400
|
-
return true;
|
|
1401
|
-
}
|
|
1402
|
-
return !control.valid && !control.pristine;
|
|
1457
|
+
this.$modalOpen.set(true);
|
|
1403
1458
|
}
|
|
1404
|
-
|
|
1405
|
-
|
|
1459
|
+
closeModal(item) {
|
|
1460
|
+
this.$modalOpen.set(false);
|
|
1406
1461
|
this.disable();
|
|
1407
|
-
this
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
.
|
|
1462
|
+
const prefillData = this.$prefillData();
|
|
1463
|
+
this.$prefillData.set(null);
|
|
1464
|
+
if (!item)
|
|
1465
|
+
return;
|
|
1466
|
+
let saveObservable;
|
|
1467
|
+
if (prefillData !== null) {
|
|
1468
|
+
saveObservable = this.ikoManagementApiService.updateIkoRepositoryConfig(item.key, item);
|
|
1469
|
+
}
|
|
1470
|
+
else {
|
|
1471
|
+
saveObservable = this.ikoManagementApiService.createIkoRepositoryConfig(item.key, item);
|
|
1472
|
+
}
|
|
1473
|
+
saveObservable.pipe(take(1)).subscribe({
|
|
1417
1474
|
next: () => {
|
|
1418
1475
|
this.enable();
|
|
1419
|
-
this.closeModal();
|
|
1420
1476
|
this.reload();
|
|
1421
1477
|
},
|
|
1422
1478
|
error: () => this.enable(),
|
|
1423
1479
|
});
|
|
1424
1480
|
}
|
|
1481
|
+
onEditClick(item) {
|
|
1482
|
+
this.$prefillData.set(item);
|
|
1483
|
+
this.$modalOpen.set(true);
|
|
1484
|
+
}
|
|
1485
|
+
onDeleteClick(item) {
|
|
1486
|
+
this.$keyToDelete.set(item.key);
|
|
1487
|
+
this.showDeleteModal$.next(true);
|
|
1488
|
+
}
|
|
1489
|
+
onDeleteConfirm(key) {
|
|
1490
|
+
this.ikoManagementApiService
|
|
1491
|
+
.deleteIkoRepositoryConfig(key)
|
|
1492
|
+
.subscribe(() => this._reload$.next(null));
|
|
1493
|
+
}
|
|
1425
1494
|
disable() {
|
|
1426
1495
|
this.disabled$.next(true);
|
|
1427
|
-
this.form.disable();
|
|
1428
1496
|
}
|
|
1429
1497
|
enable() {
|
|
1430
1498
|
this.disabled$.next(false);
|
|
1431
|
-
this.form.enable();
|
|
1432
1499
|
}
|
|
1433
1500
|
reload() {
|
|
1434
1501
|
this.loading$.next(true);
|
|
1435
1502
|
this._reload$.next(null);
|
|
1436
1503
|
}
|
|
1437
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementApiComponent, deps: [{ token: IkoManagementApiService }, { token: i1$2.PageTitleService }, { token: i3
|
|
1438
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1504
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementApiComponent, deps: [{ token: IkoManagementApiService }, { token: i1$2.PageTitleService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1505
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementApiComponent, isStandalone: true, selector: "valtimo-iko-management-api", 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 [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 (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", styles: [".iko-api-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: LayerModule }, { kind: "ngmodule", type: SelectModule }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: IkoManagementRepositoryModalComponent, selector: "valtimo-iko-management-repository-modal", inputs: ["open", "prefillData"], outputs: ["modalClose"] }] }); }
|
|
1439
1506
|
}
|
|
1440
1507
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementApiComponent, decorators: [{
|
|
1441
1508
|
type: Component,
|
|
@@ -1453,9 +1520,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1453
1520
|
ValtimoCdsModalDirective,
|
|
1454
1521
|
LayerModule,
|
|
1455
1522
|
SelectModule,
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1523
|
+
ConfirmationModalModule,
|
|
1524
|
+
IkoManagementRepositoryModalComponent,
|
|
1525
|
+
], 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 [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 (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", styles: [".iko-api-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1526
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i1$2.PageTitleService }, { type: i3$1.Router }] });
|
|
1459
1527
|
|
|
1460
1528
|
/*
|
|
1461
1529
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1918,8 +1986,8 @@ class IkoManagementSearchFieldModalComponent {
|
|
|
1918
1986
|
this.formGroup.enable();
|
|
1919
1987
|
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
1920
1988
|
}
|
|
1921
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldModalComponent, deps: [{ token: i6.IconService }, { token:
|
|
1922
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementSearchFieldModalComponent, isStandalone: true, selector: "valtimo-iko-management-search-field-modal", inputs: { open: "open", prefillData: "prefillData" }, outputs: { closeEvent: "closeEvent" }, 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<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 <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input cdsLayer data-testid=\"iko-search-key\" cdsText type=\"text\" formControlName=\"key\" />\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", styles: [".valtimo-search-fields-modal__content,.valtimo-search-fields-modal__dropdown-values{display:flex;gap:16px}.valtimo-search-fields-modal__content{flex-direction:column}.valtimo-search-fields-modal__dropdown-values{align-items:flex-end;gap:16px}.valtimo-search-fields-modal__label{display:flex;gap:4px}.valtimo-search-fields-modal__list{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1$2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1989
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldModalComponent, deps: [{ token: i6.IconService }, { token: i1$3.FormBuilder }, { token: i3$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1990
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementSearchFieldModalComponent, isStandalone: true, selector: "valtimo-iko-management-search-field-modal", inputs: { open: "open", prefillData: "prefillData" }, outputs: { closeEvent: "closeEvent" }, 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<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 <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input cdsLayer data-testid=\"iko-search-key\" cdsText type=\"text\" formControlName=\"key\" />\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", styles: [".valtimo-search-fields-modal__content,.valtimo-search-fields-modal__dropdown-values{display:flex;gap:16px}.valtimo-search-fields-modal__content{flex-direction:column}.valtimo-search-fields-modal__dropdown-values{align-items:flex-end;gap:16px}.valtimo-search-fields-modal__label{display:flex;gap:4px}.valtimo-search-fields-modal__list{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1$2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1923
1991
|
}
|
|
1924
1992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldModalComponent, decorators: [{
|
|
1925
1993
|
type: Component,
|
|
@@ -1935,7 +2003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1935
2003
|
TranslateModule,
|
|
1936
2004
|
ValtimoCdsModalDirective,
|
|
1937
2005
|
], 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<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 <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input cdsLayer data-testid=\"iko-search-key\" cdsText type=\"text\" formControlName=\"key\" />\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", styles: [".valtimo-search-fields-modal__content,.valtimo-search-fields-modal__dropdown-values{display:flex;gap:16px}.valtimo-search-fields-modal__content{flex-direction:column}.valtimo-search-fields-modal__dropdown-values{align-items:flex-end;gap:16px}.valtimo-search-fields-modal__label{display:flex;gap:4px}.valtimo-search-fields-modal__list{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1938
|
-
}], ctorParameters: () => [{ type: i6.IconService }, { type:
|
|
2006
|
+
}], ctorParameters: () => [{ type: i6.IconService }, { type: i1$3.FormBuilder }, { type: i3$2.TranslateService }], propDecorators: { open: [{
|
|
1939
2007
|
type: Input,
|
|
1940
2008
|
args: [{ required: true }]
|
|
1941
2009
|
}], prefillData: [{
|
|
@@ -2093,8 +2161,8 @@ class IkoManagementSearchFieldsComponent {
|
|
|
2093
2161
|
});
|
|
2094
2162
|
});
|
|
2095
2163
|
}
|
|
2096
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldsComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoManagementApiService }, { token: i1$2.PageTitleService }, { token: i3.ActivatedRoute }, { token: i3$
|
|
2097
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementSearchFieldsComponent, isStandalone: true, selector: "valtimo-iko-management-search-fields", 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@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 [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]=\"deleteFieldKey$ | 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", 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$
|
|
2164
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldsComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoManagementApiService }, { token: i1$2.PageTitleService }, { token: i3$1.ActivatedRoute }, { token: i3$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2165
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementSearchFieldsComponent, isStandalone: true, selector: "valtimo-iko-management-search-fields", 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@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 [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]=\"deleteFieldKey$ | 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", 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "component", type: IkoManagementSearchFieldModalComponent, selector: "valtimo-iko-management-search-field-modal", inputs: ["open", "prefillData"], outputs: ["closeEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2098
2166
|
}
|
|
2099
2167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldsComponent, decorators: [{
|
|
2100
2168
|
type: Component,
|
|
@@ -2107,7 +2175,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2107
2175
|
TranslateModule,
|
|
2108
2176
|
IkoManagementSearchFieldModalComponent,
|
|
2109
2177
|
], 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@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 [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]=\"deleteFieldKey$ | 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" }]
|
|
2110
|
-
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoManagementApiService }, { type: i1$2.PageTitleService }, { type: i3.ActivatedRoute }, { type: i3$
|
|
2178
|
+
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoManagementApiService }, { type: i1$2.PageTitleService }, { type: i3$1.ActivatedRoute }, { type: i3$2.TranslateService }] });
|
|
2111
2179
|
|
|
2112
2180
|
/*
|
|
2113
2181
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -2143,6 +2211,7 @@ class IkoManagementWidgetsComponent {
|
|
|
2143
2211
|
WidgetType.FIELDS,
|
|
2144
2212
|
WidgetType.COLLECTION,
|
|
2145
2213
|
WidgetType.TABLE,
|
|
2214
|
+
WidgetType.INTERACTIVE_TABLE,
|
|
2146
2215
|
];
|
|
2147
2216
|
this._ikoRepositoryConfig$ = this.params$.pipe(switchMap((params) => this.ikoManagementApiService.getIkoRepositoryConfig(params.apiKey)));
|
|
2148
2217
|
this._ikoTabConfig$ = this.params$.pipe(switchMap((params) => this.ikoManagementApiService.getIkoTab(params.aggregateKey, params.widgetTabKey)));
|
|
@@ -2181,13 +2250,13 @@ class IkoManagementWidgetsComponent {
|
|
|
2181
2250
|
}))
|
|
2182
2251
|
.subscribe());
|
|
2183
2252
|
}
|
|
2184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementWidgetsComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoManagementApiService }, { token: i3.ActivatedRoute }, { token: i3$
|
|
2253
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementWidgetsComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: IkoManagementApiService }, { token: i3$1.ActivatedRoute }, { token: i3$2.TranslateService }, { token: WIDGET_MANAGEMENT_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2185
2254
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementWidgetsComponent, isStandalone: true, selector: "ng-component", providers: [
|
|
2186
2255
|
{
|
|
2187
2256
|
provide: WIDGET_MANAGEMENT_SERVICE,
|
|
2188
2257
|
useClass: IkoWidgetManagementApiService,
|
|
2189
2258
|
},
|
|
2190
|
-
], 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-management\n [params]=\"params$ | async\"\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n></valtimo-widget-management>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: WidgetManagementComponent, selector: "valtimo-widget-management", inputs: ["params", "availableWidgetTypes"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2259
|
+
], 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-management\n [params]=\"params$ | async\"\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n></valtimo-widget-management>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: WidgetManagementComponent, selector: "valtimo-widget-management", inputs: ["params", "availableWidgetTypes", "disableWidthStep", "disableDuplicate", "singleWidget", "disableJsonEditor", "defaultWidth", "disableTitleInput"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2191
2260
|
}
|
|
2192
2261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementWidgetsComponent, decorators: [{
|
|
2193
2262
|
type: Component,
|
|
@@ -2197,7 +2266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2197
2266
|
useClass: IkoWidgetManagementApiService,
|
|
2198
2267
|
},
|
|
2199
2268
|
], 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-management\n [params]=\"params$ | async\"\n [availableWidgetTypes]=\"AVAILABLE_WIDGET_TYPES\"\n></valtimo-widget-management>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2200
|
-
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoManagementApiService }, { type: i3.ActivatedRoute }, { type: i3$
|
|
2269
|
+
}], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: IkoManagementApiService }, { type: i3$1.ActivatedRoute }, { type: i3$2.TranslateService }, { type: undefined, decorators: [{
|
|
2201
2270
|
type: Inject,
|
|
2202
2271
|
args: [WIDGET_MANAGEMENT_SERVICE]
|
|
2203
2272
|
}] }] });
|
|
@@ -2229,37 +2298,55 @@ class IkoManagementSearchActionModalComponent {
|
|
|
2229
2298
|
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
2230
2299
|
}
|
|
2231
2300
|
set prefillData(value) {
|
|
2301
|
+
this.$prefillData.set(value);
|
|
2232
2302
|
if (!value)
|
|
2233
2303
|
return;
|
|
2234
2304
|
this.$modalType.set('edit');
|
|
2235
2305
|
this.formGroup.patchValue(value);
|
|
2236
2306
|
this.formGroup.get('key')?.disable();
|
|
2237
2307
|
}
|
|
2238
|
-
constructor(fb) {
|
|
2308
|
+
constructor(fb, ikoManagementApiService) {
|
|
2239
2309
|
this.fb = fb;
|
|
2310
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
2240
2311
|
this.$modalType = signal('add');
|
|
2241
2312
|
this.$isOpen = signal(false);
|
|
2313
|
+
this.$prefillData = signal(null);
|
|
2242
2314
|
this.modalClose = new EventEmitter();
|
|
2315
|
+
this.propertyFields$ = toObservable(this.$isOpen).pipe(filter((open) => !!open), map$1(() => this.repositoryKey), switchMap((repositoryKey) => this.ikoManagementApiService.getIkoRepositoryConfig(repositoryKey ?? '')), switchMap((repository) => this.ikoManagementApiService.getIkoDataRequestPropertyFields(repository.type)));
|
|
2243
2316
|
this.formGroup = this.fb.group({
|
|
2244
2317
|
key: this.fb.control('', Validators.required),
|
|
2245
2318
|
title: this.fb.control('', Validators.required),
|
|
2246
2319
|
ikoDataAggregateKey: this.fb.control(''),
|
|
2247
|
-
properties: this.fb.
|
|
2320
|
+
properties: this.fb.group({}),
|
|
2248
2321
|
});
|
|
2249
2322
|
}
|
|
2323
|
+
get properties() {
|
|
2324
|
+
const properties = this.formGroup.get('properties');
|
|
2325
|
+
return !properties ? null : properties;
|
|
2326
|
+
}
|
|
2250
2327
|
onCancel() {
|
|
2251
2328
|
this.modalClose.emit(null);
|
|
2252
2329
|
}
|
|
2253
2330
|
onSave() {
|
|
2254
|
-
this.
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2331
|
+
this.propertyFields$.pipe(take(1)).subscribe(fields => {
|
|
2332
|
+
const formData = this.formGroup.getRawValue();
|
|
2333
|
+
fields.forEach(field => {
|
|
2334
|
+
if (formData.properties[field.key] && field.type === 'keyValueList') {
|
|
2335
|
+
formData.properties[field.key] = Array.isArray(formData.properties[field.key])
|
|
2336
|
+
? formData.properties[field.key].reduce((acc, cur) => {
|
|
2337
|
+
if (cur.key) {
|
|
2338
|
+
acc[cur.key] = cur.value;
|
|
2339
|
+
}
|
|
2340
|
+
return acc;
|
|
2341
|
+
}, {})
|
|
2342
|
+
: {};
|
|
2343
|
+
}
|
|
2344
|
+
});
|
|
2345
|
+
this.modalClose.emit(formData);
|
|
2259
2346
|
});
|
|
2260
2347
|
}
|
|
2261
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionModalComponent, deps: [{ token:
|
|
2262
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementSearchActionModalComponent, isStandalone: true, selector: "valtimo-iko-management-search-action-modal", inputs: { open: "open", prefillData: "prefillData", aggregateKey: "aggregateKey" }, outputs: { modalClose: "modalClose" }, 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<cds-modal\n valtimoCdsModal\n [open]=\"$isOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"'ikoManagement.searchActions.' + $modalType() + 'ActionTitle' | translate\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.searchActions.' + $modalType() + '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 <cds-label>\n {{ 'interface.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\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", styles: ["form{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type:
|
|
2348
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionModalComponent, deps: [{ token: i1$3.FormBuilder }, { token: IkoManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2349
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementSearchActionModalComponent, isStandalone: true, selector: "valtimo-iko-management-search-action-modal", inputs: { open: "open", prefillData: "prefillData", repositoryKey: "repositoryKey", aggregateKey: "aggregateKey" }, outputs: { modalClose: "modalClose" }, 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<cds-modal\n valtimoCdsModal\n [open]=\"$isOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"'ikoManagement.searchActions.' + $modalType() + 'ActionTitle' | translate\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.searchActions.' + $modalType() + '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 <cds-label>\n {{ 'interface.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\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", styles: ["form{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: PropertiesFormComponent, selector: "valtimo-iko-management-properties", inputs: ["propertiesFormGroup", "fields", "prefillData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2263
2350
|
}
|
|
2264
2351
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionModalComponent, decorators: [{
|
|
2265
2352
|
type: Component,
|
|
@@ -2272,11 +2359,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2272
2359
|
ValtimoCdsModalDirective,
|
|
2273
2360
|
ButtonModule,
|
|
2274
2361
|
LayerModule,
|
|
2275
|
-
|
|
2276
|
-
|
|
2362
|
+
PropertiesFormComponent,
|
|
2363
|
+
], 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<cds-modal\n valtimoCdsModal\n [open]=\"$isOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"'ikoManagement.searchActions.' + $modalType() + 'ActionTitle' | translate\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'ikoManagement.searchActions.' + $modalType() + '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 <cds-label>\n {{ 'interface.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n cdsLayer\n placeholder=\"{{ 'interface.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\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", styles: ["form{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2364
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: IkoManagementApiService }], propDecorators: { open: [{
|
|
2277
2365
|
type: Input
|
|
2278
2366
|
}], prefillData: [{
|
|
2279
2367
|
type: Input
|
|
2368
|
+
}], repositoryKey: [{
|
|
2369
|
+
type: Input
|
|
2280
2370
|
}], aggregateKey: [{
|
|
2281
2371
|
type: Input
|
|
2282
2372
|
}], modalClose: [{
|
|
@@ -2331,6 +2421,7 @@ class IkoManagementSearchActionsComponent {
|
|
|
2331
2421
|
this.prefillData$ = new BehaviorSubject(null);
|
|
2332
2422
|
this.actionModalOpen$ = new BehaviorSubject(false);
|
|
2333
2423
|
this.deleteModalOpen$ = new BehaviorSubject(false);
|
|
2424
|
+
this.repositoryKey$ = this.route.params.pipe(map((params) => params.apiKey), filter(repositoryKey => !!repositoryKey));
|
|
2334
2425
|
this.aggregateKey$ = this.route.params.pipe(map((params) => params.key), filter(key => !!key));
|
|
2335
2426
|
this._refresh$ = new BehaviorSubject(null);
|
|
2336
2427
|
this.searchActions$ = combineLatest([
|
|
@@ -2368,10 +2459,7 @@ class IkoManagementSearchActionsComponent {
|
|
|
2368
2459
|
return;
|
|
2369
2460
|
this.aggregateKey$
|
|
2370
2461
|
.pipe(switchMap((aggregateKey) => prefillData === null
|
|
2371
|
-
? this.ikoManagementApiService.createIkoDataRequest(aggregateKey, action.key,
|
|
2372
|
-
...action,
|
|
2373
|
-
properties: {},
|
|
2374
|
-
})
|
|
2462
|
+
? this.ikoManagementApiService.createIkoDataRequest(aggregateKey, action.key, action)
|
|
2375
2463
|
: this.ikoManagementApiService.updateIkoDataRequest(aggregateKey, action.key, action)))
|
|
2376
2464
|
.subscribe(() => {
|
|
2377
2465
|
this._refresh$.next(null);
|
|
@@ -2380,8 +2468,8 @@ class IkoManagementSearchActionsComponent {
|
|
|
2380
2468
|
openAddModal() {
|
|
2381
2469
|
this.actionModalOpen$.next(true);
|
|
2382
2470
|
}
|
|
2383
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionsComponent, deps: [{ token: i3.ActivatedRoute }, { token: i3.Router }, { token: IkoManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2384
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementSearchActionsComponent, isStandalone: true, selector: "ng-component", 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@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]=\"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 [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 #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", 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: IkoManagementSearchActionModalComponent, selector: "valtimo-iko-management-search-action-modal", inputs: ["open", "prefillData", "aggregateKey"], outputs: ["modalClose"] }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$
|
|
2471
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionsComponent, deps: [{ token: i3$1.ActivatedRoute }, { token: i3$1.Router }, { token: IkoManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2472
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoManagementSearchActionsComponent, isStandalone: true, selector: "ng-component", 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@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]=\"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 [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 #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", 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: IkoManagementSearchActionModalComponent, selector: "valtimo-iko-management-search-action-modal", inputs: ["open", "prefillData", "repositoryKey", "aggregateKey"], outputs: ["modalClose"] }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }] }); }
|
|
2385
2473
|
}
|
|
2386
2474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionsComponent, decorators: [{
|
|
2387
2475
|
type: Component,
|
|
@@ -2394,8 +2482,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2394
2482
|
IkoManagementSearchActionModalComponent,
|
|
2395
2483
|
TabsModule,
|
|
2396
2484
|
TranslateModule,
|
|
2397
|
-
], 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@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]=\"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 [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 #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" }]
|
|
2398
|
-
}], ctorParameters: () => [{ type: i3.ActivatedRoute }, { type: i3.Router }, { type: IkoManagementApiService }] });
|
|
2485
|
+
], 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@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]=\"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 [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 #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" }]
|
|
2486
|
+
}], ctorParameters: () => [{ type: i3$1.ActivatedRoute }, { type: i3$1.Router }, { type: IkoManagementApiService }] });
|
|
2399
2487
|
|
|
2400
2488
|
/*
|
|
2401
2489
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -2412,21 +2500,298 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2412
2500
|
* See the License for the specific language governing permissions and
|
|
2413
2501
|
* limitations under the License.
|
|
2414
2502
|
*/
|
|
2415
|
-
class
|
|
2416
|
-
|
|
2417
|
-
this.
|
|
2503
|
+
class IkoManagementListModalComponent {
|
|
2504
|
+
set openModal(value) {
|
|
2505
|
+
this.$openModal.set(value);
|
|
2506
|
+
}
|
|
2507
|
+
set selectedListColumn(value) {
|
|
2508
|
+
if (!value)
|
|
2509
|
+
return;
|
|
2510
|
+
this._selectedListColumn = value;
|
|
2511
|
+
this.form.setValue(this.mapListColumnDtoToFormValue(value));
|
|
2512
|
+
this.form.markAsPristine();
|
|
2513
|
+
}
|
|
2514
|
+
set modalMode(value) {
|
|
2515
|
+
this._modalMode = value;
|
|
2516
|
+
if (value === 'add') {
|
|
2517
|
+
this.key.setAsyncValidators(this.keyNotUsedValidator());
|
|
2518
|
+
this.key.enable();
|
|
2519
|
+
}
|
|
2520
|
+
else {
|
|
2521
|
+
this.key.clearAsyncValidators();
|
|
2522
|
+
this.key.disable();
|
|
2523
|
+
}
|
|
2524
|
+
this.key.updateValueAndValidity();
|
|
2525
|
+
}
|
|
2526
|
+
get modalMode() {
|
|
2527
|
+
return this._modalMode;
|
|
2528
|
+
}
|
|
2529
|
+
get title() {
|
|
2530
|
+
return this.form.get('title');
|
|
2531
|
+
}
|
|
2532
|
+
get key() {
|
|
2533
|
+
return this.form.get('key');
|
|
2534
|
+
}
|
|
2535
|
+
get path() {
|
|
2536
|
+
return this.form.get('path');
|
|
2537
|
+
}
|
|
2538
|
+
get displayType() {
|
|
2539
|
+
return this.form.get('displayType');
|
|
2540
|
+
}
|
|
2541
|
+
get sortable() {
|
|
2542
|
+
return this.form.get('sortable');
|
|
2543
|
+
}
|
|
2544
|
+
get defaultSort() {
|
|
2545
|
+
return this.form.get('defaultSort');
|
|
2546
|
+
}
|
|
2547
|
+
get dateFormat() {
|
|
2548
|
+
return this.form.get('dateFormat');
|
|
2549
|
+
}
|
|
2550
|
+
constructor(ikoManagementApiService, formBuilder, route) {
|
|
2418
2551
|
this.ikoManagementApiService = ikoManagementApiService;
|
|
2419
|
-
this.
|
|
2552
|
+
this.formBuilder = formBuilder;
|
|
2553
|
+
this.route = route;
|
|
2420
2554
|
this.$openModal = signal(false);
|
|
2421
|
-
this.
|
|
2422
|
-
this
|
|
2423
|
-
this
|
|
2424
|
-
this
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2555
|
+
this.listColumns = [];
|
|
2556
|
+
this._modalMode = 'add';
|
|
2557
|
+
this.closeModalEvent = new EventEmitter();
|
|
2558
|
+
this.form = this.formBuilder.group({
|
|
2559
|
+
title: this.formBuilder.control('', [Validators.required]),
|
|
2560
|
+
key: this.formBuilder.control('', [Validators.required], [this.keyNotUsedValidator()]),
|
|
2561
|
+
path: this.formBuilder.control('', [Validators.required]),
|
|
2562
|
+
displayType: this.formBuilder.control('', [Validators.required]),
|
|
2563
|
+
sortable: this.formBuilder.control(false, [Validators.required]),
|
|
2564
|
+
defaultSort: this.formBuilder.control(''),
|
|
2565
|
+
dateFormat: this.formBuilder.control(''),
|
|
2566
|
+
tagAmount: this.formBuilder.control(1),
|
|
2567
|
+
booleanDisplayTypeParameters: this.formBuilder.control([
|
|
2568
|
+
{ key: '', value: '' },
|
|
2569
|
+
]),
|
|
2570
|
+
enumDisplayTypeParameters: this.formBuilder.control([
|
|
2571
|
+
{ key: '', value: '' },
|
|
2572
|
+
]),
|
|
2573
|
+
});
|
|
2574
|
+
this.isDateDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.DATE));
|
|
2575
|
+
this.isBooleanDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.BOOLEAN));
|
|
2576
|
+
this.isEnumDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.ENUM));
|
|
2577
|
+
this.isTagsDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.TAGS));
|
|
2578
|
+
this._DISPLAY_TYPES = [
|
|
2579
|
+
ViewType.TEXT,
|
|
2580
|
+
ViewType.DATE,
|
|
2581
|
+
ViewType.BOOLEAN,
|
|
2582
|
+
ViewType.ENUM,
|
|
2583
|
+
ViewType.ARRAY_COUNT,
|
|
2584
|
+
ViewType.UNDERSCORES_TO_SPACES,
|
|
2585
|
+
ViewType.TAGS,
|
|
2586
|
+
ViewType.HIDDEN,
|
|
2587
|
+
];
|
|
2588
|
+
this._dataAggregateKey$ = this.route.params.pipe(map(params => params?.key), filter(key => !!key));
|
|
2589
|
+
this.displayTypeSelectItems = this._DISPLAY_TYPES.map(displayType => ({
|
|
2590
|
+
id: displayType,
|
|
2591
|
+
translationKey: `listColumnDisplayType.${displayType}`,
|
|
2592
|
+
}));
|
|
2593
|
+
this.sortSelectItems = [
|
|
2594
|
+
{
|
|
2595
|
+
translationKey: 'listColumn.sortableAsc',
|
|
2596
|
+
id: 'ASC',
|
|
2597
|
+
},
|
|
2598
|
+
{
|
|
2599
|
+
translationKey: 'listColumn.sortableDesc',
|
|
2600
|
+
id: 'DESC',
|
|
2601
|
+
},
|
|
2602
|
+
];
|
|
2603
|
+
this._subscriptions = new Subscription();
|
|
2604
|
+
this.resetForm = () => {
|
|
2605
|
+
this.form.reset();
|
|
2606
|
+
this.form.markAsPristine();
|
|
2607
|
+
this.form.markAsUntouched();
|
|
2608
|
+
this.form.updateValueAndValidity();
|
|
2609
|
+
};
|
|
2610
|
+
}
|
|
2611
|
+
ngOnInit() {
|
|
2612
|
+
this._subscriptions.add(this.defaultSort.valueChanges.subscribe(defaultSortValue => {
|
|
2613
|
+
if (defaultSortValue) {
|
|
2614
|
+
this.sortable.setValue(true);
|
|
2615
|
+
this.sortable.disable();
|
|
2616
|
+
}
|
|
2617
|
+
else {
|
|
2618
|
+
this.sortable.enable();
|
|
2619
|
+
}
|
|
2620
|
+
}));
|
|
2621
|
+
}
|
|
2622
|
+
ngOnDestroy() {
|
|
2623
|
+
this._subscriptions.unsubscribe();
|
|
2624
|
+
}
|
|
2625
|
+
closeModal() {
|
|
2626
|
+
this.closeModalEvent.emit('close');
|
|
2627
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2628
|
+
}
|
|
2629
|
+
addColumn() {
|
|
2630
|
+
const formValue = this.form.getRawValue();
|
|
2631
|
+
const requestBody = this.getCreateRequestBodyFromFormValue();
|
|
2632
|
+
this.disableForm();
|
|
2633
|
+
this._dataAggregateKey$
|
|
2634
|
+
.pipe(switchMap(dataAggregateKey => this.modalMode === 'add'
|
|
2635
|
+
? this.ikoManagementApiService.createIkoListColumn(dataAggregateKey, formValue.key, requestBody)
|
|
2636
|
+
: this.ikoManagementApiService.updateListColumn(dataAggregateKey, formValue.key, requestBody)))
|
|
2637
|
+
.subscribe({
|
|
2638
|
+
next: () => {
|
|
2639
|
+
this.enableForm();
|
|
2640
|
+
this.closeModalEvent.emit('closeAndRefresh');
|
|
2641
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2642
|
+
},
|
|
2643
|
+
error: () => {
|
|
2644
|
+
this.enableForm();
|
|
2645
|
+
},
|
|
2646
|
+
});
|
|
2647
|
+
}
|
|
2648
|
+
disableForm() {
|
|
2649
|
+
this.form.disable();
|
|
2650
|
+
}
|
|
2651
|
+
enableForm() {
|
|
2652
|
+
this.form.enable();
|
|
2653
|
+
}
|
|
2654
|
+
mapMultiInputValueToEnum(multiInputValues) {
|
|
2655
|
+
return multiInputValues.reduce((acc, curr) => {
|
|
2656
|
+
return { ...acc, [curr.key]: curr.value };
|
|
2657
|
+
}, {});
|
|
2658
|
+
}
|
|
2659
|
+
getCreateRequestBodyFromFormValue() {
|
|
2660
|
+
const { key, path, sortable, displayType, dateFormat, enumDisplayTypeParameters, booleanDisplayTypeParameters, defaultSort, ...rest } = this.form.getRawValue();
|
|
2661
|
+
const displayTypeParameters = (() => {
|
|
2662
|
+
switch (displayType) {
|
|
2663
|
+
case ViewType.DATE:
|
|
2664
|
+
return { dateFormat };
|
|
2665
|
+
case ViewType.ENUM:
|
|
2666
|
+
return {
|
|
2667
|
+
enum: this.mapMultiInputValueToEnum(enumDisplayTypeParameters),
|
|
2668
|
+
};
|
|
2669
|
+
case ViewType.BOOLEAN:
|
|
2670
|
+
return {
|
|
2671
|
+
enum: this.mapMultiInputValueToEnum(booleanDisplayTypeParameters),
|
|
2672
|
+
};
|
|
2673
|
+
default:
|
|
2674
|
+
return {};
|
|
2675
|
+
}
|
|
2676
|
+
})();
|
|
2677
|
+
return {
|
|
2678
|
+
key,
|
|
2679
|
+
path,
|
|
2680
|
+
sortable: Boolean(sortable),
|
|
2681
|
+
...(defaultSort ? { defaultSort: defaultSort } : {}),
|
|
2682
|
+
...rest,
|
|
2683
|
+
...(this.modalMode === 'edit' && {
|
|
2684
|
+
order: this._selectedListColumn.order,
|
|
2685
|
+
}),
|
|
2686
|
+
displayType: {
|
|
2687
|
+
type: displayType,
|
|
2688
|
+
displayTypeParameters,
|
|
2689
|
+
},
|
|
2690
|
+
};
|
|
2691
|
+
}
|
|
2692
|
+
mapEnumToMultiInputValues(enumObj) {
|
|
2693
|
+
if (!enumObj) {
|
|
2694
|
+
return [{ key: '', value: '' }];
|
|
2695
|
+
}
|
|
2696
|
+
return Object.entries(enumObj).map(([key, value]) => ({ key, value }));
|
|
2697
|
+
}
|
|
2698
|
+
mapListColumnDtoToFormValue(dto) {
|
|
2699
|
+
const { key, title, path, sortable, defaultSort, displayType } = dto;
|
|
2700
|
+
const baseFormValue = {
|
|
2701
|
+
key,
|
|
2702
|
+
title: title || '',
|
|
2703
|
+
path,
|
|
2704
|
+
sortable,
|
|
2705
|
+
defaultSort: defaultSort || '',
|
|
2706
|
+
displayType: displayType.type,
|
|
2707
|
+
dateFormat: '',
|
|
2708
|
+
booleanDisplayTypeParameters: [{ key: '', value: '' }],
|
|
2709
|
+
enumDisplayTypeParameters: [{ key: '', value: '' }],
|
|
2710
|
+
tagAmount: 1,
|
|
2711
|
+
};
|
|
2712
|
+
if (displayType.type === ViewType.DATE) {
|
|
2713
|
+
baseFormValue.dateFormat = displayType.displayTypeParameters?.dateFormat || '';
|
|
2714
|
+
}
|
|
2715
|
+
if (displayType.type === ViewType.ENUM) {
|
|
2716
|
+
baseFormValue.enumDisplayTypeParameters = this.mapEnumToMultiInputValues(displayType.displayTypeParameters?.enum);
|
|
2717
|
+
}
|
|
2718
|
+
if (displayType.type === ViewType.BOOLEAN) {
|
|
2719
|
+
baseFormValue.booleanDisplayTypeParameters = this.mapEnumToMultiInputValues(displayType.displayTypeParameters?.enum);
|
|
2720
|
+
}
|
|
2721
|
+
return baseFormValue;
|
|
2722
|
+
}
|
|
2723
|
+
keyNotUsedValidator() {
|
|
2724
|
+
return (control) => {
|
|
2725
|
+
const value = control.value?.trim();
|
|
2726
|
+
if (!value)
|
|
2727
|
+
return of(null);
|
|
2728
|
+
const exists = this.listColumns.some(column => column.key.trim().toLowerCase() === value.toLowerCase());
|
|
2729
|
+
return of(exists ? { keyTaken: true } : null).pipe(delay(200));
|
|
2730
|
+
};
|
|
2731
|
+
}
|
|
2732
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementListModalComponent, deps: [{ token: IkoManagementApiService }, { token: i1$3.FormBuilder }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2733
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementListModalComponent, isStandalone: true, selector: "valtimo-iko-management-list-modal", inputs: { openModal: "openModal", listColumns: "listColumns", selectedListColumn: "selectedListColumn", modalMode: "modalMode" }, outputs: { closeModalEvent: "closeModalEvent" }, 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<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", styles: [".iko-column-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i1$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i6.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: CarbonMultiInputModule }, { kind: "component", type: i1$2.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["addRowText", "addButtonType", "addRowTranslationKey", "arbitraryAmountTitles", "arbitraryValueAmount", "defaultValues", "deleteRowText", "deleteRowTranslationKey", "disabled", "dropdownColumnTitle", "dropdownItems", "dropdownWidth", "fullWidth", "hideAddButton", "hideDeleteButton", "initialAmountOfRows", "keyColumnTitle", "margin", "maxRows", "minimumAmountOfRows", "name", "required", "title", "titleTranslationKey", "tooltip", "type", "valueColumnTitle", "valuePathSelectorCaseDefinitionKey", "valuePathSelectorPrefixes", "valuePathSelectorShowCaseDefinitionSelector", "valuePathSelectorNotation", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1$2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: NumberModule }, { kind: "component", type: i6.NumberComponent, selector: "cds-number, ibm-number", inputs: ["readonly", "theme", "disabled", "skeleton", "invalid", "id", "placeholder", "size", "required", "value", "min", "max", "label", "helperText", "invalidText", "step", "precision", "warn", "warnText", "ariaLabel", "decrementLabel", "incrementLabel", "fluid"], outputs: ["change"] }] }); }
|
|
2734
|
+
}
|
|
2735
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementListModalComponent, decorators: [{
|
|
2736
|
+
type: Component,
|
|
2737
|
+
args: [{ standalone: true, selector: 'valtimo-iko-management-list-modal', imports: [
|
|
2738
|
+
CommonModule,
|
|
2739
|
+
TranslateModule,
|
|
2740
|
+
ModalModule,
|
|
2741
|
+
ValtimoCdsModalDirective,
|
|
2742
|
+
ButtonModule,
|
|
2743
|
+
InputModule,
|
|
2744
|
+
ReactiveFormsModule,
|
|
2745
|
+
LayerModule,
|
|
2746
|
+
SelectModule,
|
|
2747
|
+
ToggleModule,
|
|
2748
|
+
TooltipModule,
|
|
2749
|
+
CarbonMultiInputModule,
|
|
2750
|
+
InputLabelModule,
|
|
2751
|
+
NumberModule,
|
|
2752
|
+
], 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<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", styles: [".iko-column-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2753
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i1$3.FormBuilder }, { type: i3$1.ActivatedRoute }], propDecorators: { openModal: [{
|
|
2754
|
+
type: Input
|
|
2755
|
+
}], listColumns: [{
|
|
2756
|
+
type: Input
|
|
2757
|
+
}], selectedListColumn: [{
|
|
2758
|
+
type: Input
|
|
2759
|
+
}], modalMode: [{
|
|
2760
|
+
type: Input
|
|
2761
|
+
}], closeModalEvent: [{
|
|
2762
|
+
type: Output
|
|
2763
|
+
}] } });
|
|
2764
|
+
|
|
2765
|
+
/*
|
|
2766
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2767
|
+
*
|
|
2768
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2769
|
+
* you may not use this file except in compliance with the License.
|
|
2770
|
+
* You may obtain a copy of the License at
|
|
2771
|
+
*
|
|
2772
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2773
|
+
*
|
|
2774
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2775
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2776
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2777
|
+
* See the License for the specific language governing permissions and
|
|
2778
|
+
* limitations under the License.
|
|
2779
|
+
*/
|
|
2780
|
+
class IkoManagementListComponent {
|
|
2781
|
+
constructor(route, ikoManagementApiService, translateService) {
|
|
2782
|
+
this.route = route;
|
|
2783
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
2784
|
+
this.translateService = translateService;
|
|
2785
|
+
this.$openModal = signal(false);
|
|
2786
|
+
this.openConfirmationModal$ = new BehaviorSubject(false);
|
|
2787
|
+
this.$loading = signal(true);
|
|
2788
|
+
this.$disableInput = signal(true);
|
|
2789
|
+
this.$modalMode = signal('add');
|
|
2790
|
+
this._dataAggregateKey$ = this.route.params.pipe(map(params => params?.key), filter(key => !!key));
|
|
2791
|
+
this.$ikoListColumnDtos = signal([]);
|
|
2792
|
+
this.$selectedListColumn = signal(null);
|
|
2793
|
+
this._reloadColumns$ = new BehaviorSubject(null);
|
|
2794
|
+
this.ikoListColumns$ = combineLatest([
|
|
2430
2795
|
toObservable(this.$ikoListColumnDtos),
|
|
2431
2796
|
this.translateService.stream('key'),
|
|
2432
2797
|
]).pipe(map(([columns]) => columns.map(column => ({
|
|
@@ -2582,8 +2947,8 @@ class IkoManagementListComponent {
|
|
|
2582
2947
|
reloadColumns() {
|
|
2583
2948
|
this._reloadColumns$.next(null);
|
|
2584
2949
|
}
|
|
2585
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementListComponent, deps: [{ token: i3.ActivatedRoute }, { token: IkoManagementApiService }, { token: i3$
|
|
2586
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementListComponent, isStandalone: true, selector: "valtimo-iko-management-list-columns", 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<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", styles: ["::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}::ng-deep .cds--label{width:100%}.center-link{display:flex;align-items:center}.iko-list-columns__actions{display:flex;gap:8px}.list-columns__buttons{display:flex;gap:16px;flex-direction:row;justify-content:flex-end}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$
|
|
2950
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementListComponent, deps: [{ token: i3$1.ActivatedRoute }, { token: IkoManagementApiService }, { token: i3$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2951
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementListComponent, isStandalone: true, selector: "valtimo-iko-management-list-columns", 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<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", styles: ["::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}::ng-deep .cds--label{width:100%}.center-link{display:flex;align-items:center}.iko-list-columns__actions{display:flex;gap:8px}.list-columns__buttons{display:flex;gap:16px;flex-direction:row;justify-content:flex-end}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "component", type: IkoManagementListModalComponent, selector: "valtimo-iko-management-list-modal", inputs: ["openModal", "listColumns", "selectedListColumn", "modalMode"], outputs: ["closeModalEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
|
|
2587
2952
|
}
|
|
2588
2953
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementListComponent, decorators: [{
|
|
2589
2954
|
type: Component,
|
|
@@ -2597,7 +2962,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2597
2962
|
IconModule,
|
|
2598
2963
|
ConfirmationModalModule,
|
|
2599
2964
|
], 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<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", styles: ["::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}::ng-deep .cds--label{width:100%}.center-link{display:flex;align-items:center}.iko-list-columns__actions{display:flex;gap:8px}.list-columns__buttons{display:flex;gap:16px;flex-direction:row;justify-content:flex-end}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2600
|
-
}], ctorParameters: () => [{ type: i3.ActivatedRoute }, { type: IkoManagementApiService }, { type: i3$
|
|
2965
|
+
}], ctorParameters: () => [{ type: i3$1.ActivatedRoute }, { type: IkoManagementApiService }, { type: i3$2.TranslateService }] });
|
|
2601
2966
|
|
|
2602
2967
|
/*
|
|
2603
2968
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -2621,6 +2986,7 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2621
2986
|
set selectedTab(value) {
|
|
2622
2987
|
if (!value)
|
|
2623
2988
|
return;
|
|
2989
|
+
this.$selectedKey.set(value.key);
|
|
2624
2990
|
this.form.setValue({ ...value, title: value.title || '' });
|
|
2625
2991
|
this.form.markAsPristine();
|
|
2626
2992
|
}
|
|
@@ -2645,6 +3011,7 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2645
3011
|
this.route = route;
|
|
2646
3012
|
this.$openModal = signal(false);
|
|
2647
3013
|
this.usedKeys = [];
|
|
3014
|
+
this.$selectedKey = signal('');
|
|
2648
3015
|
this._modalMode = 'add';
|
|
2649
3016
|
this.closeModalEvent = new EventEmitter();
|
|
2650
3017
|
this.form = this.formBuilder.group({
|
|
@@ -2667,7 +3034,7 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2667
3034
|
}
|
|
2668
3035
|
closeModal() {
|
|
2669
3036
|
this.closeModalEvent.emit('close');
|
|
2670
|
-
runAfterCarbonModalClosed
|
|
3037
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2671
3038
|
}
|
|
2672
3039
|
addTab() {
|
|
2673
3040
|
const formValue = this.form.getRawValue();
|
|
@@ -2680,7 +3047,7 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2680
3047
|
next: () => {
|
|
2681
3048
|
this.enableForm();
|
|
2682
3049
|
this.closeModalEvent.emit('closeAndRefresh');
|
|
2683
|
-
runAfterCarbonModalClosed
|
|
3050
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2684
3051
|
},
|
|
2685
3052
|
error: () => {
|
|
2686
3053
|
this.enableForm();
|
|
@@ -2693,8 +3060,8 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2693
3060
|
enableForm() {
|
|
2694
3061
|
this.form.enable();
|
|
2695
3062
|
}
|
|
2696
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabDetailsModalComponent, deps: [{ token: IkoManagementApiService }, { token:
|
|
2697
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementTabDetailsModalComponent, isStandalone: true, selector: "valtimo-iko-management-tab-details-modal", inputs: { openModal: "openModal", usedKeys: "usedKeys", selectedTab: "selectedTab", modalMode: "modalMode" }, outputs: { closeModalEvent: "closeModalEvent" }, 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n title: (modalMode === 'add' ? 'ikoManagement.addTab' : 'ikoManagement.editTab') | 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-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]=\"title.value\"\n [mode]=\"modalMode\"\n >\n </valtimo-auto-key-input>\n\n <v-select\n [invalid]=\"type.dirty && type.invalid\"\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", styles: [".iko-tab-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$
|
|
3063
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabDetailsModalComponent, deps: [{ token: IkoManagementApiService }, { token: i1$3.FormBuilder }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3064
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementTabDetailsModalComponent, isStandalone: true, selector: "valtimo-iko-management-tab-details-modal", inputs: { openModal: "openModal", usedKeys: "usedKeys", selectedTab: "selectedTab", modalMode: "modalMode" }, outputs: { closeModalEvent: "closeModalEvent" }, 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n title: (modalMode === 'add' ? 'ikoManagement.addTab' : 'ikoManagement.editTab') | 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-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", styles: [".iko-tab-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i1$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: CarbonMultiInputModule }, { kind: "ngmodule", type: InputLabelModule }, { kind: "ngmodule", type: NumberModule }, { kind: "component", type: AutoKeyInputComponent, selector: "valtimo-auto-key-input", inputs: ["labelTranslationKey", "placeholderTranslationKey", "mode", "usedKeys", "sourceText"], outputs: ["submitDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2698
3065
|
}
|
|
2699
3066
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabDetailsModalComponent, decorators: [{
|
|
2700
3067
|
type: Component,
|
|
@@ -2702,20 +3069,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2702
3069
|
CommonModule,
|
|
2703
3070
|
TranslateModule,
|
|
2704
3071
|
ModalModule,
|
|
2705
|
-
ValtimoCdsModalDirective
|
|
3072
|
+
ValtimoCdsModalDirective,
|
|
2706
3073
|
ButtonModule,
|
|
2707
3074
|
InputModule,
|
|
2708
3075
|
ReactiveFormsModule,
|
|
2709
3076
|
LayerModule,
|
|
2710
|
-
SelectModule
|
|
3077
|
+
SelectModule,
|
|
2711
3078
|
ToggleModule,
|
|
2712
3079
|
TooltipModule,
|
|
2713
|
-
CarbonMultiInputModule
|
|
2714
|
-
InputLabelModule
|
|
3080
|
+
CarbonMultiInputModule,
|
|
3081
|
+
InputLabelModule,
|
|
2715
3082
|
NumberModule,
|
|
2716
3083
|
AutoKeyInputComponent,
|
|
2717
|
-
], 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n title: (modalMode === 'add' ? 'ikoManagement.addTab' : 'ikoManagement.editTab') | 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-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]=\"title.value\"\n [mode]=\"modalMode\"\n >\n </valtimo-auto-key-input>\n\n <v-select\n [invalid]=\"type.dirty && type.invalid\"\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", styles: [".iko-tab-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2718
|
-
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type:
|
|
3084
|
+
], 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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n title: (modalMode === 'add' ? 'ikoManagement.addTab' : 'ikoManagement.editTab') | 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-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", styles: [".iko-tab-form{display:flex;flex-direction:column;gap:16px;width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3085
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i1$3.FormBuilder }, { type: i3$1.ActivatedRoute }], propDecorators: { openModal: [{
|
|
2719
3086
|
type: Input
|
|
2720
3087
|
}], usedKeys: [{
|
|
2721
3088
|
type: Input
|
|
@@ -2750,7 +3117,7 @@ class IkoManagementTabsComponent {
|
|
|
2750
3117
|
this.router = router;
|
|
2751
3118
|
this.$disableInput = signal(true);
|
|
2752
3119
|
this.$ikoTabDtos = signal([]);
|
|
2753
|
-
this.$usedKeys = computed(() => this.$ikoTabDtos().
|
|
3120
|
+
this.$usedKeys = computed(() => this.$ikoTabDtos().reduce((acc, curr) => [...acc, ...(curr.key === this.$selectedTab()?.key ? [] : [curr.key])], []));
|
|
2754
3121
|
this.$loading = signal(true);
|
|
2755
3122
|
this.$selectedTab = signal(null);
|
|
2756
3123
|
this.$openModal = signal(false);
|
|
@@ -2854,6 +3221,7 @@ class IkoManagementTabsComponent {
|
|
|
2854
3221
|
}
|
|
2855
3222
|
onCreateButtonClicked() {
|
|
2856
3223
|
this.$modalMode.set('add');
|
|
3224
|
+
this.$selectedTab.set({ title: '', key: '', type: '' });
|
|
2857
3225
|
this.openModal();
|
|
2858
3226
|
}
|
|
2859
3227
|
closeModal() {
|
|
@@ -2890,7 +3258,7 @@ class IkoManagementTabsComponent {
|
|
|
2890
3258
|
reloadTabs() {
|
|
2891
3259
|
this._reloadTabs$.next(null);
|
|
2892
3260
|
}
|
|
2893
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabsComponent, deps: [{ token: i3.ActivatedRoute }, { token: IkoManagementApiService }, { token: i3$
|
|
3261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabsComponent, deps: [{ token: i3$1.ActivatedRoute }, { token: IkoManagementApiService }, { token: i3$2.TranslateService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2894
3262
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementTabsComponent, isStandalone: true, selector: "ng-component", 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<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", 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: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: IkoManagementTabDetailsModalComponent, selector: "valtimo-iko-management-tab-details-modal", inputs: ["openModal", "usedKeys", "selectedTab", "modalMode"], outputs: ["closeModalEvent"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
|
|
2895
3263
|
}
|
|
2896
3264
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabsComponent, decorators: [{
|
|
@@ -2906,7 +3274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2906
3274
|
TranslatePipe,
|
|
2907
3275
|
ConfirmationModalModule,
|
|
2908
3276
|
], 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<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" }]
|
|
2909
|
-
}], ctorParameters: () => [{ type: i3.ActivatedRoute }, { type: IkoManagementApiService }, { type: i3$
|
|
3277
|
+
}], ctorParameters: () => [{ type: i3$1.ActivatedRoute }, { type: IkoManagementApiService }, { type: i3$2.TranslateService }, { type: i3$1.Router }] });
|
|
2910
3278
|
|
|
2911
3279
|
/*
|
|
2912
3280
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3041,17 +3409,113 @@ class IkoManagementDetailsComponent {
|
|
|
3041
3409
|
});
|
|
3042
3410
|
});
|
|
3043
3411
|
}
|
|
3044
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementDetailsComponent, deps: [{ token: IkoApiService }, { token: i3.ActivatedRoute }, { token: i1$2.PageTitleService }, { token: i3.Router }, { token: i1$2.BreadcrumbService }, { token: IkoManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementDetailsComponent, isStandalone: true, selector: "valtimo-iko-management-details", viewQueries: [{ propertyName: "dynamicContainer", first: true, predicate: ["tabComponent"], descendants: true, read: ViewContainerRef }], 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<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", styles: [":host ::ng-deep .cds--tab-content{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: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: TabsModule }, { kind: "component", type: i6.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i6.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$
|
|
3412
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementDetailsComponent, deps: [{ token: IkoApiService }, { token: i3$1.ActivatedRoute }, { token: i1$2.PageTitleService }, { token: i3$1.Router }, { token: i1$2.BreadcrumbService }, { token: IkoManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3413
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementDetailsComponent, isStandalone: true, selector: "valtimo-iko-management-details", viewQueries: [{ propertyName: "dynamicContainer", first: true, predicate: ["tabComponent"], descendants: true, read: ViewContainerRef }], 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<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", styles: [":host ::ng-deep .cds--tab-content{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: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: TabsModule }, { kind: "component", type: i6.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i6.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }] }); }
|
|
3046
3414
|
}
|
|
3047
3415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementDetailsComponent, decorators: [{
|
|
3048
3416
|
type: Component,
|
|
3049
3417
|
args: [{ selector: 'valtimo-iko-management-details', standalone: true, imports: [CommonModule, CarbonListModule, TabsModule, TranslateModule], 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<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", styles: [":host ::ng-deep .cds--tab-content{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"] }]
|
|
3050
|
-
}], ctorParameters: () => [{ type: IkoApiService }, { type: i3.ActivatedRoute }, { type: i1$2.PageTitleService }, { type: i3.Router }, { type: i1$2.BreadcrumbService }, { type: IkoManagementApiService }], propDecorators: { dynamicContainer: [{
|
|
3418
|
+
}], ctorParameters: () => [{ type: IkoApiService }, { type: i3$1.ActivatedRoute }, { type: i1$2.PageTitleService }, { type: i3$1.Router }, { type: i1$2.BreadcrumbService }, { type: IkoManagementApiService }], propDecorators: { dynamicContainer: [{
|
|
3051
3419
|
type: ViewChild,
|
|
3052
3420
|
args: ['tabComponent', { static: false, read: ViewContainerRef }]
|
|
3053
3421
|
}] } });
|
|
3054
3422
|
|
|
3423
|
+
class IkoManagementViewModalComponent {
|
|
3424
|
+
set open(value) {
|
|
3425
|
+
this._open$.next(value);
|
|
3426
|
+
if (!value)
|
|
3427
|
+
this.resetForm();
|
|
3428
|
+
}
|
|
3429
|
+
get open$() {
|
|
3430
|
+
return this._open$.asObservable();
|
|
3431
|
+
}
|
|
3432
|
+
set apiKey(value) {
|
|
3433
|
+
if (!value)
|
|
3434
|
+
return;
|
|
3435
|
+
this._apiKey$.next(value);
|
|
3436
|
+
}
|
|
3437
|
+
set prefillData(value) {
|
|
3438
|
+
this.$prefillData.set(value);
|
|
3439
|
+
if (!value)
|
|
3440
|
+
return;
|
|
3441
|
+
this.formGroup.patchValue(value);
|
|
3442
|
+
this.formGroup.get('key')?.disable();
|
|
3443
|
+
}
|
|
3444
|
+
constructor(fb, ikoManagementApiService) {
|
|
3445
|
+
this.fb = fb;
|
|
3446
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
3447
|
+
this._open$ = new BehaviorSubject(false);
|
|
3448
|
+
this._apiKey$ = new BehaviorSubject(null);
|
|
3449
|
+
this.$prefillData = signal(null);
|
|
3450
|
+
this.modalClose = new EventEmitter();
|
|
3451
|
+
this.propertyFields$ = this.open$.pipe(filter((open) => !!open), switchMap(() => this._apiKey$), switchMap((repositoryKey) => this.ikoManagementApiService.getIkoDataAggregateType(repositoryKey ?? '')), switchMap((repository) => this.ikoManagementApiService.getIkoDataAggregatePropertyFields(repository.type)));
|
|
3452
|
+
this.formGroup = this.fb.group({
|
|
3453
|
+
title: this.fb.control('', Validators.required),
|
|
3454
|
+
key: this.fb.control('', Validators.required),
|
|
3455
|
+
properties: this.fb.group({}, Validators.required),
|
|
3456
|
+
});
|
|
3457
|
+
}
|
|
3458
|
+
get properties() {
|
|
3459
|
+
const properties = this.formGroup.get('properties');
|
|
3460
|
+
return !properties ? null : properties;
|
|
3461
|
+
}
|
|
3462
|
+
onCancel() {
|
|
3463
|
+
this.modalClose.emit(null);
|
|
3464
|
+
}
|
|
3465
|
+
onSave() {
|
|
3466
|
+
this.propertyFields$.pipe(take(1)).subscribe(fields => {
|
|
3467
|
+
const formData = this.formGroup.getRawValue();
|
|
3468
|
+
fields.forEach(field => {
|
|
3469
|
+
if (formData.properties[field.key] && field.type === 'keyValueList') {
|
|
3470
|
+
formData.properties[field.key] = Array.isArray(formData.properties[field.key])
|
|
3471
|
+
? formData.properties[field.key].reduce((acc, cur) => {
|
|
3472
|
+
if (cur.key) {
|
|
3473
|
+
acc[cur.key] = cur.value;
|
|
3474
|
+
}
|
|
3475
|
+
return acc;
|
|
3476
|
+
}, {})
|
|
3477
|
+
: {};
|
|
3478
|
+
}
|
|
3479
|
+
});
|
|
3480
|
+
this.modalClose.emit(formData);
|
|
3481
|
+
});
|
|
3482
|
+
}
|
|
3483
|
+
resetForm() {
|
|
3484
|
+
setTimeout(() => {
|
|
3485
|
+
this.formGroup.reset({
|
|
3486
|
+
title: '',
|
|
3487
|
+
key: '',
|
|
3488
|
+
properties: {},
|
|
3489
|
+
});
|
|
3490
|
+
this.formGroup.get('key')?.enable();
|
|
3491
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
3492
|
+
}
|
|
3493
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementViewModalComponent, deps: [{ token: i1$3.FormBuilder }, { token: IkoManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3494
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementViewModalComponent, isStandalone: true, selector: "valtimo-iko-management-view-modal", inputs: { open: "open", apiKey: "apiKey", prefillData: "prefillData" }, outputs: { modalClose: "modalClose" }, ngImport: i0, template: "<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>Add view</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 placeholder=\"{{ 'interface.title' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'interface.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'interface.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\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", styles: ["form{display:flex;flex-direction:column;gap:16px}fieldset{display:flex;gap:16px}::ng-deep label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i6.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i6.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: PropertiesFormComponent, selector: "valtimo-iko-management-properties", inputs: ["propertiesFormGroup", "fields", "prefillData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3495
|
+
}
|
|
3496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementViewModalComponent, decorators: [{
|
|
3497
|
+
type: Component,
|
|
3498
|
+
args: [{ selector: 'valtimo-iko-management-view-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3499
|
+
CommonModule,
|
|
3500
|
+
TranslateModule,
|
|
3501
|
+
ModalModule,
|
|
3502
|
+
ValtimoCdsModalDirective,
|
|
3503
|
+
InputModule,
|
|
3504
|
+
ReactiveFormsModule,
|
|
3505
|
+
ButtonModule,
|
|
3506
|
+
IconModule,
|
|
3507
|
+
PropertiesFormComponent,
|
|
3508
|
+
], template: "<cds-modal valtimoCdsModal [open]=\"open$ | async\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>Add view</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 placeholder=\"{{ 'interface.title' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'interface.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'interface.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\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", styles: ["form{display:flex;flex-direction:column;gap:16px}fieldset{display:flex;gap:16px}::ng-deep label{width:100%}\n"] }]
|
|
3509
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: IkoManagementApiService }], propDecorators: { open: [{
|
|
3510
|
+
type: Input
|
|
3511
|
+
}], apiKey: [{
|
|
3512
|
+
type: Input
|
|
3513
|
+
}], prefillData: [{
|
|
3514
|
+
type: Input
|
|
3515
|
+
}], modalClose: [{
|
|
3516
|
+
type: Output
|
|
3517
|
+
}] } });
|
|
3518
|
+
|
|
3055
3519
|
/*
|
|
3056
3520
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3057
3521
|
*
|
|
@@ -3068,21 +3532,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3068
3532
|
* limitations under the License.
|
|
3069
3533
|
*/
|
|
3070
3534
|
class IkoManagementComponent {
|
|
3071
|
-
constructor(
|
|
3072
|
-
this.ikoApiService = ikoApiService;
|
|
3535
|
+
constructor(ikoManagementApiService, router, route, pageTitleService) {
|
|
3073
3536
|
this.ikoManagementApiService = ikoManagementApiService;
|
|
3074
3537
|
this.router = router;
|
|
3075
3538
|
this.route = route;
|
|
3076
3539
|
this.pageTitleService = pageTitleService;
|
|
3077
|
-
this
|
|
3078
|
-
this.
|
|
3079
|
-
this.
|
|
3540
|
+
this.$loading = signal(true);
|
|
3541
|
+
this.apiKey$ = this.route.params.pipe(map(params => params?.apiKey), filter(key => !!key));
|
|
3542
|
+
this._refresh$ = new BehaviorSubject(null);
|
|
3543
|
+
this.ikoDataAggregates$ = combineLatest([this.apiKey$, this._refresh$]).pipe(tap(() => this.$loading.set(true)), switchMap(([apiKey]) => this.ikoManagementApiService
|
|
3080
3544
|
.getManagementIkoDataAggregates(undefined, undefined, apiKey)
|
|
3081
|
-
.pipe(map(dataAggregatePage => dataAggregatePage.content), tap(() => this.
|
|
3545
|
+
.pipe(map(dataAggregatePage => dataAggregatePage.content), tap(() => this.$loading.set(false)))));
|
|
3546
|
+
this.$modalOpen = signal(false);
|
|
3547
|
+
this.$prefillData = signal(null);
|
|
3548
|
+
this.$keyToDelete = signal(null);
|
|
3549
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
3082
3550
|
this.FIELDS = [
|
|
3083
3551
|
{
|
|
3084
3552
|
key: 'title',
|
|
3085
|
-
label: 'ikoManagement.
|
|
3553
|
+
label: 'ikoManagement.views.title',
|
|
3554
|
+
},
|
|
3555
|
+
];
|
|
3556
|
+
this.ACTION_ITEMS = [
|
|
3557
|
+
{
|
|
3558
|
+
label: 'interface.edit',
|
|
3559
|
+
callback: this.onEditClick.bind(this),
|
|
3560
|
+
},
|
|
3561
|
+
{
|
|
3562
|
+
label: 'interface.delete',
|
|
3563
|
+
callback: this.onDeleteClick.bind(this),
|
|
3564
|
+
type: 'danger',
|
|
3086
3565
|
},
|
|
3087
3566
|
];
|
|
3088
3567
|
}
|
|
@@ -3094,24 +3573,69 @@ class IkoManagementComponent {
|
|
|
3094
3573
|
this.pageTitleService.enableReset();
|
|
3095
3574
|
}
|
|
3096
3575
|
onRowClicked(event) {
|
|
3097
|
-
this.
|
|
3576
|
+
this.apiKey$.pipe(take(1)).subscribe(apiKey => {
|
|
3098
3577
|
this.router.navigate(['iko-management', apiKey, event.key, IKO_MANAGEMENT_TABS[0].key]);
|
|
3099
3578
|
});
|
|
3100
3579
|
}
|
|
3580
|
+
openAddModal() {
|
|
3581
|
+
this.$modalOpen.set(true);
|
|
3582
|
+
}
|
|
3583
|
+
onEditClick(item) {
|
|
3584
|
+
this.$prefillData.set(item);
|
|
3585
|
+
this.$modalOpen.set(true);
|
|
3586
|
+
}
|
|
3587
|
+
onDeleteClick(item) {
|
|
3588
|
+
this.$keyToDelete.set(item.key);
|
|
3589
|
+
this.showDeleteModal$.next(true);
|
|
3590
|
+
}
|
|
3591
|
+
onDeleteConfirm(key) {
|
|
3592
|
+
this.ikoManagementApiService
|
|
3593
|
+
.deleteIkoDataAggregate(key)
|
|
3594
|
+
.subscribe(() => this._refresh$.next(null));
|
|
3595
|
+
}
|
|
3596
|
+
onModalClose(item, ikoRepositoryConfigKey) {
|
|
3597
|
+
this.$modalOpen.set(false);
|
|
3598
|
+
const prefillData = this.$prefillData();
|
|
3599
|
+
this.$prefillData.set(null);
|
|
3600
|
+
if (!item)
|
|
3601
|
+
return;
|
|
3602
|
+
if (prefillData !== null) {
|
|
3603
|
+
this.ikoManagementApiService
|
|
3604
|
+
.updateIkoDataAggregate(item.key, {
|
|
3605
|
+
...item,
|
|
3606
|
+
ikoRepositoryConfigKey,
|
|
3607
|
+
})
|
|
3608
|
+
.pipe(take(1))
|
|
3609
|
+
.subscribe(() => this._refresh$.next(null));
|
|
3610
|
+
return;
|
|
3611
|
+
}
|
|
3612
|
+
this.ikoManagementApiService
|
|
3613
|
+
.createIkoDataAggregate(item.key, { ...item, ikoRepositoryConfigKey })
|
|
3614
|
+
.pipe(take(1))
|
|
3615
|
+
.subscribe(() => this._refresh$.next(null));
|
|
3616
|
+
}
|
|
3101
3617
|
setPageTitle() {
|
|
3102
|
-
this.
|
|
3618
|
+
this.apiKey$
|
|
3103
3619
|
.pipe(take(1), switchMap(apiKey => this.ikoManagementApiService.getIkoRepositoryConfig(apiKey)))
|
|
3104
3620
|
.subscribe(repositoryConfig => {
|
|
3105
3621
|
this.pageTitleService.setCustomPageTitle(repositoryConfig.title);
|
|
3106
3622
|
});
|
|
3107
3623
|
}
|
|
3108
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementComponent, deps: [{ token:
|
|
3109
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementComponent, isStandalone: true, selector: "valtimo-iko-management", 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 [fields]=\"FIELDS\"\n [items]=\"ikoDataAggregates$ | async\"\n [loading]=\"loading$ | async\"\n [
|
|
3624
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementComponent, deps: [{ token: IkoManagementApiService }, { token: i3$1.Router }, { token: i3$1.ActivatedRoute }, { token: i1$2.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3625
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: IkoManagementComponent, isStandalone: true, selector: "valtimo-iko-management", 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 [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [items]=\"ikoDataAggregates$ | async\"\n [loading]=\"$loading()\"\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)=\"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]=\"$modalOpen()\"\n [prefillData]=\"$prefillData()\"\n (modalClose)=\"onModalClose($event, apiKey)\"\n></valtimo-iko-management-view-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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: IkoManagementViewModalComponent, selector: "valtimo-iko-management-view-modal", inputs: ["open", "apiKey", "prefillData"], outputs: ["modalClose"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
|
|
3110
3626
|
}
|
|
3111
3627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementComponent, decorators: [{
|
|
3112
3628
|
type: Component,
|
|
3113
|
-
args: [{ selector: 'valtimo-iko-management', standalone: true, imports: [
|
|
3114
|
-
|
|
3629
|
+
args: [{ selector: 'valtimo-iko-management', standalone: true, imports: [
|
|
3630
|
+
CommonModule,
|
|
3631
|
+
CarbonListModule,
|
|
3632
|
+
ButtonModule,
|
|
3633
|
+
IconModule,
|
|
3634
|
+
IkoManagementViewModalComponent,
|
|
3635
|
+
TranslateModule,
|
|
3636
|
+
ConfirmationModalModule,
|
|
3637
|
+
], 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 [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [items]=\"ikoDataAggregates$ | async\"\n [loading]=\"$loading()\"\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)=\"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]=\"$modalOpen()\"\n [prefillData]=\"$prefillData()\"\n (modalClose)=\"onModalClose($event, apiKey)\"\n></valtimo-iko-management-view-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" }]
|
|
3638
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i3$1.Router }, { type: i3$1.ActivatedRoute }, { type: i1$2.PageTitleService }] });
|
|
3115
3639
|
|
|
3116
3640
|
/*
|
|
3117
3641
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3168,8 +3692,8 @@ class IkoSearchComponent {
|
|
|
3168
3692
|
}
|
|
3169
3693
|
this.router.navigate([`${paramKey}`], { relativeTo: this.route, queryParams });
|
|
3170
3694
|
}
|
|
3171
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoSearchComponent, deps: [{ token: i3.ActivatedRoute }, { token: i3.Router }, { token: i1$2.PageTitleService }, { token: i6.IconService }, { token: IkoApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3172
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoSearchComponent, isStandalone: true, selector: "valtimo-iko-search", 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@if (dataRequests$ | async; as dataRequests) {\n @if (dataRequests.length === 0) {\n <valtimo-no-results [title]=\"'iko.searchFieldsNoResults' | translate\"></valtimo-no-results>\n } @else {\n @for (param of dataRequests; track param.key ?? param.fields?.[0]?.key) {\n <div class=\"query-group\">\n <span class=\"query-group__label\">{{ param.title }}</span>\n\n <div class=\"query-group__row\">\n @for (field of param.searchFields; track field.key) {\n <div class=\"query-group__field\">\n <input\n cdsText\n [id]=\"field.key\"\n [placeholder]=\"field.title\"\n [(ngModel)]=\"formValues[field.key]\"\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 </div>\n </div>\n }\n }\n}\n", styles: [":host{display:flex;flex-direction:column;gap:32px}.query-group{display:flex;flex-direction:column;gap:8px}.query-group__row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.query-group__field{flex:1 1 200px;display:flex;flex-direction:column;min-width:180px}.query-group__field input{width:100%}.query-group__label{font-size:14px;font-weight:600;color:var(--cds-text-primary)}.query-group__search-button{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;height:40px;max-height:40px;min-height:40px;padding:8px 16px;min-width:120px;white-space:nowrap;overflow:hidden}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: "ngmodule", type: InputModule }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
3695
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoSearchComponent, deps: [{ token: i3$1.ActivatedRoute }, { token: i3$1.Router }, { token: i1$2.PageTitleService }, { token: i6.IconService }, { token: IkoApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3696
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: IkoSearchComponent, isStandalone: true, selector: "valtimo-iko-search", 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@if (dataRequests$ | async; as dataRequests) {\n @if (dataRequests.length === 0) {\n <valtimo-no-results [title]=\"'iko.searchFieldsNoResults' | translate\"></valtimo-no-results>\n } @else {\n @for (param of dataRequests; track param.key ?? param.fields?.[0]?.key) {\n <div class=\"query-group\">\n <span class=\"query-group__label\">{{ param.title }}</span>\n\n <div class=\"query-group__row\">\n @for (field of param.searchFields; track field.key) {\n <div class=\"query-group__field\">\n <input\n cdsText\n [id]=\"field.key\"\n [placeholder]=\"field.title\"\n [(ngModel)]=\"formValues[field.key]\"\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 </div>\n </div>\n }\n }\n}\n", styles: [":host{display:flex;flex-direction:column;gap:32px}.query-group{display:flex;flex-direction:column;gap:8px}.query-group__row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.query-group__field{flex:1 1 200px;display:flex;flex-direction:column;min-width:180px}.query-group__field input{width:100%}.query-group__label{font-size:14px;font-weight:600;color:var(--cds-text-primary)}.query-group__search-button{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;height:40px;max-height:40px;min-height:40px;padding:8px 16px;min-width:120px;white-space:nowrap;overflow:hidden}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: "ngmodule", type: InputModule }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }] }); }
|
|
3173
3697
|
}
|
|
3174
3698
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoSearchComponent, decorators: [{
|
|
3175
3699
|
type: Component,
|
|
@@ -3184,7 +3708,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3184
3708
|
IkoListComponent,
|
|
3185
3709
|
CarbonListModule,
|
|
3186
3710
|
], 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@if (dataRequests$ | async; as dataRequests) {\n @if (dataRequests.length === 0) {\n <valtimo-no-results [title]=\"'iko.searchFieldsNoResults' | translate\"></valtimo-no-results>\n } @else {\n @for (param of dataRequests; track param.key ?? param.fields?.[0]?.key) {\n <div class=\"query-group\">\n <span class=\"query-group__label\">{{ param.title }}</span>\n\n <div class=\"query-group__row\">\n @for (field of param.searchFields; track field.key) {\n <div class=\"query-group__field\">\n <input\n cdsText\n [id]=\"field.key\"\n [placeholder]=\"field.title\"\n [(ngModel)]=\"formValues[field.key]\"\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 </div>\n </div>\n }\n }\n}\n", styles: [":host{display:flex;flex-direction:column;gap:32px}.query-group{display:flex;flex-direction:column;gap:8px}.query-group__row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.query-group__field{flex:1 1 200px;display:flex;flex-direction:column;min-width:180px}.query-group__field input{width:100%}.query-group__label{font-size:14px;font-weight:600;color:var(--cds-text-primary)}.query-group__search-button{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;height:40px;max-height:40px;min-height:40px;padding:8px 16px;min-width:120px;white-space:nowrap;overflow:hidden}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3187
|
-
}], ctorParameters: () => [{ type: i3.ActivatedRoute }, { type: i3.Router }, { type: i1$2.PageTitleService }, { type: i6.IconService }, { type: IkoApiService }] });
|
|
3711
|
+
}], ctorParameters: () => [{ type: i3$1.ActivatedRoute }, { type: i3$1.Router }, { type: i1$2.PageTitleService }, { type: i6.IconService }, { type: IkoApiService }] });
|
|
3188
3712
|
|
|
3189
3713
|
/*
|
|
3190
3714
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3276,10 +3800,30 @@ const routes = [
|
|
|
3276
3800
|
roles: [ROLE_ADMIN],
|
|
3277
3801
|
},
|
|
3278
3802
|
},
|
|
3803
|
+
{
|
|
3804
|
+
path: 'iko-management/:apiKey',
|
|
3805
|
+
component: IkoManagementComponent,
|
|
3806
|
+
canActivate: [AuthGuardService],
|
|
3807
|
+
data: {
|
|
3808
|
+
title: 'Iko',
|
|
3809
|
+
roles: [ROLE_ADMIN],
|
|
3810
|
+
customPageTitle: true,
|
|
3811
|
+
},
|
|
3812
|
+
},
|
|
3813
|
+
{
|
|
3814
|
+
path: 'iko-management/:apiKey/:key/:tabKey',
|
|
3815
|
+
component: IkoManagementDetailsComponent,
|
|
3816
|
+
canActivate: [AuthGuardService],
|
|
3817
|
+
data: {
|
|
3818
|
+
customPageTitle: true,
|
|
3819
|
+
title: 'IKO Details',
|
|
3820
|
+
roles: [ROLE_ADMIN],
|
|
3821
|
+
},
|
|
3822
|
+
},
|
|
3279
3823
|
];
|
|
3280
3824
|
class IkoRoutingModule {
|
|
3281
3825
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3282
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: IkoRoutingModule, imports: [CommonModule, i3.RouterModule], exports: [RouterModule] }); }
|
|
3826
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: IkoRoutingModule, imports: [CommonModule, i3$1.RouterModule], exports: [RouterModule] }); }
|
|
3283
3827
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
|
|
3284
3828
|
}
|
|
3285
3829
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoRoutingModule, decorators: [{
|