@valtimo/iko 13.2.1 → 13.3.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 +756 -356
- 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 +3 -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-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/widget-formio/iko-widget-formio.component.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-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/fesm2022/valtimo-iko.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, ViewContainerRef, ViewChild, signal, EventEmitter, Output, Inject,
|
|
2
|
+
import { Injectable, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, ViewContainerRef, ViewChild, 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';
|
|
@@ -8,10 +8,10 @@ import * as i3 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, EllipsisPipe, FormIoModule, RenderInPageHeaderDirective,
|
|
11
|
+
import { CarbonListModule, EllipsisPipe, 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, TabsModule, IconModule, LayerModule, ModalModule, 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
16
|
import { WidgetCollectionComponent, WidgetCustomComponent, WidgetFieldComponent, WidgetFormioComponent, WidgetTableComponent, WidgetType, WidgetContainerComponent, WIDGET_MANAGEMENT_SERVICE, WidgetManagementComponent } from '@valtimo/layout';
|
|
17
17
|
import * as i3$1 from '@ngx-translate/core';
|
|
@@ -21,11 +21,10 @@ 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 i1$3 from '@angular/forms';
|
|
25
25
|
import { Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
26
26
|
import { TrashCan16, InformationFilled16, Search16 } from '@carbon/icons';
|
|
27
27
|
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
28
|
|
|
30
29
|
/*
|
|
31
30
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -178,16 +177,22 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
178
177
|
return this.httpClient.get(this.getApiUrl(`/v1/iko-data-aggregate/${key}`));
|
|
179
178
|
}
|
|
180
179
|
createIkoDataAggregate(key, body) {
|
|
181
|
-
return this.httpClient.post(this.getApiUrl(
|
|
180
|
+
return this.httpClient.post(this.getApiUrl(`management/v1/iko-data-aggregate/${key}`), body);
|
|
182
181
|
}
|
|
183
182
|
updateIkoDataAggregate(key, body) {
|
|
184
|
-
return this.httpClient.put(this.getApiUrl(
|
|
183
|
+
return this.httpClient.put(this.getApiUrl(`management/v1/iko-data-aggregate/${key}`), body);
|
|
185
184
|
}
|
|
186
185
|
deleteIkoDataAggregate(key) {
|
|
187
|
-
return this.httpClient.delete(this.getApiUrl(
|
|
186
|
+
return this.httpClient.delete(this.getApiUrl(`management/v1/iko-data-aggregate/${key}`));
|
|
187
|
+
}
|
|
188
|
+
getIkoRepositoryPropertyFields(type) {
|
|
189
|
+
return this.httpClient.get(this.getApiUrl(`management/v1/iko-property-fields/${type}/repository-config`));
|
|
188
190
|
}
|
|
189
191
|
getIkoDataAggregatePropertyFields(type) {
|
|
190
|
-
return this.httpClient.get(this.getApiUrl(
|
|
192
|
+
return this.httpClient.get(this.getApiUrl(`management/v1/iko-property-fields/${type}/data-aggregate`));
|
|
193
|
+
}
|
|
194
|
+
getIkoDataAggregateType(key) {
|
|
195
|
+
return this.httpClient.get(this.getApiUrl(`/management/v1/iko/${key}`));
|
|
191
196
|
}
|
|
192
197
|
getManagementIkoDataAggregates(key, title, ikoRepositoryConfigKey, page = 0, size = 100, sort = 'title,asc') {
|
|
193
198
|
let params = new HttpParams().set('page', page).set('size', size).set('sort', sort);
|
|
@@ -218,7 +223,7 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
218
223
|
return this.httpClient.delete(this.getApiUrl(`management/v1/iko-data-aggregate/${aggregateKey}/data-request/${key}`));
|
|
219
224
|
}
|
|
220
225
|
getIkoDataRequestPropertyFields(type) {
|
|
221
|
-
return this.httpClient.get(this.getApiUrl(
|
|
226
|
+
return this.httpClient.get(this.getApiUrl(`management/v1/iko-property-fields/${type}/data-request`));
|
|
222
227
|
}
|
|
223
228
|
getIkoRepositoryConfigs() {
|
|
224
229
|
return this.httpClient.get(this.getApiUrl(`/management/v1/iko`));
|
|
@@ -230,10 +235,10 @@ class IkoManagementApiService extends BaseApiService {
|
|
|
230
235
|
return this.httpClient.post(this.getApiUrl(`management/v1/iko/${key}`), body);
|
|
231
236
|
}
|
|
232
237
|
updateIkoRepositoryConfig(key, body) {
|
|
233
|
-
return this.httpClient.put(this.getApiUrl(`/v1/iko/${key}`), body);
|
|
238
|
+
return this.httpClient.put(this.getApiUrl(`/management/v1/iko/${key}`), body);
|
|
234
239
|
}
|
|
235
240
|
deleteIkoRepositoryConfig(key) {
|
|
236
|
-
return this.httpClient.delete(this.getApiUrl(`/v1/iko/${key}`));
|
|
241
|
+
return this.httpClient.delete(this.getApiUrl(`/management/v1/iko/${key}`));
|
|
237
242
|
}
|
|
238
243
|
getIkoRepositoryConfigPropertyFields(type) {
|
|
239
244
|
return this.httpClient.get(this.getApiUrl(`/management/v1/iko-property-fields/${type}/repository-config`));
|
|
@@ -688,11 +693,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
688
693
|
* See the License for the specific language governing permissions and
|
|
689
694
|
* limitations under the License.
|
|
690
695
|
*/
|
|
696
|
+
// TODO: remove component, document id is required, which makes no sense for iko
|
|
691
697
|
class IkoWidgetFormioComponent {
|
|
692
698
|
set widgetConfiguration(value) {
|
|
693
699
|
if (!value)
|
|
694
700
|
return;
|
|
695
|
-
this.layoutService.setWidgetWithExternalData(value.uuid);
|
|
696
701
|
this._widgetConfigurationSubject$.next(value);
|
|
697
702
|
}
|
|
698
703
|
get widgetConfiguration$() {
|
|
@@ -703,7 +708,7 @@ class IkoWidgetFormioComponent {
|
|
|
703
708
|
this._widgetConfigurationSubject$ = new BehaviorSubject(null);
|
|
704
709
|
}
|
|
705
710
|
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 }); }
|
|
711
|
+
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
712
|
}
|
|
708
713
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoWidgetFormioComponent, decorators: [{
|
|
709
714
|
type: Component,
|
|
@@ -1052,266 +1057,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1052
1057
|
* See the License for the specific language governing permissions and
|
|
1053
1058
|
* limitations under the License.
|
|
1054
1059
|
*/
|
|
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();
|
|
1060
|
+
class PropertiesFormComponent {
|
|
1061
|
+
set fields(fields) {
|
|
1062
|
+
if (fields) {
|
|
1063
|
+
this.applyPropertyControls(this.fb, this.propertiesFormGroup, fields);
|
|
1064
|
+
this.$fields.set(fields);
|
|
1075
1065
|
}
|
|
1076
|
-
this.key.updateValueAndValidity();
|
|
1077
|
-
}
|
|
1078
|
-
get modalMode() {
|
|
1079
|
-
return this._modalMode;
|
|
1080
|
-
}
|
|
1081
|
-
get title() {
|
|
1082
|
-
return this.form.get('title');
|
|
1083
|
-
}
|
|
1084
|
-
get key() {
|
|
1085
|
-
return this.form.get('key');
|
|
1086
|
-
}
|
|
1087
|
-
get path() {
|
|
1088
|
-
return this.form.get('path');
|
|
1089
|
-
}
|
|
1090
|
-
get displayType() {
|
|
1091
|
-
return this.form.get('displayType');
|
|
1092
|
-
}
|
|
1093
|
-
get sortable() {
|
|
1094
|
-
return this.form.get('sortable');
|
|
1095
|
-
}
|
|
1096
|
-
get defaultSort() {
|
|
1097
|
-
return this.form.get('defaultSort');
|
|
1098
|
-
}
|
|
1099
|
-
get dateFormat() {
|
|
1100
|
-
return this.form.get('dateFormat');
|
|
1101
1066
|
}
|
|
1102
|
-
|
|
1103
|
-
this.
|
|
1104
|
-
this.formBuilder = formBuilder;
|
|
1105
|
-
this.route = route;
|
|
1106
|
-
this.$openModal = signal(false);
|
|
1107
|
-
this.listColumns = [];
|
|
1108
|
-
this._modalMode = 'add';
|
|
1109
|
-
this.closeModalEvent = new EventEmitter();
|
|
1110
|
-
this.form = this.formBuilder.group({
|
|
1111
|
-
title: this.formBuilder.control('', [Validators.required]),
|
|
1112
|
-
key: this.formBuilder.control('', [Validators.required], [this.keyNotUsedValidator()]),
|
|
1113
|
-
path: this.formBuilder.control('', [Validators.required]),
|
|
1114
|
-
displayType: this.formBuilder.control('', [Validators.required]),
|
|
1115
|
-
sortable: this.formBuilder.control(false, [Validators.required]),
|
|
1116
|
-
defaultSort: this.formBuilder.control(''),
|
|
1117
|
-
dateFormat: this.formBuilder.control(''),
|
|
1118
|
-
tagAmount: this.formBuilder.control(1),
|
|
1119
|
-
booleanDisplayTypeParameters: this.formBuilder.control([
|
|
1120
|
-
{ key: '', value: '' },
|
|
1121
|
-
]),
|
|
1122
|
-
enumDisplayTypeParameters: this.formBuilder.control([
|
|
1123
|
-
{ key: '', value: '' },
|
|
1124
|
-
]),
|
|
1125
|
-
});
|
|
1126
|
-
this.isDateDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.DATE));
|
|
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
|
-
};
|
|
1067
|
+
set prefillData(value) {
|
|
1068
|
+
this.$prefillData.set(value ?? {});
|
|
1162
1069
|
}
|
|
1163
|
-
|
|
1164
|
-
this.
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1070
|
+
constructor(fb) {
|
|
1071
|
+
this.fb = fb;
|
|
1072
|
+
this.$fields = signal([]);
|
|
1073
|
+
this.$prefillData = signal({});
|
|
1074
|
+
this.$selectItems = computed(() => this.$fields()
|
|
1075
|
+
.filter(field => field?.dropdownList)
|
|
1076
|
+
.reduce((acc, field) => {
|
|
1077
|
+
acc[field.key] = field.dropdownList.map(item => ({
|
|
1078
|
+
id: item.first,
|
|
1079
|
+
text: item.second,
|
|
1080
|
+
}));
|
|
1081
|
+
return acc;
|
|
1082
|
+
}, {}));
|
|
1083
|
+
this.combined = computed(() => ({
|
|
1084
|
+
prefill: this.$prefillData(),
|
|
1085
|
+
fields: this.$fields(),
|
|
1172
1086
|
}));
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
}
|
|
1177
|
-
closeModal() {
|
|
1178
|
-
this.closeModalEvent.emit('close');
|
|
1179
|
-
runAfterCarbonModalClosed(this.resetForm);
|
|
1180
|
-
}
|
|
1181
|
-
addColumn() {
|
|
1182
|
-
const formValue = this.form.getRawValue();
|
|
1183
|
-
const requestBody = this.getCreateRequestBodyFromFormValue();
|
|
1184
|
-
this.disableForm();
|
|
1185
|
-
this._dataAggregateKey$
|
|
1186
|
-
.pipe(switchMap(dataAggregateKey => this.modalMode === 'add'
|
|
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
|
-
},
|
|
1087
|
+
this._effect = effect(() => {
|
|
1088
|
+
const { prefill, fields } = this.combined();
|
|
1089
|
+
this.mapPrefillDataToForm(prefill, fields);
|
|
1198
1090
|
});
|
|
1199
1091
|
}
|
|
1200
|
-
|
|
1201
|
-
this.
|
|
1092
|
+
getFa(key) {
|
|
1093
|
+
return this.propertiesFormGroup.get(key);
|
|
1202
1094
|
}
|
|
1203
|
-
|
|
1204
|
-
this.
|
|
1095
|
+
onAddKeyValue(key, required) {
|
|
1096
|
+
this.addKeyValue(this.getFa(key), this.fb, required);
|
|
1205
1097
|
}
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
return { ...acc, [curr.key]: curr.value };
|
|
1209
|
-
}, {});
|
|
1098
|
+
onDeleteRowClick(key, index) {
|
|
1099
|
+
this.getFa(key).removeAt(index);
|
|
1210
1100
|
}
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
case
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1101
|
+
applyPropertyControls(fb, propertiesGroup, fields) {
|
|
1102
|
+
fields.forEach(field => {
|
|
1103
|
+
if (propertiesGroup.contains(field.key))
|
|
1104
|
+
return;
|
|
1105
|
+
switch (field.type) {
|
|
1106
|
+
case 'text':
|
|
1107
|
+
case 'url':
|
|
1108
|
+
case 'integer':
|
|
1109
|
+
case 'dropdown':
|
|
1110
|
+
propertiesGroup.addControl(field.key, fb.control('', field.required ? [Validators.required] : []));
|
|
1111
|
+
break;
|
|
1112
|
+
case 'keyValueList':
|
|
1113
|
+
propertiesGroup.addControl(field.key, fb.array([
|
|
1114
|
+
fb.group({
|
|
1115
|
+
key: fb.control('', Validators.required),
|
|
1116
|
+
value: fb.control('', Validators.required),
|
|
1117
|
+
}),
|
|
1118
|
+
]));
|
|
1119
|
+
break;
|
|
1227
1120
|
}
|
|
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
|
-
};
|
|
1121
|
+
});
|
|
1243
1122
|
}
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1123
|
+
getControlInvalid(controlKey) {
|
|
1124
|
+
const control = this.propertiesFormGroup.get(controlKey);
|
|
1125
|
+
if (!control) {
|
|
1126
|
+
return true;
|
|
1247
1127
|
}
|
|
1248
|
-
return
|
|
1128
|
+
return !control.valid && !control.pristine;
|
|
1249
1129
|
}
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
}
|
|
1270
|
-
if (displayType.type === ViewType.BOOLEAN) {
|
|
1271
|
-
baseFormValue.booleanDisplayTypeParameters = this.mapEnumToMultiInputValues(displayType.displayTypeParameters?.enum);
|
|
1272
|
-
}
|
|
1273
|
-
return baseFormValue;
|
|
1130
|
+
mapPrefillDataToForm(prefillData, propertyFields) {
|
|
1131
|
+
if (!prefillData || !this.propertiesFormGroup)
|
|
1132
|
+
return;
|
|
1133
|
+
propertyFields.forEach((field) => {
|
|
1134
|
+
if (field.type === 'keyValueList') {
|
|
1135
|
+
const keyValueList = !prefillData[field.key]
|
|
1136
|
+
? [{ key: '', value: '' }]
|
|
1137
|
+
: Array.isArray(prefillData[field.key])
|
|
1138
|
+
? prefillData[field.key]
|
|
1139
|
+
: Object.entries(prefillData[field.key]).map(([key, value]) => ({
|
|
1140
|
+
key,
|
|
1141
|
+
value,
|
|
1142
|
+
}));
|
|
1143
|
+
this.getFa(field.key).clear();
|
|
1144
|
+
keyValueList.forEach(item => this.onAddKeyValue(field.key, field.required));
|
|
1145
|
+
prefillData[field.key] = keyValueList;
|
|
1146
|
+
}
|
|
1147
|
+
});
|
|
1148
|
+
this.propertiesFormGroup.patchValue(prefillData);
|
|
1274
1149
|
}
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
const exists = this.listColumns.some(column => column.key.trim().toLowerCase() === value.toLowerCase());
|
|
1281
|
-
return of(exists ? { keyTaken: true } : null).pipe(delay(200));
|
|
1282
|
-
};
|
|
1150
|
+
addKeyValue(arr, fb, required) {
|
|
1151
|
+
arr.push(fb.group({
|
|
1152
|
+
key: fb.control('', required ? Validators.required : []),
|
|
1153
|
+
value: fb.control('', required ? Validators.required : []),
|
|
1154
|
+
}));
|
|
1283
1155
|
}
|
|
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"] }] }); }
|
|
1156
|
+
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 }); }
|
|
1157
|
+
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/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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: 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"] }] }); }
|
|
1286
1158
|
}
|
|
1287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PropertiesFormComponent, decorators: [{
|
|
1288
1160
|
type: Component,
|
|
1289
|
-
args: [{
|
|
1161
|
+
args: [{ selector: 'valtimo-iko-management-properties', standalone: true, imports: [
|
|
1290
1162
|
CommonModule,
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
ValtimoCdsModalDirective,
|
|
1163
|
+
ReactiveFormsModule,
|
|
1164
|
+
TranslatePipe,
|
|
1294
1165
|
ButtonModule,
|
|
1295
1166
|
InputModule,
|
|
1296
|
-
|
|
1167
|
+
IconModule,
|
|
1297
1168
|
LayerModule,
|
|
1298
1169
|
SelectModule,
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
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: [{
|
|
1170
|
+
], 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/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1171
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { propertiesFormGroup: [{
|
|
1172
|
+
type: Input,
|
|
1173
|
+
args: [{ required: true }]
|
|
1174
|
+
}], fields: [{
|
|
1310
1175
|
type: Input
|
|
1311
|
-
}],
|
|
1176
|
+
}], prefillData: [{
|
|
1312
1177
|
type: Input
|
|
1313
|
-
}]
|
|
1314
|
-
|
|
1178
|
+
}] } });
|
|
1179
|
+
|
|
1180
|
+
class IkoManagementRepositoryModalComponent {
|
|
1181
|
+
set open(value) {
|
|
1182
|
+
this._open$.next(value);
|
|
1183
|
+
if (!value)
|
|
1184
|
+
this.resetForm();
|
|
1185
|
+
}
|
|
1186
|
+
get open$() {
|
|
1187
|
+
return this._open$.asObservable();
|
|
1188
|
+
}
|
|
1189
|
+
set prefillData(value) {
|
|
1190
|
+
this.$prefillData.set(value);
|
|
1191
|
+
if (!value)
|
|
1192
|
+
return;
|
|
1193
|
+
this.formGroup.patchValue(value);
|
|
1194
|
+
this.formGroup.get('key')?.disable();
|
|
1195
|
+
}
|
|
1196
|
+
constructor(fb, ikoManagementApiService, configService) {
|
|
1197
|
+
this.fb = fb;
|
|
1198
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
1199
|
+
this.configService = configService;
|
|
1200
|
+
this._open$ = new BehaviorSubject(false);
|
|
1201
|
+
this.$prefillData = signal(null);
|
|
1202
|
+
this.modalClose = new EventEmitter();
|
|
1203
|
+
this.enableIkoType = false;
|
|
1204
|
+
this.disabled$ = new BehaviorSubject(true);
|
|
1205
|
+
this._ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();
|
|
1206
|
+
this.ikoRepositoryTypeSelectItems$ = this._ikoRepositoryTypes$.pipe(map$1(types => Object.keys(types).map(typeKey => ({ id: typeKey, text: types[typeKey] }))), tap(() => {
|
|
1207
|
+
this.disabled$.next(false);
|
|
1208
|
+
}));
|
|
1209
|
+
this.formGroup = this.fb.group({
|
|
1210
|
+
title: this.fb.control('', Validators.required),
|
|
1211
|
+
key: this.fb.control('', Validators.required),
|
|
1212
|
+
type: this.fb.control('', Validators.required),
|
|
1213
|
+
properties: this.fb.group({}, Validators.required),
|
|
1214
|
+
});
|
|
1215
|
+
this.propertyFields$ = this.formGroup
|
|
1216
|
+
.get('type')
|
|
1217
|
+
.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)));
|
|
1218
|
+
this.enableIkoType = this.configService.getFeatureToggle('enableIkoType');
|
|
1219
|
+
}
|
|
1220
|
+
get properties() {
|
|
1221
|
+
const properties = this.formGroup.get('properties');
|
|
1222
|
+
return !properties ? null : properties;
|
|
1223
|
+
}
|
|
1224
|
+
onCancel() {
|
|
1225
|
+
this.modalClose.emit(null);
|
|
1226
|
+
}
|
|
1227
|
+
onSave() {
|
|
1228
|
+
this.modalClose.emit(this.formGroup.getRawValue());
|
|
1229
|
+
}
|
|
1230
|
+
getControlInvalid(controlKey) {
|
|
1231
|
+
if (controlKey === 'type' && !this.enableIkoType) {
|
|
1232
|
+
return false;
|
|
1233
|
+
}
|
|
1234
|
+
const control = this.formGroup.get(controlKey);
|
|
1235
|
+
if (!control) {
|
|
1236
|
+
return true;
|
|
1237
|
+
}
|
|
1238
|
+
return !control.valid && !control.pristine;
|
|
1239
|
+
}
|
|
1240
|
+
resetForm() {
|
|
1241
|
+
setTimeout(() => {
|
|
1242
|
+
this.formGroup.reset({
|
|
1243
|
+
title: '',
|
|
1244
|
+
key: '',
|
|
1245
|
+
type: 'iko',
|
|
1246
|
+
properties: {},
|
|
1247
|
+
});
|
|
1248
|
+
this.formGroup.get('key')?.enable();
|
|
1249
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
1250
|
+
}
|
|
1251
|
+
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 }); }
|
|
1252
|
+
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$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: 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 }); }
|
|
1253
|
+
}
|
|
1254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementRepositoryModalComponent, decorators: [{
|
|
1255
|
+
type: Component,
|
|
1256
|
+
args: [{ selector: 'valtimo-iko-management-repository-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1257
|
+
CommonModule,
|
|
1258
|
+
TranslateModule,
|
|
1259
|
+
ModalModule,
|
|
1260
|
+
ValtimoCdsModalDirective,
|
|
1261
|
+
InputModule,
|
|
1262
|
+
ReactiveFormsModule,
|
|
1263
|
+
ButtonModule,
|
|
1264
|
+
IconModule,
|
|
1265
|
+
PropertiesFormComponent,
|
|
1266
|
+
SelectModule,
|
|
1267
|
+
LayerModule,
|
|
1268
|
+
], 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"] }]
|
|
1269
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: IkoManagementApiService }, { type: i2.ConfigService }], propDecorators: { open: [{
|
|
1270
|
+
type: Input
|
|
1271
|
+
}], prefillData: [{
|
|
1272
|
+
type: Input
|
|
1273
|
+
}], modalClose: [{
|
|
1274
|
+
type: Output
|
|
1315
1275
|
}] } });
|
|
1316
1276
|
|
|
1317
1277
|
/*
|
|
@@ -1330,13 +1290,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1330
1290
|
* limitations under the License.
|
|
1331
1291
|
*/
|
|
1332
1292
|
class IkoManagementApiComponent {
|
|
1333
|
-
constructor(ikoManagementApiService, pageTitleService, router
|
|
1293
|
+
constructor(ikoManagementApiService, pageTitleService, router) {
|
|
1334
1294
|
this.ikoManagementApiService = ikoManagementApiService;
|
|
1335
1295
|
this.pageTitleService = pageTitleService;
|
|
1336
1296
|
this.router = router;
|
|
1337
|
-
this
|
|
1338
|
-
this
|
|
1339
|
-
this
|
|
1297
|
+
this.$modalOpen = signal(false);
|
|
1298
|
+
this.$prefillData = signal(null);
|
|
1299
|
+
this.$keyToDelete = signal(null);
|
|
1300
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
1340
1301
|
this.disabled$ = new BehaviorSubject(true);
|
|
1341
1302
|
this.loading$ = new BehaviorSubject(true);
|
|
1342
1303
|
this._reload$ = new BehaviorSubject(null);
|
|
@@ -1347,95 +1308,81 @@ class IkoManagementApiComponent {
|
|
|
1347
1308
|
label: 'ikoManagement.ikoServer',
|
|
1348
1309
|
},
|
|
1349
1310
|
];
|
|
1350
|
-
this.
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1311
|
+
this.ACTION_ITEMS = [
|
|
1312
|
+
{
|
|
1313
|
+
label: 'interface.edit',
|
|
1314
|
+
callback: this.onEditClick.bind(this),
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
label: 'interface.delete',
|
|
1318
|
+
callback: this.onDeleteClick.bind(this),
|
|
1319
|
+
type: 'danger',
|
|
1320
|
+
},
|
|
1321
|
+
];
|
|
1356
1322
|
this._ikoRepositoryTypes$ = this.ikoManagementApiService.getIkoRepositoryTypes();
|
|
1357
1323
|
this.ikoRepositoryTypeSelectItems$ = this._ikoRepositoryTypes$.pipe(map(types => Object.keys(types).map(typeKey => ({ id: typeKey, text: types[typeKey] }))), tap(() => {
|
|
1358
1324
|
this.disabled$.next(false);
|
|
1359
1325
|
}));
|
|
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
1326
|
}
|
|
1378
1327
|
ngOnInit() {
|
|
1379
1328
|
this.pageTitleService.disableReset();
|
|
1380
1329
|
}
|
|
1381
1330
|
ngOnDestroy() {
|
|
1382
|
-
this._subscriptions.unsubscribe();
|
|
1383
1331
|
this.pageTitleService.enableReset();
|
|
1384
1332
|
}
|
|
1385
1333
|
onRowClicked(event) {
|
|
1386
1334
|
this.router.navigate(['iko-management', event.key]);
|
|
1387
1335
|
}
|
|
1388
1336
|
openModal() {
|
|
1389
|
-
this.
|
|
1337
|
+
this.$modalOpen.set(true);
|
|
1390
1338
|
}
|
|
1391
|
-
closeModal() {
|
|
1392
|
-
this.
|
|
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;
|
|
1403
|
-
}
|
|
1404
|
-
createApiConfig() {
|
|
1405
|
-
const formValue = this.form.getRawValue();
|
|
1339
|
+
closeModal(item) {
|
|
1340
|
+
this.$modalOpen.set(false);
|
|
1406
1341
|
this.disable();
|
|
1407
|
-
this
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
.
|
|
1342
|
+
const prefillData = this.$prefillData();
|
|
1343
|
+
this.$prefillData.set(null);
|
|
1344
|
+
if (!item)
|
|
1345
|
+
return;
|
|
1346
|
+
let saveObservable;
|
|
1347
|
+
if (prefillData !== null) {
|
|
1348
|
+
saveObservable = this.ikoManagementApiService.updateIkoRepositoryConfig(item.key, item);
|
|
1349
|
+
}
|
|
1350
|
+
else {
|
|
1351
|
+
saveObservable = this.ikoManagementApiService.createIkoRepositoryConfig(item.key, item);
|
|
1352
|
+
}
|
|
1353
|
+
saveObservable.pipe(take(1)).subscribe({
|
|
1417
1354
|
next: () => {
|
|
1418
1355
|
this.enable();
|
|
1419
|
-
this.closeModal();
|
|
1420
1356
|
this.reload();
|
|
1421
1357
|
},
|
|
1422
1358
|
error: () => this.enable(),
|
|
1423
1359
|
});
|
|
1424
1360
|
}
|
|
1361
|
+
onEditClick(item) {
|
|
1362
|
+
this.$prefillData.set(item);
|
|
1363
|
+
this.$modalOpen.set(true);
|
|
1364
|
+
}
|
|
1365
|
+
onDeleteClick(item) {
|
|
1366
|
+
this.$keyToDelete.set(item.key);
|
|
1367
|
+
this.showDeleteModal$.next(true);
|
|
1368
|
+
}
|
|
1369
|
+
onDeleteConfirm(key) {
|
|
1370
|
+
this.ikoManagementApiService
|
|
1371
|
+
.deleteIkoRepositoryConfig(key)
|
|
1372
|
+
.subscribe(() => this._reload$.next(null));
|
|
1373
|
+
}
|
|
1425
1374
|
disable() {
|
|
1426
1375
|
this.disabled$.next(true);
|
|
1427
|
-
this.form.disable();
|
|
1428
1376
|
}
|
|
1429
1377
|
enable() {
|
|
1430
1378
|
this.disabled$.next(false);
|
|
1431
|
-
this.form.enable();
|
|
1432
1379
|
}
|
|
1433
1380
|
reload() {
|
|
1434
1381
|
this.loading$.next(true);
|
|
1435
1382
|
this._reload$.next(null);
|
|
1436
1383
|
}
|
|
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.Router }
|
|
1438
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1384
|
+
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.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1385
|
+
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$1.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
1386
|
}
|
|
1440
1387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementApiComponent, decorators: [{
|
|
1441
1388
|
type: Component,
|
|
@@ -1453,9 +1400,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1453
1400
|
ValtimoCdsModalDirective,
|
|
1454
1401
|
LayerModule,
|
|
1455
1402
|
SelectModule,
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1403
|
+
ConfirmationModalModule,
|
|
1404
|
+
IkoManagementRepositoryModalComponent,
|
|
1405
|
+
], 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"] }]
|
|
1406
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i1$2.PageTitleService }, { type: i3.Router }] });
|
|
1459
1407
|
|
|
1460
1408
|
/*
|
|
1461
1409
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1918,8 +1866,8 @@ class IkoManagementSearchFieldModalComponent {
|
|
|
1918
1866
|
this.formGroup.enable();
|
|
1919
1867
|
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
1920
1868
|
}
|
|
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 }); }
|
|
1869
|
+
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$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1870
|
+
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$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1923
1871
|
}
|
|
1924
1872
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchFieldModalComponent, decorators: [{
|
|
1925
1873
|
type: Component,
|
|
@@ -1935,7 +1883,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1935
1883
|
TranslateModule,
|
|
1936
1884
|
ValtimoCdsModalDirective,
|
|
1937
1885
|
], 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:
|
|
1886
|
+
}], ctorParameters: () => [{ type: i6.IconService }, { type: i1$3.FormBuilder }, { type: i3$1.TranslateService }], propDecorators: { open: [{
|
|
1939
1887
|
type: Input,
|
|
1940
1888
|
args: [{ required: true }]
|
|
1941
1889
|
}], prefillData: [{
|
|
@@ -2229,37 +2177,55 @@ class IkoManagementSearchActionModalComponent {
|
|
|
2229
2177
|
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
2230
2178
|
}
|
|
2231
2179
|
set prefillData(value) {
|
|
2180
|
+
this.$prefillData.set(value);
|
|
2232
2181
|
if (!value)
|
|
2233
2182
|
return;
|
|
2234
2183
|
this.$modalType.set('edit');
|
|
2235
2184
|
this.formGroup.patchValue(value);
|
|
2236
2185
|
this.formGroup.get('key')?.disable();
|
|
2237
2186
|
}
|
|
2238
|
-
constructor(fb) {
|
|
2187
|
+
constructor(fb, ikoManagementApiService) {
|
|
2239
2188
|
this.fb = fb;
|
|
2189
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
2240
2190
|
this.$modalType = signal('add');
|
|
2241
2191
|
this.$isOpen = signal(false);
|
|
2192
|
+
this.$prefillData = signal(null);
|
|
2242
2193
|
this.modalClose = new EventEmitter();
|
|
2194
|
+
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
2195
|
this.formGroup = this.fb.group({
|
|
2244
2196
|
key: this.fb.control('', Validators.required),
|
|
2245
2197
|
title: this.fb.control('', Validators.required),
|
|
2246
2198
|
ikoDataAggregateKey: this.fb.control(''),
|
|
2247
|
-
properties: this.fb.
|
|
2199
|
+
properties: this.fb.group({}),
|
|
2248
2200
|
});
|
|
2249
2201
|
}
|
|
2202
|
+
get properties() {
|
|
2203
|
+
const properties = this.formGroup.get('properties');
|
|
2204
|
+
return !properties ? null : properties;
|
|
2205
|
+
}
|
|
2250
2206
|
onCancel() {
|
|
2251
2207
|
this.modalClose.emit(null);
|
|
2252
2208
|
}
|
|
2253
2209
|
onSave() {
|
|
2254
|
-
this.
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2210
|
+
this.propertyFields$.pipe(take(1)).subscribe(fields => {
|
|
2211
|
+
const formData = this.formGroup.getRawValue();
|
|
2212
|
+
fields.forEach(field => {
|
|
2213
|
+
if (formData.properties[field.key] && field.type === 'keyValueList') {
|
|
2214
|
+
formData.properties[field.key] = Array.isArray(formData.properties[field.key])
|
|
2215
|
+
? formData.properties[field.key].reduce((acc, cur) => {
|
|
2216
|
+
if (cur.key) {
|
|
2217
|
+
acc[cur.key] = cur.value;
|
|
2218
|
+
}
|
|
2219
|
+
return acc;
|
|
2220
|
+
}, {})
|
|
2221
|
+
: {};
|
|
2222
|
+
}
|
|
2223
|
+
});
|
|
2224
|
+
this.modalClose.emit(formData);
|
|
2259
2225
|
});
|
|
2260
2226
|
}
|
|
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:
|
|
2227
|
+
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 }); }
|
|
2228
|
+
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$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: 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
2229
|
}
|
|
2264
2230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionModalComponent, decorators: [{
|
|
2265
2231
|
type: Component,
|
|
@@ -2272,11 +2238,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2272
2238
|
ValtimoCdsModalDirective,
|
|
2273
2239
|
ButtonModule,
|
|
2274
2240
|
LayerModule,
|
|
2275
|
-
|
|
2276
|
-
|
|
2241
|
+
PropertiesFormComponent,
|
|
2242
|
+
], 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"] }]
|
|
2243
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: IkoManagementApiService }], propDecorators: { open: [{
|
|
2277
2244
|
type: Input
|
|
2278
2245
|
}], prefillData: [{
|
|
2279
2246
|
type: Input
|
|
2247
|
+
}], repositoryKey: [{
|
|
2248
|
+
type: Input
|
|
2280
2249
|
}], aggregateKey: [{
|
|
2281
2250
|
type: Input
|
|
2282
2251
|
}], modalClose: [{
|
|
@@ -2331,6 +2300,7 @@ class IkoManagementSearchActionsComponent {
|
|
|
2331
2300
|
this.prefillData$ = new BehaviorSubject(null);
|
|
2332
2301
|
this.actionModalOpen$ = new BehaviorSubject(false);
|
|
2333
2302
|
this.deleteModalOpen$ = new BehaviorSubject(false);
|
|
2303
|
+
this.repositoryKey$ = this.route.params.pipe(map((params) => params.apiKey), filter(repositoryKey => !!repositoryKey));
|
|
2334
2304
|
this.aggregateKey$ = this.route.params.pipe(map((params) => params.key), filter(key => !!key));
|
|
2335
2305
|
this._refresh$ = new BehaviorSubject(null);
|
|
2336
2306
|
this.searchActions$ = combineLatest([
|
|
@@ -2368,10 +2338,7 @@ class IkoManagementSearchActionsComponent {
|
|
|
2368
2338
|
return;
|
|
2369
2339
|
this.aggregateKey$
|
|
2370
2340
|
.pipe(switchMap((aggregateKey) => prefillData === null
|
|
2371
|
-
? this.ikoManagementApiService.createIkoDataRequest(aggregateKey, action.key,
|
|
2372
|
-
...action,
|
|
2373
|
-
properties: {},
|
|
2374
|
-
})
|
|
2341
|
+
? this.ikoManagementApiService.createIkoDataRequest(aggregateKey, action.key, action)
|
|
2375
2342
|
: this.ikoManagementApiService.updateIkoDataRequest(aggregateKey, action.key, action)))
|
|
2376
2343
|
.subscribe(() => {
|
|
2377
2344
|
this._refresh$.next(null);
|
|
@@ -2381,7 +2348,7 @@ class IkoManagementSearchActionsComponent {
|
|
|
2381
2348
|
this.actionModalOpen$.next(true);
|
|
2382
2349
|
}
|
|
2383
2350
|
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$1.TranslatePipe, name: "translate" }] }); }
|
|
2351
|
+
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$1.TranslatePipe, name: "translate" }] }); }
|
|
2385
2352
|
}
|
|
2386
2353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementSearchActionsComponent, decorators: [{
|
|
2387
2354
|
type: Component,
|
|
@@ -2394,9 +2361,286 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2394
2361
|
IkoManagementSearchActionModalComponent,
|
|
2395
2362
|
TabsModule,
|
|
2396
2363
|
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" }]
|
|
2364
|
+
], 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" }]
|
|
2398
2365
|
}], ctorParameters: () => [{ type: i3.ActivatedRoute }, { type: i3.Router }, { type: IkoManagementApiService }] });
|
|
2399
2366
|
|
|
2367
|
+
/*
|
|
2368
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2369
|
+
*
|
|
2370
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2371
|
+
* you may not use this file except in compliance with the License.
|
|
2372
|
+
* You may obtain a copy of the License at
|
|
2373
|
+
*
|
|
2374
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2375
|
+
*
|
|
2376
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2377
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2378
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2379
|
+
* See the License for the specific language governing permissions and
|
|
2380
|
+
* limitations under the License.
|
|
2381
|
+
*/
|
|
2382
|
+
class IkoManagementListModalComponent {
|
|
2383
|
+
set openModal(value) {
|
|
2384
|
+
this.$openModal.set(value);
|
|
2385
|
+
}
|
|
2386
|
+
set selectedListColumn(value) {
|
|
2387
|
+
if (!value)
|
|
2388
|
+
return;
|
|
2389
|
+
this._selectedListColumn = value;
|
|
2390
|
+
this.form.setValue(this.mapListColumnDtoToFormValue(value));
|
|
2391
|
+
this.form.markAsPristine();
|
|
2392
|
+
}
|
|
2393
|
+
set modalMode(value) {
|
|
2394
|
+
this._modalMode = value;
|
|
2395
|
+
if (value === 'add') {
|
|
2396
|
+
this.key.setAsyncValidators(this.keyNotUsedValidator());
|
|
2397
|
+
this.key.enable();
|
|
2398
|
+
}
|
|
2399
|
+
else {
|
|
2400
|
+
this.key.clearAsyncValidators();
|
|
2401
|
+
this.key.disable();
|
|
2402
|
+
}
|
|
2403
|
+
this.key.updateValueAndValidity();
|
|
2404
|
+
}
|
|
2405
|
+
get modalMode() {
|
|
2406
|
+
return this._modalMode;
|
|
2407
|
+
}
|
|
2408
|
+
get title() {
|
|
2409
|
+
return this.form.get('title');
|
|
2410
|
+
}
|
|
2411
|
+
get key() {
|
|
2412
|
+
return this.form.get('key');
|
|
2413
|
+
}
|
|
2414
|
+
get path() {
|
|
2415
|
+
return this.form.get('path');
|
|
2416
|
+
}
|
|
2417
|
+
get displayType() {
|
|
2418
|
+
return this.form.get('displayType');
|
|
2419
|
+
}
|
|
2420
|
+
get sortable() {
|
|
2421
|
+
return this.form.get('sortable');
|
|
2422
|
+
}
|
|
2423
|
+
get defaultSort() {
|
|
2424
|
+
return this.form.get('defaultSort');
|
|
2425
|
+
}
|
|
2426
|
+
get dateFormat() {
|
|
2427
|
+
return this.form.get('dateFormat');
|
|
2428
|
+
}
|
|
2429
|
+
constructor(ikoManagementApiService, formBuilder, route) {
|
|
2430
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
2431
|
+
this.formBuilder = formBuilder;
|
|
2432
|
+
this.route = route;
|
|
2433
|
+
this.$openModal = signal(false);
|
|
2434
|
+
this.listColumns = [];
|
|
2435
|
+
this._modalMode = 'add';
|
|
2436
|
+
this.closeModalEvent = new EventEmitter();
|
|
2437
|
+
this.form = this.formBuilder.group({
|
|
2438
|
+
title: this.formBuilder.control('', [Validators.required]),
|
|
2439
|
+
key: this.formBuilder.control('', [Validators.required], [this.keyNotUsedValidator()]),
|
|
2440
|
+
path: this.formBuilder.control('', [Validators.required]),
|
|
2441
|
+
displayType: this.formBuilder.control('', [Validators.required]),
|
|
2442
|
+
sortable: this.formBuilder.control(false, [Validators.required]),
|
|
2443
|
+
defaultSort: this.formBuilder.control(''),
|
|
2444
|
+
dateFormat: this.formBuilder.control(''),
|
|
2445
|
+
tagAmount: this.formBuilder.control(1),
|
|
2446
|
+
booleanDisplayTypeParameters: this.formBuilder.control([
|
|
2447
|
+
{ key: '', value: '' },
|
|
2448
|
+
]),
|
|
2449
|
+
enumDisplayTypeParameters: this.formBuilder.control([
|
|
2450
|
+
{ key: '', value: '' },
|
|
2451
|
+
]),
|
|
2452
|
+
});
|
|
2453
|
+
this.isDateDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.DATE));
|
|
2454
|
+
this.isBooleanDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.BOOLEAN));
|
|
2455
|
+
this.isEnumDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.ENUM));
|
|
2456
|
+
this.isTagsDisplayType$ = this.displayType.valueChanges.pipe(map(type => type === ViewType.TAGS));
|
|
2457
|
+
this._DISPLAY_TYPES = [
|
|
2458
|
+
ViewType.TEXT,
|
|
2459
|
+
ViewType.DATE,
|
|
2460
|
+
ViewType.BOOLEAN,
|
|
2461
|
+
ViewType.ENUM,
|
|
2462
|
+
ViewType.ARRAY_COUNT,
|
|
2463
|
+
ViewType.UNDERSCORES_TO_SPACES,
|
|
2464
|
+
ViewType.TAGS,
|
|
2465
|
+
ViewType.HIDDEN,
|
|
2466
|
+
];
|
|
2467
|
+
this._dataAggregateKey$ = this.route.params.pipe(map(params => params?.key), filter(key => !!key));
|
|
2468
|
+
this.displayTypeSelectItems = this._DISPLAY_TYPES.map(displayType => ({
|
|
2469
|
+
id: displayType,
|
|
2470
|
+
translationKey: `listColumnDisplayType.${displayType}`,
|
|
2471
|
+
}));
|
|
2472
|
+
this.sortSelectItems = [
|
|
2473
|
+
{
|
|
2474
|
+
translationKey: 'listColumn.sortableAsc',
|
|
2475
|
+
id: 'ASC',
|
|
2476
|
+
},
|
|
2477
|
+
{
|
|
2478
|
+
translationKey: 'listColumn.sortableDesc',
|
|
2479
|
+
id: 'DESC',
|
|
2480
|
+
},
|
|
2481
|
+
];
|
|
2482
|
+
this._subscriptions = new Subscription();
|
|
2483
|
+
this.resetForm = () => {
|
|
2484
|
+
this.form.reset();
|
|
2485
|
+
this.form.markAsPristine();
|
|
2486
|
+
this.form.markAsUntouched();
|
|
2487
|
+
this.form.updateValueAndValidity();
|
|
2488
|
+
};
|
|
2489
|
+
}
|
|
2490
|
+
ngOnInit() {
|
|
2491
|
+
this._subscriptions.add(this.defaultSort.valueChanges.subscribe(defaultSortValue => {
|
|
2492
|
+
if (defaultSortValue) {
|
|
2493
|
+
this.sortable.setValue(true);
|
|
2494
|
+
this.sortable.disable();
|
|
2495
|
+
}
|
|
2496
|
+
else {
|
|
2497
|
+
this.sortable.enable();
|
|
2498
|
+
}
|
|
2499
|
+
}));
|
|
2500
|
+
}
|
|
2501
|
+
ngOnDestroy() {
|
|
2502
|
+
this._subscriptions.unsubscribe();
|
|
2503
|
+
}
|
|
2504
|
+
closeModal() {
|
|
2505
|
+
this.closeModalEvent.emit('close');
|
|
2506
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2507
|
+
}
|
|
2508
|
+
addColumn() {
|
|
2509
|
+
const formValue = this.form.getRawValue();
|
|
2510
|
+
const requestBody = this.getCreateRequestBodyFromFormValue();
|
|
2511
|
+
this.disableForm();
|
|
2512
|
+
this._dataAggregateKey$
|
|
2513
|
+
.pipe(switchMap(dataAggregateKey => this.modalMode === 'add'
|
|
2514
|
+
? this.ikoManagementApiService.createIkoListColumn(dataAggregateKey, formValue.key, requestBody)
|
|
2515
|
+
: this.ikoManagementApiService.updateListColumn(dataAggregateKey, formValue.key, requestBody)))
|
|
2516
|
+
.subscribe({
|
|
2517
|
+
next: () => {
|
|
2518
|
+
this.enableForm();
|
|
2519
|
+
this.closeModalEvent.emit('closeAndRefresh');
|
|
2520
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2521
|
+
},
|
|
2522
|
+
error: () => {
|
|
2523
|
+
this.enableForm();
|
|
2524
|
+
},
|
|
2525
|
+
});
|
|
2526
|
+
}
|
|
2527
|
+
disableForm() {
|
|
2528
|
+
this.form.disable();
|
|
2529
|
+
}
|
|
2530
|
+
enableForm() {
|
|
2531
|
+
this.form.enable();
|
|
2532
|
+
}
|
|
2533
|
+
mapMultiInputValueToEnum(multiInputValues) {
|
|
2534
|
+
return multiInputValues.reduce((acc, curr) => {
|
|
2535
|
+
return { ...acc, [curr.key]: curr.value };
|
|
2536
|
+
}, {});
|
|
2537
|
+
}
|
|
2538
|
+
getCreateRequestBodyFromFormValue() {
|
|
2539
|
+
const { key, path, sortable, displayType, dateFormat, enumDisplayTypeParameters, booleanDisplayTypeParameters, defaultSort, ...rest } = this.form.getRawValue();
|
|
2540
|
+
const displayTypeParameters = (() => {
|
|
2541
|
+
switch (displayType) {
|
|
2542
|
+
case ViewType.DATE:
|
|
2543
|
+
return { dateFormat };
|
|
2544
|
+
case ViewType.ENUM:
|
|
2545
|
+
return {
|
|
2546
|
+
enum: this.mapMultiInputValueToEnum(enumDisplayTypeParameters),
|
|
2547
|
+
};
|
|
2548
|
+
case ViewType.BOOLEAN:
|
|
2549
|
+
return {
|
|
2550
|
+
enum: this.mapMultiInputValueToEnum(booleanDisplayTypeParameters),
|
|
2551
|
+
};
|
|
2552
|
+
default:
|
|
2553
|
+
return {};
|
|
2554
|
+
}
|
|
2555
|
+
})();
|
|
2556
|
+
return {
|
|
2557
|
+
key,
|
|
2558
|
+
path,
|
|
2559
|
+
sortable: Boolean(sortable),
|
|
2560
|
+
...(defaultSort ? { defaultSort: defaultSort } : {}),
|
|
2561
|
+
...rest,
|
|
2562
|
+
...(this.modalMode === 'edit' && {
|
|
2563
|
+
order: this._selectedListColumn.order,
|
|
2564
|
+
}),
|
|
2565
|
+
displayType: {
|
|
2566
|
+
type: displayType,
|
|
2567
|
+
displayTypeParameters,
|
|
2568
|
+
},
|
|
2569
|
+
};
|
|
2570
|
+
}
|
|
2571
|
+
mapEnumToMultiInputValues(enumObj) {
|
|
2572
|
+
if (!enumObj) {
|
|
2573
|
+
return [{ key: '', value: '' }];
|
|
2574
|
+
}
|
|
2575
|
+
return Object.entries(enumObj).map(([key, value]) => ({ key, value }));
|
|
2576
|
+
}
|
|
2577
|
+
mapListColumnDtoToFormValue(dto) {
|
|
2578
|
+
const { key, title, path, sortable, defaultSort, displayType } = dto;
|
|
2579
|
+
const baseFormValue = {
|
|
2580
|
+
key,
|
|
2581
|
+
title: title || '',
|
|
2582
|
+
path,
|
|
2583
|
+
sortable,
|
|
2584
|
+
defaultSort: defaultSort || '',
|
|
2585
|
+
displayType: displayType.type,
|
|
2586
|
+
dateFormat: '',
|
|
2587
|
+
booleanDisplayTypeParameters: [{ key: '', value: '' }],
|
|
2588
|
+
enumDisplayTypeParameters: [{ key: '', value: '' }],
|
|
2589
|
+
tagAmount: 1,
|
|
2590
|
+
};
|
|
2591
|
+
if (displayType.type === ViewType.DATE) {
|
|
2592
|
+
baseFormValue.dateFormat = displayType.displayTypeParameters?.dateFormat || '';
|
|
2593
|
+
}
|
|
2594
|
+
if (displayType.type === ViewType.ENUM) {
|
|
2595
|
+
baseFormValue.enumDisplayTypeParameters = this.mapEnumToMultiInputValues(displayType.displayTypeParameters?.enum);
|
|
2596
|
+
}
|
|
2597
|
+
if (displayType.type === ViewType.BOOLEAN) {
|
|
2598
|
+
baseFormValue.booleanDisplayTypeParameters = this.mapEnumToMultiInputValues(displayType.displayTypeParameters?.enum);
|
|
2599
|
+
}
|
|
2600
|
+
return baseFormValue;
|
|
2601
|
+
}
|
|
2602
|
+
keyNotUsedValidator() {
|
|
2603
|
+
return (control) => {
|
|
2604
|
+
const value = control.value?.trim();
|
|
2605
|
+
if (!value)
|
|
2606
|
+
return of(null);
|
|
2607
|
+
const exists = this.listColumns.some(column => column.key.trim().toLowerCase() === value.toLowerCase());
|
|
2608
|
+
return of(exists ? { keyTaken: true } : null).pipe(delay(200));
|
|
2609
|
+
};
|
|
2610
|
+
}
|
|
2611
|
+
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.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2612
|
+
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: 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"] }] }); }
|
|
2613
|
+
}
|
|
2614
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementListModalComponent, decorators: [{
|
|
2615
|
+
type: Component,
|
|
2616
|
+
args: [{ standalone: true, selector: 'valtimo-iko-management-list-modal', imports: [
|
|
2617
|
+
CommonModule,
|
|
2618
|
+
TranslateModule,
|
|
2619
|
+
ModalModule,
|
|
2620
|
+
ValtimoCdsModalDirective,
|
|
2621
|
+
ButtonModule,
|
|
2622
|
+
InputModule,
|
|
2623
|
+
ReactiveFormsModule,
|
|
2624
|
+
LayerModule,
|
|
2625
|
+
SelectModule,
|
|
2626
|
+
ToggleModule,
|
|
2627
|
+
TooltipModule,
|
|
2628
|
+
CarbonMultiInputModule,
|
|
2629
|
+
InputLabelModule,
|
|
2630
|
+
NumberModule,
|
|
2631
|
+
], 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"] }]
|
|
2632
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i1$3.FormBuilder }, { type: i3.ActivatedRoute }], propDecorators: { openModal: [{
|
|
2633
|
+
type: Input
|
|
2634
|
+
}], listColumns: [{
|
|
2635
|
+
type: Input
|
|
2636
|
+
}], selectedListColumn: [{
|
|
2637
|
+
type: Input
|
|
2638
|
+
}], modalMode: [{
|
|
2639
|
+
type: Input
|
|
2640
|
+
}], closeModalEvent: [{
|
|
2641
|
+
type: Output
|
|
2642
|
+
}] } });
|
|
2643
|
+
|
|
2400
2644
|
/*
|
|
2401
2645
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2402
2646
|
*
|
|
@@ -2667,7 +2911,7 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2667
2911
|
}
|
|
2668
2912
|
closeModal() {
|
|
2669
2913
|
this.closeModalEvent.emit('close');
|
|
2670
|
-
runAfterCarbonModalClosed
|
|
2914
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2671
2915
|
}
|
|
2672
2916
|
addTab() {
|
|
2673
2917
|
const formValue = this.form.getRawValue();
|
|
@@ -2680,7 +2924,7 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2680
2924
|
next: () => {
|
|
2681
2925
|
this.enableForm();
|
|
2682
2926
|
this.closeModalEvent.emit('closeAndRefresh');
|
|
2683
|
-
runAfterCarbonModalClosed
|
|
2927
|
+
runAfterCarbonModalClosed(this.resetForm);
|
|
2684
2928
|
},
|
|
2685
2929
|
error: () => {
|
|
2686
2930
|
this.enableForm();
|
|
@@ -2693,8 +2937,8 @@ class IkoManagementTabDetailsModalComponent {
|
|
|
2693
2937
|
enableForm() {
|
|
2694
2938
|
this.form.enable();
|
|
2695
2939
|
}
|
|
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$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
|
|
2940
|
+
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.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2941
|
+
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$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: 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2698
2942
|
}
|
|
2699
2943
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementTabDetailsModalComponent, decorators: [{
|
|
2700
2944
|
type: Component,
|
|
@@ -2702,20 +2946,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2702
2946
|
CommonModule,
|
|
2703
2947
|
TranslateModule,
|
|
2704
2948
|
ModalModule,
|
|
2705
|
-
ValtimoCdsModalDirective
|
|
2949
|
+
ValtimoCdsModalDirective,
|
|
2706
2950
|
ButtonModule,
|
|
2707
2951
|
InputModule,
|
|
2708
2952
|
ReactiveFormsModule,
|
|
2709
2953
|
LayerModule,
|
|
2710
|
-
SelectModule
|
|
2954
|
+
SelectModule,
|
|
2711
2955
|
ToggleModule,
|
|
2712
2956
|
TooltipModule,
|
|
2713
|
-
CarbonMultiInputModule
|
|
2714
|
-
InputLabelModule
|
|
2957
|
+
CarbonMultiInputModule,
|
|
2958
|
+
InputLabelModule,
|
|
2715
2959
|
NumberModule,
|
|
2716
2960
|
AutoKeyInputComponent,
|
|
2717
2961
|
], 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:
|
|
2962
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i1$3.FormBuilder }, { type: i3.ActivatedRoute }], propDecorators: { openModal: [{
|
|
2719
2963
|
type: Input
|
|
2720
2964
|
}], usedKeys: [{
|
|
2721
2965
|
type: Input
|
|
@@ -3052,6 +3296,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3052
3296
|
args: ['tabComponent', { static: false, read: ViewContainerRef }]
|
|
3053
3297
|
}] } });
|
|
3054
3298
|
|
|
3299
|
+
class IkoManagementViewModalComponent {
|
|
3300
|
+
set open(value) {
|
|
3301
|
+
this._open$.next(value);
|
|
3302
|
+
if (!value)
|
|
3303
|
+
this.resetForm();
|
|
3304
|
+
}
|
|
3305
|
+
get open$() {
|
|
3306
|
+
return this._open$.asObservable();
|
|
3307
|
+
}
|
|
3308
|
+
set apiKey(value) {
|
|
3309
|
+
if (!value)
|
|
3310
|
+
return;
|
|
3311
|
+
this._apiKey$.next(value);
|
|
3312
|
+
}
|
|
3313
|
+
set prefillData(value) {
|
|
3314
|
+
this.$prefillData.set(value);
|
|
3315
|
+
if (!value)
|
|
3316
|
+
return;
|
|
3317
|
+
this.formGroup.patchValue(value);
|
|
3318
|
+
this.formGroup.get('key')?.disable();
|
|
3319
|
+
}
|
|
3320
|
+
constructor(fb, ikoManagementApiService) {
|
|
3321
|
+
this.fb = fb;
|
|
3322
|
+
this.ikoManagementApiService = ikoManagementApiService;
|
|
3323
|
+
this._open$ = new BehaviorSubject(false);
|
|
3324
|
+
this._apiKey$ = new BehaviorSubject(null);
|
|
3325
|
+
this.$prefillData = signal(null);
|
|
3326
|
+
this.modalClose = new EventEmitter();
|
|
3327
|
+
this.propertyFields$ = this.open$.pipe(filter((open) => !!open), switchMap(() => this._apiKey$), switchMap((repositoryKey) => this.ikoManagementApiService.getIkoDataAggregateType(repositoryKey ?? '')), switchMap((repository) => this.ikoManagementApiService.getIkoDataAggregatePropertyFields(repository.type)));
|
|
3328
|
+
this.formGroup = this.fb.group({
|
|
3329
|
+
title: this.fb.control('', Validators.required),
|
|
3330
|
+
key: this.fb.control('', Validators.required),
|
|
3331
|
+
properties: this.fb.group({}, Validators.required),
|
|
3332
|
+
});
|
|
3333
|
+
}
|
|
3334
|
+
get properties() {
|
|
3335
|
+
const properties = this.formGroup.get('properties');
|
|
3336
|
+
return !properties ? null : properties;
|
|
3337
|
+
}
|
|
3338
|
+
onCancel() {
|
|
3339
|
+
this.modalClose.emit(null);
|
|
3340
|
+
}
|
|
3341
|
+
onSave() {
|
|
3342
|
+
this.propertyFields$.pipe(take(1)).subscribe(fields => {
|
|
3343
|
+
const formData = this.formGroup.getRawValue();
|
|
3344
|
+
fields.forEach(field => {
|
|
3345
|
+
if (formData.properties[field.key] && field.type === 'keyValueList') {
|
|
3346
|
+
formData.properties[field.key] = Array.isArray(formData.properties[field.key])
|
|
3347
|
+
? formData.properties[field.key].reduce((acc, cur) => {
|
|
3348
|
+
if (cur.key) {
|
|
3349
|
+
acc[cur.key] = cur.value;
|
|
3350
|
+
}
|
|
3351
|
+
return acc;
|
|
3352
|
+
}, {})
|
|
3353
|
+
: {};
|
|
3354
|
+
}
|
|
3355
|
+
});
|
|
3356
|
+
this.modalClose.emit(formData);
|
|
3357
|
+
});
|
|
3358
|
+
}
|
|
3359
|
+
resetForm() {
|
|
3360
|
+
setTimeout(() => {
|
|
3361
|
+
this.formGroup.reset({
|
|
3362
|
+
title: '',
|
|
3363
|
+
key: '',
|
|
3364
|
+
properties: {},
|
|
3365
|
+
});
|
|
3366
|
+
this.formGroup.get('key')?.enable();
|
|
3367
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
3368
|
+
}
|
|
3369
|
+
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 }); }
|
|
3370
|
+
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$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: 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 }); }
|
|
3371
|
+
}
|
|
3372
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementViewModalComponent, decorators: [{
|
|
3373
|
+
type: Component,
|
|
3374
|
+
args: [{ selector: 'valtimo-iko-management-view-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3375
|
+
CommonModule,
|
|
3376
|
+
TranslateModule,
|
|
3377
|
+
ModalModule,
|
|
3378
|
+
ValtimoCdsModalDirective,
|
|
3379
|
+
InputModule,
|
|
3380
|
+
ReactiveFormsModule,
|
|
3381
|
+
ButtonModule,
|
|
3382
|
+
IconModule,
|
|
3383
|
+
PropertiesFormComponent,
|
|
3384
|
+
], 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"] }]
|
|
3385
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: IkoManagementApiService }], propDecorators: { open: [{
|
|
3386
|
+
type: Input
|
|
3387
|
+
}], apiKey: [{
|
|
3388
|
+
type: Input
|
|
3389
|
+
}], prefillData: [{
|
|
3390
|
+
type: Input
|
|
3391
|
+
}], modalClose: [{
|
|
3392
|
+
type: Output
|
|
3393
|
+
}] } });
|
|
3394
|
+
|
|
3055
3395
|
/*
|
|
3056
3396
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3057
3397
|
*
|
|
@@ -3068,21 +3408,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3068
3408
|
* limitations under the License.
|
|
3069
3409
|
*/
|
|
3070
3410
|
class IkoManagementComponent {
|
|
3071
|
-
constructor(
|
|
3072
|
-
this.ikoApiService = ikoApiService;
|
|
3411
|
+
constructor(ikoManagementApiService, router, route, pageTitleService) {
|
|
3073
3412
|
this.ikoManagementApiService = ikoManagementApiService;
|
|
3074
3413
|
this.router = router;
|
|
3075
3414
|
this.route = route;
|
|
3076
3415
|
this.pageTitleService = pageTitleService;
|
|
3077
|
-
this
|
|
3078
|
-
this.
|
|
3079
|
-
this.
|
|
3416
|
+
this.$loading = signal(true);
|
|
3417
|
+
this.apiKey$ = this.route.params.pipe(map(params => params?.apiKey), filter(key => !!key));
|
|
3418
|
+
this._refresh$ = new BehaviorSubject(null);
|
|
3419
|
+
this.ikoDataAggregates$ = combineLatest([this.apiKey$, this._refresh$]).pipe(tap(() => this.$loading.set(true)), switchMap(([apiKey]) => this.ikoManagementApiService
|
|
3080
3420
|
.getManagementIkoDataAggregates(undefined, undefined, apiKey)
|
|
3081
|
-
.pipe(map(dataAggregatePage => dataAggregatePage.content), tap(() => this.
|
|
3421
|
+
.pipe(map(dataAggregatePage => dataAggregatePage.content), tap(() => this.$loading.set(false)))));
|
|
3422
|
+
this.$modalOpen = signal(false);
|
|
3423
|
+
this.$prefillData = signal(null);
|
|
3424
|
+
this.$keyToDelete = signal(null);
|
|
3425
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
3082
3426
|
this.FIELDS = [
|
|
3083
3427
|
{
|
|
3084
3428
|
key: 'title',
|
|
3085
|
-
label: 'ikoManagement.
|
|
3429
|
+
label: 'ikoManagement.views.title',
|
|
3430
|
+
},
|
|
3431
|
+
];
|
|
3432
|
+
this.ACTION_ITEMS = [
|
|
3433
|
+
{
|
|
3434
|
+
label: 'interface.edit',
|
|
3435
|
+
callback: this.onEditClick.bind(this),
|
|
3436
|
+
},
|
|
3437
|
+
{
|
|
3438
|
+
label: 'interface.delete',
|
|
3439
|
+
callback: this.onDeleteClick.bind(this),
|
|
3440
|
+
type: 'danger',
|
|
3086
3441
|
},
|
|
3087
3442
|
];
|
|
3088
3443
|
}
|
|
@@ -3094,24 +3449,69 @@ class IkoManagementComponent {
|
|
|
3094
3449
|
this.pageTitleService.enableReset();
|
|
3095
3450
|
}
|
|
3096
3451
|
onRowClicked(event) {
|
|
3097
|
-
this.
|
|
3452
|
+
this.apiKey$.pipe(take(1)).subscribe(apiKey => {
|
|
3098
3453
|
this.router.navigate(['iko-management', apiKey, event.key, IKO_MANAGEMENT_TABS[0].key]);
|
|
3099
3454
|
});
|
|
3100
3455
|
}
|
|
3456
|
+
openAddModal() {
|
|
3457
|
+
this.$modalOpen.set(true);
|
|
3458
|
+
}
|
|
3459
|
+
onEditClick(item) {
|
|
3460
|
+
this.$prefillData.set(item);
|
|
3461
|
+
this.$modalOpen.set(true);
|
|
3462
|
+
}
|
|
3463
|
+
onDeleteClick(item) {
|
|
3464
|
+
this.$keyToDelete.set(item.key);
|
|
3465
|
+
this.showDeleteModal$.next(true);
|
|
3466
|
+
}
|
|
3467
|
+
onDeleteConfirm(key) {
|
|
3468
|
+
this.ikoManagementApiService
|
|
3469
|
+
.deleteIkoDataAggregate(key)
|
|
3470
|
+
.subscribe(() => this._refresh$.next(null));
|
|
3471
|
+
}
|
|
3472
|
+
onModalClose(item, ikoRepositoryConfigKey) {
|
|
3473
|
+
this.$modalOpen.set(false);
|
|
3474
|
+
const prefillData = this.$prefillData();
|
|
3475
|
+
this.$prefillData.set(null);
|
|
3476
|
+
if (!item)
|
|
3477
|
+
return;
|
|
3478
|
+
if (prefillData !== null) {
|
|
3479
|
+
this.ikoManagementApiService
|
|
3480
|
+
.updateIkoDataAggregate(item.key, {
|
|
3481
|
+
...item,
|
|
3482
|
+
ikoRepositoryConfigKey,
|
|
3483
|
+
})
|
|
3484
|
+
.pipe(take(1))
|
|
3485
|
+
.subscribe(() => this._refresh$.next(null));
|
|
3486
|
+
return;
|
|
3487
|
+
}
|
|
3488
|
+
this.ikoManagementApiService
|
|
3489
|
+
.createIkoDataAggregate(item.key, { ...item, ikoRepositoryConfigKey })
|
|
3490
|
+
.pipe(take(1))
|
|
3491
|
+
.subscribe(() => this._refresh$.next(null));
|
|
3492
|
+
}
|
|
3101
3493
|
setPageTitle() {
|
|
3102
|
-
this.
|
|
3494
|
+
this.apiKey$
|
|
3103
3495
|
.pipe(take(1), switchMap(apiKey => this.ikoManagementApiService.getIkoRepositoryConfig(apiKey)))
|
|
3104
3496
|
.subscribe(repositoryConfig => {
|
|
3105
3497
|
this.pageTitleService.setCustomPageTitle(repositoryConfig.title);
|
|
3106
3498
|
});
|
|
3107
3499
|
}
|
|
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 [
|
|
3500
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementComponent, deps: [{ token: IkoManagementApiService }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i1$2.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3501
|
+
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$1.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
3502
|
}
|
|
3111
3503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoManagementComponent, decorators: [{
|
|
3112
3504
|
type: Component,
|
|
3113
|
-
args: [{ selector: 'valtimo-iko-management', standalone: true, imports: [
|
|
3114
|
-
|
|
3505
|
+
args: [{ selector: 'valtimo-iko-management', standalone: true, imports: [
|
|
3506
|
+
CommonModule,
|
|
3507
|
+
CarbonListModule,
|
|
3508
|
+
ButtonModule,
|
|
3509
|
+
IconModule,
|
|
3510
|
+
IkoManagementViewModalComponent,
|
|
3511
|
+
TranslateModule,
|
|
3512
|
+
ConfirmationModalModule,
|
|
3513
|
+
], 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" }]
|
|
3514
|
+
}], ctorParameters: () => [{ type: IkoManagementApiService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i1$2.PageTitleService }] });
|
|
3115
3515
|
|
|
3116
3516
|
/*
|
|
3117
3517
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3169,7 +3569,7 @@ class IkoSearchComponent {
|
|
|
3169
3569
|
this.router.navigate([`${paramKey}`], { relativeTo: this.route, queryParams });
|
|
3170
3570
|
}
|
|
3171
3571
|
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:
|
|
3572
|
+
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$1.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
3573
|
}
|
|
3174
3574
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IkoSearchComponent, decorators: [{
|
|
3175
3575
|
type: Component,
|