@valtimo/process-link 13.42.0 → 13.44.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.
Files changed (40) hide show
  1. package/fesm2022/valtimo-process-link.mjs +368 -81
  2. package/fesm2022/valtimo-process-link.mjs.map +1 -1
  3. package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts +4 -0
  4. package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts.map +1 -1
  5. package/lib/components/configure-building-block-plugins/configure-building-block-plugins.component.d.ts.map +1 -1
  6. package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts +4 -2
  7. package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts.map +1 -1
  8. package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts +3 -0
  9. package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts.map +1 -1
  10. package/lib/components/process-link-modal/process-link-modal.component.d.ts +11 -0
  11. package/lib/components/process-link-modal/process-link-modal.component.d.ts.map +1 -1
  12. package/lib/components/select-plugin-action/select-plugin-action.component.d.ts +6 -0
  13. package/lib/components/select-plugin-action/select-plugin-action.component.d.ts.map +1 -1
  14. package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts +5 -0
  15. package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts.map +1 -1
  16. package/lib/constants/injection-tokens.d.ts +3 -3
  17. package/lib/constants/injection-tokens.d.ts.map +1 -1
  18. package/lib/constants/process-link.test-ids.d.ts +43 -0
  19. package/lib/constants/process-link.test-ids.d.ts.map +1 -1
  20. package/lib/directives/index.d.ts +2 -0
  21. package/lib/directives/index.d.ts.map +1 -0
  22. package/lib/directives/read-only-content.directive.d.ts +24 -0
  23. package/lib/directives/read-only-content.directive.d.ts.map +1 -0
  24. package/lib/models/form-flow.model.d.ts +1 -17
  25. package/lib/models/form-flow.model.d.ts.map +1 -1
  26. package/lib/models/process-link.model.d.ts +3 -3
  27. package/lib/models/process-link.model.d.ts.map +1 -1
  28. package/lib/process-link.module.d.ts +10 -9
  29. package/lib/process-link.module.d.ts.map +1 -1
  30. package/lib/services/building-block-state.service.d.ts +10 -0
  31. package/lib/services/building-block-state.service.d.ts.map +1 -1
  32. package/lib/services/form-flow-component.service.d.ts +1 -12
  33. package/lib/services/form-flow-component.service.d.ts.map +1 -1
  34. package/lib/services/process-link-building-block-api.service.d.ts +1 -0
  35. package/lib/services/process-link-building-block-api.service.d.ts.map +1 -1
  36. package/lib/services/process-link-state.service.d.ts +3 -0
  37. package/lib/services/process-link-state.service.d.ts.map +1 -1
  38. package/lib/services/process-link.service.d.ts +1 -0
  39. package/lib/services/process-link.service.d.ts.map +1 -1
  40. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, InjectionToken, Optional, Inject, Component, EventEmitter, Output, Input, ViewChild, ChangeDetectionStrategy, NgModule, ViewContainerRef } from '@angular/core';
2
+ import { Injectable, InjectionToken, Optional, Inject, Component, EventEmitter, Output, Input, ViewChild, Directive, ChangeDetectionStrategy, NgModule, ViewContainerRef } from '@angular/core';
3
3
  import { catchError, of, BehaviorSubject, combineLatest, map, Subject, switchMap, filter, Subscription, forkJoin, startWith, mergeMap, tap, withLatestFrom as withLatestFrom$1, take as take$1, shareReplay, distinctUntilChanged } from 'rxjs';
4
4
  import * as i2 from '@angular/common/http';
5
5
  import { HttpHeaders, HttpParams } from '@angular/common/http';
@@ -8,25 +8,27 @@ import { BaseApiService, InterceptorSkip, getCaseManagementRouteParams, getBuild
8
8
  import { map as map$1, take, switchMap as switchMap$1, withLatestFrom, filter as filter$1, catchError as catchError$1, tap as tap$1 } from 'rxjs/operators';
9
9
  import * as i1$1 from '@valtimo/plugin';
10
10
  import { PluginTranslatePipeModule, PluginConfigurationContainerModule } from '@valtimo/plugin';
11
+ import * as i1$5 from '@valtimo/form-flow-management';
12
+ import { FormFlowComponentService } from '@valtimo/form-flow-management';
13
+ export { FORM_FLOW_COMPONENT_TOKEN, FormFlowComponentService } from '@valtimo/form-flow-management';
11
14
  import * as i3 from '@ngx-translate/core';
12
15
  import { TranslateModule } from '@ngx-translate/core';
13
- import * as i3$1 from '@angular/common';
16
+ import * as i4 from '@angular/common';
14
17
  import { CommonModule } from '@angular/common';
15
- import * as i4 from 'carbon-components-angular';
18
+ import * as i5 from 'carbon-components-angular';
16
19
  import { ComboBoxModule, RadioModule, InputModule, ButtonModule, IconModule, LayerModule, ModalModule as ModalModule$1, ProgressIndicatorModule, LoadingModule, StructuredListModule, TilesModule, SelectModule as SelectModule$1, ToggleModule, ToggletipModule, NotificationModule } from 'carbon-components-angular';
17
20
  import * as i1$2 from '@angular/forms';
18
21
  import { FormControl, Validators, FormGroup, FormArray, ReactiveFormsModule, FormsModule } from '@angular/forms';
19
22
  import { Upload16 } from '@carbon/icons';
20
23
  import * as i2$1 from '@valtimo/components';
21
24
  import { ValuePathSelectorPrefix, ValuePathSelectorComponent, InputLabelModule, SelectModule, FormioOptionsImpl, ModalModule, StepperModule, VModalModule, ParagraphModule, TooltipModule, TooltipIconModule, FormIoModule, ValtimoCdsModalDirective, RenderInPageHeaderDirective, CarbonMultiInputModule, RemoveClassnamesDirective } from '@valtimo/components';
22
- import * as i5 from 'carbon-components-angular/dropdown';
25
+ import * as i6 from 'carbon-components-angular/dropdown';
23
26
  import NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';
24
27
  import * as i1$3 from '@valtimo/process';
25
- import * as i3$2 from '@angular/router';
28
+ import * as i3$1 from '@angular/router';
26
29
  import { RouterModule } from '@angular/router';
27
30
  import { AuthGuardService } from '@valtimo/security';
28
31
  import * as i1$4 from '@valtimo/form';
29
- import * as i1$5 from '@valtimo/form-flow-management';
30
32
 
31
33
  /*
32
34
  * Copyright 2015-2026 Ritense BV, the Netherlands.
@@ -97,9 +99,13 @@ class ProcessLinkBuildingBlockApiService extends BaseApiService {
97
99
  this.configService = configService;
98
100
  this.httpClient = httpClient;
99
101
  }
102
+ getAllVersionsForBuildingBlock(key) {
103
+ return this.getVersionsForBuildingBlock(key, 0, 5, true);
104
+ }
100
105
  getVersionsForBuildingBlock(key, page = 0, size = 5, all = false) {
101
- const allParam = all ? 'all=true' : '';
102
- return this.httpClient.get(this.getApiUrl(`management/v1/building-block/${key}/version?page=${page}&size=${size}${allParam}`));
106
+ return this.httpClient.get(this.getApiUrl(`management/v1/building-block/${key}/version`), {
107
+ params: { page, size, all },
108
+ });
103
109
  }
104
110
  getPluginDefinitionsForBuildingBlock(key, versionTag) {
105
111
  return this.httpClient.get(this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/plugin`));
@@ -242,12 +248,10 @@ class BuildingBlockStateService {
242
248
  if (!key)
243
249
  return;
244
250
  this._versionSubscription = this.processLinkBuildingBlockApiService
245
- .getVersionsForBuildingBlock(key)
251
+ .getAllVersionsForBuildingBlock(key)
246
252
  .subscribe({
247
253
  next: versions => {
248
- this._versions$.next(versions.content.map(version => {
249
- return version.versionTag;
250
- }) ?? []);
254
+ this._versions$.next(versions.content?.map(version => version.versionTag) ?? []);
251
255
  if (initialVersionTag) {
252
256
  this.setDefinitionVersionTag(initialVersionTag, true);
253
257
  }
@@ -283,6 +287,24 @@ class BuildingBlockStateService {
283
287
  this.loadFields(key, versionTag);
284
288
  }
285
289
  }
290
+ /**
291
+ * Switches building block version, keeping the plugin, input and output mappings the user entered;
292
+ * only the parts absent from the new version are dropped once its requirements and fields load.
293
+ */
294
+ changeDefinitionVersionTag(versionTag) {
295
+ this._definitionVersionTag$.next(versionTag);
296
+ this.clearFields();
297
+ const key = this._definitionKey$.getValue();
298
+ if (!key || !versionTag) {
299
+ // No version means no fields to prune against, so clear the mappings.
300
+ this.clearPluginRequirements();
301
+ this.clearMappings();
302
+ return;
303
+ }
304
+ this.clearPluginRequirements({ preserveMappings: true });
305
+ this.loadPluginRequirements(key, versionTag);
306
+ this.loadFields(key, versionTag, { pruneMappingsToFields: true });
307
+ }
286
308
  setPluginConfigurationMapping(pluginDefinitionKey, configurationId) {
287
309
  const current = this._pluginMappings$.getValue();
288
310
  this._pluginMappings$.next({
@@ -377,14 +399,21 @@ class BuildingBlockStateService {
377
399
  this._requiredPluginKeys$.next(pluginKeys);
378
400
  this._pluginMappings$.next(normalized);
379
401
  }
380
- loadFields(key, versionTag) {
402
+ loadFields(key, versionTag, options = {}) {
381
403
  this._loadingFields$.next(true);
382
404
  this._fieldsSubscription?.unsubscribe();
383
405
  this._fieldsSubscription = this.processLinkBuildingBlockApiService
384
406
  .getFieldsForBuildingBlock(key, versionTag)
385
407
  .subscribe({
386
408
  next: fields => {
387
- this._buildingBlockFields$.next((fields ?? []).map(field => ({ ...field, name: ensureDocPrefix(field.name) })));
409
+ const buildingBlockFields = (fields ?? []).map(field => ({
410
+ ...field,
411
+ name: ensureDocPrefix(field.name),
412
+ }));
413
+ this._buildingBlockFields$.next(buildingBlockFields);
414
+ if (options.pruneMappingsToFields) {
415
+ this.pruneMappingsToFields(buildingBlockFields);
416
+ }
388
417
  this._loadingFields$.next(false);
389
418
  },
390
419
  error: () => {
@@ -393,6 +422,23 @@ class BuildingBlockStateService {
393
422
  },
394
423
  });
395
424
  }
425
+ /**
426
+ * Drops mappings pointing at fields outside the given set, so switching between versions with the
427
+ * same fields keeps the configuration intact.
428
+ */
429
+ pruneMappingsToFields(fields) {
430
+ const fieldNames = new Set(fields.map(field => field.name));
431
+ const inputMappings = this._inputMappings$.getValue();
432
+ const prunedInputMappings = inputMappings.filter(mapping => fieldNames.has(mapping.target));
433
+ if (prunedInputMappings.length !== inputMappings.length) {
434
+ this._inputMappings$.next(prunedInputMappings);
435
+ }
436
+ const outputMappings = this._outputMappings$.getValue();
437
+ const prunedOutputMappings = outputMappings.filter(mapping => fieldNames.has(mapping.source));
438
+ if (prunedOutputMappings.length !== outputMappings.length) {
439
+ this._outputMappings$.next(prunedOutputMappings);
440
+ }
441
+ }
396
442
  clearPluginRequirements(options = {}) {
397
443
  this._requirementsSubscription?.unsubscribe();
398
444
  this._requiredPluginKeys$.next([]);
@@ -620,7 +666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
620
666
  }], ctorParameters: () => [{ type: i1$1.PluginManagementService }, { type: i1$1.PluginService }] });
621
667
 
622
668
  /*
623
- * Copyright 2015-2025 Ritense BV, the Netherlands.
669
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
624
670
  *
625
671
  * Licensed under EUPL, Version 1.2 (the "License");
626
672
  * you may not use this file except in compliance with the License.
@@ -784,6 +830,9 @@ class ProcessLinkService {
784
830
  }
785
831
  return object;
786
832
  }
833
+ deleteAutofill(processDefinitionId, activityId) {
834
+ return this.http.delete(`${this.VALTIMO_ENDPOINT_URI}management/v1/process-definition/${processDefinitionId}/autofill/${activityId}`);
835
+ }
787
836
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
788
837
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkService, providedIn: 'root' }); }
789
838
  }
@@ -809,7 +858,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
809
858
  * See the License for the specific language governing permissions and
810
859
  * limitations under the License.
811
860
  */
812
- const FORM_FLOW_COMPONENT_TOKEN = new InjectionToken('Supported form-flow Angular components', { factory: () => [] });
813
861
  const FORM_CUSTOM_COMPONENT_TOKEN = new InjectionToken('Custom component that can be used instead of FormIO or form-flow');
814
862
 
815
863
  /*
@@ -850,6 +898,49 @@ const UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK = ['ui-component'];
850
898
  * See the License for the specific language governing permissions and
851
899
  * limitations under the License.
852
900
  */
901
+ /** The process link wizard shell: header and footer navigation. */
902
+ const PROCESS_LINK_MODAL_TEST_IDS = {
903
+ heading: 'processLinkModalHeading',
904
+ pluginConfigurationLabel: 'processLinkModalPluginConfigurationLabel',
905
+ progressIndicator: 'processLinkModalProgressIndicator',
906
+ cancelButton: 'processLinkModalCancelButton',
907
+ unlinkButton: 'processLinkModalUnlinkButton',
908
+ backButton: 'processLinkModalBackButton',
909
+ nextButton: 'processLinkModalNextButton',
910
+ completeButton: 'processLinkModalCompleteButton',
911
+ };
912
+ const PROCESS_LINK_TYPE_CHOOSER_TEST_IDS = {
913
+ container: 'processLinkTypeChooser',
914
+ };
915
+ /**
916
+ * Prefix for the buttons of the "Choose link type" step. The full test id is
917
+ * `processLinkTypeButton-<processLinkType>`, e.g. `processLinkTypeButton-plugin`.
918
+ */
919
+ const PROCESS_LINK_TYPE_BUTTON_TEST_ID_PREFIX = 'processLinkTypeButton-';
920
+ const SELECT_PLUGIN_CONFIGURATION_TEST_IDS = {
921
+ container: 'selectPluginConfiguration',
922
+ list: 'selectPluginConfigurationList',
923
+ };
924
+ /**
925
+ * Prefix for the rows of the plugin selection step. The full test id is
926
+ * `selectPluginConfigurationRow-<id>`, where the id is the plugin *definition*
927
+ * key in a building block (e.g. `zakenapi`) and the plugin *configuration* id in
928
+ * a case — the step lists definitions in the one and configurations in the other.
929
+ */
930
+ const SELECT_PLUGIN_CONFIGURATION_ROW_TEST_ID_PREFIX = 'selectPluginConfigurationRow-';
931
+ const SELECT_PLUGIN_ACTION_TEST_IDS = {
932
+ container: 'selectPluginAction',
933
+ tileGroup: 'selectPluginActionTileGroup',
934
+ noActionsMessage: 'selectPluginActionNoActions',
935
+ };
936
+ /**
937
+ * Prefix for the action tiles. The full test id is
938
+ * `selectPluginActionTile-<pluginFunctionKey>`.
939
+ */
940
+ const SELECT_PLUGIN_ACTION_TILE_TEST_ID_PREFIX = 'selectPluginActionTile-';
941
+ const PLUGIN_ACTION_CONFIGURATION_TEST_IDS = {
942
+ container: 'pluginActionConfiguration',
943
+ };
853
944
  const BB_MAPPINGS_TEST_IDS = {
854
945
  inputSection: 'bbMappingsInputSection',
855
946
  outputSection: 'bbMappingsOutputSection',
@@ -1505,6 +1596,9 @@ class ProcessLinkStateService {
1505
1596
  get showModal$() {
1506
1597
  return this._showModal$.asObservable();
1507
1598
  }
1599
+ get readOnly$() {
1600
+ return this._readOnly$.asObservable();
1601
+ }
1508
1602
  get elementName$() {
1509
1603
  return this._elementName$.asObservable();
1510
1604
  }
@@ -1563,6 +1657,7 @@ class ProcessLinkStateService {
1563
1657
  this.buildingBlockStateService = buildingBlockStateService;
1564
1658
  this.formCustomComponentConfig = formCustomComponentConfig;
1565
1659
  this._showModal$ = new BehaviorSubject(false);
1660
+ this._readOnly$ = new BehaviorSubject(false);
1566
1661
  this._availableProcessLinkTypes$ = new BehaviorSubject([]);
1567
1662
  this._elementName$ = new BehaviorSubject('');
1568
1663
  this._selectedProcessLinkTypeId$ = new BehaviorSubject('');
@@ -1598,6 +1693,9 @@ class ProcessLinkStateService {
1598
1693
  showModal() {
1599
1694
  this._showModal$.next(true);
1600
1695
  }
1696
+ setReadOnly(readOnly) {
1697
+ this._readOnly$.next(readOnly);
1698
+ }
1601
1699
  closeModal() {
1602
1700
  this._showModal$.next(false);
1603
1701
  setTimeout(() => {
@@ -1731,6 +1829,7 @@ class ProcessLinkStateService {
1731
1829
  this.deselectProcessLink();
1732
1830
  this.resetBuildingBlockState();
1733
1831
  this._isEditing$.next(false);
1832
+ this._readOnly$.next(false);
1734
1833
  }
1735
1834
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkStateService, deps: [{ token: ProcessLinkStepService }, { token: ProcessLinkButtonService }, { token: PluginStateService }, { token: BuildingBlockStateService }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1736
1835
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkStateService }); }
@@ -1759,30 +1858,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
1759
1858
  * See the License for the specific language governing permissions and
1760
1859
  * limitations under the License.
1761
1860
  */
1762
- class FormFlowComponentService {
1763
- get supportedComponents$() {
1764
- return this._supportedComponents$.pipe(filter(components => !!components));
1765
- }
1766
- constructor(supportedCustomComponents) {
1767
- this.supportedCustomComponents = supportedCustomComponents;
1768
- this._supportedComponents$ = new BehaviorSubject(null);
1769
- this.setSupportedComponents(supportedCustomComponents);
1770
- }
1771
- setSupportedComponents(supportedComponents) {
1772
- this._supportedComponents$.next(supportedComponents);
1773
- }
1774
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormFlowComponentService, deps: [{ token: FORM_FLOW_COMPONENT_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
1775
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormFlowComponentService, providedIn: 'root' }); }
1776
- }
1777
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormFlowComponentService, decorators: [{
1778
- type: Injectable,
1779
- args: [{
1780
- providedIn: 'root',
1781
- }]
1782
- }], ctorParameters: () => [{ type: Array, decorators: [{
1783
- type: Inject,
1784
- args: [FORM_FLOW_COMPONENT_TOKEN]
1785
- }] }] });
1861
+ // Moved to @valtimo/form-flow-management (the owning library); re-exported here for backwards
1862
+ // compatibility.
1786
1863
 
1787
1864
  /*
1788
1865
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -1878,6 +1955,8 @@ class SelectPluginConfigurationComponent {
1878
1955
  this.buttonService = buttonService;
1879
1956
  this.stepService = stepService;
1880
1957
  this.pluginTranslationService = pluginTranslationService;
1958
+ this.testIds = SELECT_PLUGIN_CONFIGURATION_TEST_IDS;
1959
+ this.rowTestIdPrefix = SELECT_PLUGIN_CONFIGURATION_ROW_TEST_ID_PREFIX;
1881
1960
  this.isBuildingBlockContext$ = this.stateService.context$.pipe(map$1(context => context === 'buildingBlock'));
1882
1961
  this.listItems$ = combineLatest([
1883
1962
  this.isBuildingBlockContext$,
@@ -1979,11 +2058,11 @@ class SelectPluginConfigurationComponent {
1979
2058
  }));
1980
2059
  }
1981
2060
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectPluginConfigurationComponent, deps: [{ token: i1$1.PluginManagementService }, { token: PluginStateService }, { token: i1$1.PluginService }, { token: ProcessLinkStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }, { token: i1$1.PluginTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
1982
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectPluginConfigurationComponent, isStandalone: false, selector: "valtimo-select-plugin-configuration", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"listItems$ | async as items; else loading\">\n <p class=\"step-description\">\n {{ pageHeaderText$ | async | translate }}\n </p>\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"selected($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ columnHeaderText$ | async | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.pluginDescription' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let item of items\" [value]=\"item.payload\">\n <cds-list-column>\n <div *ngIf=\"item.logo\">\n <img [src]=\"item.logo\" [title]=\"item.title\" class=\"plugin-configuration-logo\" />\n </div>\n </cds-list-column>\n <cds-list-column>{{ item.title }}</cds-list-column>\n <cds-list-column>{{ item.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.plugin-configuration-logo{object-fit:contain;height:60px;width:100%;margin-bottom:-.5rem}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.list-container{margin-top:32px;margin-bottom:32px}::ng-deep .list-container .cds--structured-list-td{vertical-align:top}\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: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i4.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i4.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i4.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i4.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
2061
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectPluginConfigurationComponent, isStandalone: false, selector: "valtimo-select-plugin-configuration", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"listItems$ | async as items; else loading\">\n <p class=\"step-description\" [attr.data-test-id]=\"testIds.container\">\n {{ pageHeaderText$ | async | translate }}\n </p>\n <div class=\"list-container\">\n <cds-structured-list\n [attr.data-test-id]=\"testIds.list\"\n (selected)=\"selected($event)\"\n selection=\"true\"\n >\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ columnHeaderText$ | async | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.pluginDescription' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row\n *ngFor=\"let item of items\"\n [attr.data-test-id]=\"rowTestIdPrefix + item.id\"\n [value]=\"item.payload\"\n >\n <cds-list-column>\n <div *ngIf=\"item.logo\">\n <img [src]=\"item.logo\" [title]=\"item.title\" class=\"plugin-configuration-logo\" />\n </div>\n </cds-list-column>\n <cds-list-column>{{ item.title }}</cds-list-column>\n <cds-list-column>{{ item.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.plugin-configuration-logo{object-fit:contain;height:60px;width:100%;margin-bottom:-.5rem}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.list-container{margin-top:32px;margin-bottom:32px}::ng-deep .list-container .cds--structured-list-td{vertical-align:top}\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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i5.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i5.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i5.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i5.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
1983
2062
  }
1984
2063
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectPluginConfigurationComponent, decorators: [{
1985
2064
  type: Component,
1986
- args: [{ standalone: false, selector: 'valtimo-select-plugin-configuration', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"listItems$ | async as items; else loading\">\n <p class=\"step-description\">\n {{ pageHeaderText$ | async | translate }}\n </p>\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"selected($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ columnHeaderText$ | async | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.pluginDescription' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let item of items\" [value]=\"item.payload\">\n <cds-list-column>\n <div *ngIf=\"item.logo\">\n <img [src]=\"item.logo\" [title]=\"item.title\" class=\"plugin-configuration-logo\" />\n </div>\n </cds-list-column>\n <cds-list-column>{{ item.title }}</cds-list-column>\n <cds-list-column>{{ item.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.plugin-configuration-logo{object-fit:contain;height:60px;width:100%;margin-bottom:-.5rem}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.list-container{margin-top:32px;margin-bottom:32px}::ng-deep .list-container .cds--structured-list-td{vertical-align:top}\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"] }]
2065
+ args: [{ standalone: false, selector: 'valtimo-select-plugin-configuration', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"listItems$ | async as items; else loading\">\n <p class=\"step-description\" [attr.data-test-id]=\"testIds.container\">\n {{ pageHeaderText$ | async | translate }}\n </p>\n <div class=\"list-container\">\n <cds-structured-list\n [attr.data-test-id]=\"testIds.list\"\n (selected)=\"selected($event)\"\n selection=\"true\"\n >\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ columnHeaderText$ | async | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.pluginDescription' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row\n *ngFor=\"let item of items\"\n [attr.data-test-id]=\"rowTestIdPrefix + item.id\"\n [value]=\"item.payload\"\n >\n <cds-list-column>\n <div *ngIf=\"item.logo\">\n <img [src]=\"item.logo\" [title]=\"item.title\" class=\"plugin-configuration-logo\" />\n </div>\n </cds-list-column>\n <cds-list-column>{{ item.title }}</cds-list-column>\n <cds-list-column>{{ item.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.plugin-configuration-logo{object-fit:contain;height:60px;width:100%;margin-bottom:-.5rem}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.list-container{margin-top:32px;margin-bottom:32px}::ng-deep .list-container .cds--structured-list-td{vertical-align:top}\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"] }]
1987
2066
  }], ctorParameters: () => [{ type: i1$1.PluginManagementService }, { type: PluginStateService }, { type: i1$1.PluginService }, { type: ProcessLinkStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }, { type: i1$1.PluginTranslationService }] });
1988
2067
 
1989
2068
  /*
@@ -2010,6 +2089,8 @@ class SelectPluginActionComponent {
2010
2089
  this.stateService = stateService;
2011
2090
  this.stepService = stepService;
2012
2091
  this.processLinkStateService = processLinkStateService;
2092
+ this.testIds = SELECT_PLUGIN_ACTION_TEST_IDS;
2093
+ this.tileTestIdPrefix = SELECT_PLUGIN_ACTION_TILE_TEST_ID_PREFIX;
2013
2094
  this.pluginFunctions$ = combineLatest([
2014
2095
  this.stateService.selectedPluginDefinition$,
2015
2096
  this.processLinkStateService.modalParams$,
@@ -2065,11 +2146,11 @@ class SelectPluginActionComponent {
2065
2146
  }));
2066
2147
  }
2067
2148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectPluginActionComponent, deps: [{ token: ProcessLinkButtonService }, { token: i0.Injector }, { token: i1$1.PluginManagementService }, { token: i1$1.PluginService }, { token: PluginStateService }, { token: ProcessLinkStepService }, { token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
2068
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectPluginActionComponent, isStandalone: false, selector: "valtimo-select-plugin-action", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginFunctions$ | async as pluginFunctions; else loading\">\n <div class=\"choose-plugin-action\" *ngIf=\"pluginFunctions?.length > 0\">\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.choosePluginActionDescription' | translate }}\n </p>\n <div class=\"action-tiles\">\n <cds-tile-group\n [multiple]=\"false\"\n *ngIf=\"{selectedPluginDefinition: selectedPluginDefinition$ | async} as obs\"\n (selected)=\"selected($event)\"\n >\n <cds-selection-tile\n *ngFor=\"let pluginFunction of pluginFunctions\"\n [value]=\"stringify(pluginFunction)\"\n [selected]=\"false\"\n >{{\n pluginFunction.key | pluginTranslate: obs.selectedPluginDefinition.key | async\n }}</cds-selection-tile\n >\n </cds-tile-group>\n </div>\n </div>\n <ng-container *ngIf=\"!pluginFunctions || pluginFunctions?.length === 0\">\n <ng-container *ngTemplateOutlet=\"noPluginFunctionsTemplate\"> </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #noPluginFunctionsTemplate>\n <p class=\"step-description\">\n {{ 'processLink.noPluginFunctions' | translate }}\n </p>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.action-tiles{margin-top:24px;width:calc(100% + 8px);margin-left:-8px}::ng-deep .choose-plugin-action cds-selection-tile{display:flex;width:calc(33.3% - 8px)}::ng-deep .choose-plugin-action .cds--tile{width:100%}::ng-deep .choose-plugin-action cds-tile-group fieldset{display:flex;flex-direction:row;flex-wrap:wrap}::ng-deep .choose-plugin-action cds-selection-tile{margin-left:8px}::ng-deep .choose-plugin-action cds-selection-tile:nth-child(n+4){margin-top:8px}::ng-deep .action-tiles .cds--tile{background-color:var(--cds-layer-02, #ffffff)}::ng-deep .action-tiles .cds--tile:hover{background:var(--cds-layer-hover)}\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: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i4.SelectionTile, selector: "cds-selection-tile, ibm-selection-tile", inputs: ["theme", "id", "selected", "value", "disabled"], outputs: ["change"] }, { kind: "component", type: i4.TileGroup, selector: "cds-tile-group, ibm-tile-group", inputs: ["name", "multiple", "legend"], outputs: ["selected"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1$1.PluginTranslatePipe, name: "pluginTranslate" }] }); }
2149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectPluginActionComponent, isStandalone: false, selector: "valtimo-select-plugin-action", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginFunctions$ | async as pluginFunctions; else loading\">\n <div\n class=\"choose-plugin-action\"\n *ngIf=\"pluginFunctions?.length > 0\"\n [attr.data-test-id]=\"testIds.container\"\n >\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.choosePluginActionDescription' | translate }}\n </p>\n <div class=\"action-tiles\">\n <cds-tile-group\n [attr.data-test-id]=\"testIds.tileGroup\"\n [multiple]=\"false\"\n *ngIf=\"{selectedPluginDefinition: selectedPluginDefinition$ | async} as obs\"\n (selected)=\"selected($event)\"\n >\n <cds-selection-tile\n *ngFor=\"let pluginFunction of pluginFunctions\"\n [attr.data-test-id]=\"tileTestIdPrefix + pluginFunction.key\"\n [value]=\"stringify(pluginFunction)\"\n [selected]=\"false\"\n >{{\n pluginFunction.key | pluginTranslate: obs.selectedPluginDefinition.key | async\n }}</cds-selection-tile\n >\n </cds-tile-group>\n </div>\n </div>\n <ng-container *ngIf=\"!pluginFunctions || pluginFunctions?.length === 0\">\n <ng-container *ngTemplateOutlet=\"noPluginFunctionsTemplate\"> </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #noPluginFunctionsTemplate>\n <p class=\"step-description\" [attr.data-test-id]=\"testIds.noActionsMessage\">\n {{ 'processLink.noPluginFunctions' | translate }}\n </p>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.action-tiles{margin-top:24px;width:calc(100% + 8px);margin-left:-8px}::ng-deep .choose-plugin-action cds-selection-tile{display:flex;width:calc(33.3% - 8px)}::ng-deep .choose-plugin-action .cds--tile{width:100%}::ng-deep .choose-plugin-action cds-tile-group fieldset{display:flex;flex-direction:row;flex-wrap:wrap}::ng-deep .choose-plugin-action cds-selection-tile{margin-left:8px}::ng-deep .choose-plugin-action cds-selection-tile:nth-child(n+4){margin-top:8px}::ng-deep .action-tiles .cds--tile{background-color:var(--cds-layer-02, #ffffff)}::ng-deep .action-tiles .cds--tile:hover{background:var(--cds-layer-hover)}\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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i5.SelectionTile, selector: "cds-selection-tile, ibm-selection-tile", inputs: ["theme", "id", "selected", "value", "disabled"], outputs: ["change"] }, { kind: "component", type: i5.TileGroup, selector: "cds-tile-group, ibm-tile-group", inputs: ["name", "multiple", "legend"], outputs: ["selected"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1$1.PluginTranslatePipe, name: "pluginTranslate" }] }); }
2069
2150
  }
2070
2151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectPluginActionComponent, decorators: [{
2071
2152
  type: Component,
2072
- args: [{ standalone: false, selector: 'valtimo-select-plugin-action', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginFunctions$ | async as pluginFunctions; else loading\">\n <div class=\"choose-plugin-action\" *ngIf=\"pluginFunctions?.length > 0\">\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.choosePluginActionDescription' | translate }}\n </p>\n <div class=\"action-tiles\">\n <cds-tile-group\n [multiple]=\"false\"\n *ngIf=\"{selectedPluginDefinition: selectedPluginDefinition$ | async} as obs\"\n (selected)=\"selected($event)\"\n >\n <cds-selection-tile\n *ngFor=\"let pluginFunction of pluginFunctions\"\n [value]=\"stringify(pluginFunction)\"\n [selected]=\"false\"\n >{{\n pluginFunction.key | pluginTranslate: obs.selectedPluginDefinition.key | async\n }}</cds-selection-tile\n >\n </cds-tile-group>\n </div>\n </div>\n <ng-container *ngIf=\"!pluginFunctions || pluginFunctions?.length === 0\">\n <ng-container *ngTemplateOutlet=\"noPluginFunctionsTemplate\"> </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #noPluginFunctionsTemplate>\n <p class=\"step-description\">\n {{ 'processLink.noPluginFunctions' | translate }}\n </p>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.action-tiles{margin-top:24px;width:calc(100% + 8px);margin-left:-8px}::ng-deep .choose-plugin-action cds-selection-tile{display:flex;width:calc(33.3% - 8px)}::ng-deep .choose-plugin-action .cds--tile{width:100%}::ng-deep .choose-plugin-action cds-tile-group fieldset{display:flex;flex-direction:row;flex-wrap:wrap}::ng-deep .choose-plugin-action cds-selection-tile{margin-left:8px}::ng-deep .choose-plugin-action cds-selection-tile:nth-child(n+4){margin-top:8px}::ng-deep .action-tiles .cds--tile{background-color:var(--cds-layer-02, #ffffff)}::ng-deep .action-tiles .cds--tile:hover{background:var(--cds-layer-hover)}\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"] }]
2153
+ args: [{ standalone: false, selector: 'valtimo-select-plugin-action', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginFunctions$ | async as pluginFunctions; else loading\">\n <div\n class=\"choose-plugin-action\"\n *ngIf=\"pluginFunctions?.length > 0\"\n [attr.data-test-id]=\"testIds.container\"\n >\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.choosePluginActionDescription' | translate }}\n </p>\n <div class=\"action-tiles\">\n <cds-tile-group\n [attr.data-test-id]=\"testIds.tileGroup\"\n [multiple]=\"false\"\n *ngIf=\"{selectedPluginDefinition: selectedPluginDefinition$ | async} as obs\"\n (selected)=\"selected($event)\"\n >\n <cds-selection-tile\n *ngFor=\"let pluginFunction of pluginFunctions\"\n [attr.data-test-id]=\"tileTestIdPrefix + pluginFunction.key\"\n [value]=\"stringify(pluginFunction)\"\n [selected]=\"false\"\n >{{\n pluginFunction.key | pluginTranslate: obs.selectedPluginDefinition.key | async\n }}</cds-selection-tile\n >\n </cds-tile-group>\n </div>\n </div>\n <ng-container *ngIf=\"!pluginFunctions || pluginFunctions?.length === 0\">\n <ng-container *ngTemplateOutlet=\"noPluginFunctionsTemplate\"> </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #noPluginFunctionsTemplate>\n <p class=\"step-description\" [attr.data-test-id]=\"testIds.noActionsMessage\">\n {{ 'processLink.noPluginFunctions' | translate }}\n </p>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading-container{display:flex;justify-content:center;margin-top:40px;flex-direction:row}.action-tiles{margin-top:24px;width:calc(100% + 8px);margin-left:-8px}::ng-deep .choose-plugin-action cds-selection-tile{display:flex;width:calc(33.3% - 8px)}::ng-deep .choose-plugin-action .cds--tile{width:100%}::ng-deep .choose-plugin-action cds-tile-group fieldset{display:flex;flex-direction:row;flex-wrap:wrap}::ng-deep .choose-plugin-action cds-selection-tile{margin-left:8px}::ng-deep .choose-plugin-action cds-selection-tile:nth-child(n+4){margin-top:8px}::ng-deep .action-tiles .cds--tile{background-color:var(--cds-layer-02, #ffffff)}::ng-deep .action-tiles .cds--tile:hover{background:var(--cds-layer-hover)}\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"] }]
2073
2154
  }], ctorParameters: () => [{ type: ProcessLinkButtonService }, { type: i0.Injector }, { type: i1$1.PluginManagementService }, { type: i1$1.PluginService }, { type: PluginStateService }, { type: ProcessLinkStepService }, { type: ProcessLinkStateService }] });
2074
2155
 
2075
2156
  /*
@@ -2101,14 +2182,16 @@ class ImportPluginConfigurationComponent {
2101
2182
  get activity() {
2102
2183
  return this.importPluginForm.get('activity');
2103
2184
  }
2104
- constructor(cdsThemeService, formBuilder, processLinkService, iconService) {
2185
+ constructor(cdsThemeService, formBuilder, processLinkService, iconService, stateService) {
2105
2186
  this.cdsThemeService = cdsThemeService;
2106
2187
  this.formBuilder = formBuilder;
2107
2188
  this.processLinkService = processLinkService;
2108
2189
  this.iconService = iconService;
2190
+ this.stateService = stateService;
2109
2191
  this.configurationEvent = new EventEmitter();
2110
2192
  this.open$ = new Subject();
2111
2193
  this.toggletipTheme$ = this.cdsThemeService.toggletipTheme$;
2194
+ this.readOnly$ = this.stateService.readOnly$;
2112
2195
  this._compatiblePluginProcessLinksSubject$ = new BehaviorSubject([]);
2113
2196
  this.compatiblePluginProcessLinks$ = this._compatiblePluginProcessLinksSubject$.asObservable();
2114
2197
  this.importPluginForm = this.formBuilder.group({
@@ -2181,13 +2264,13 @@ class ImportPluginConfigurationComponent {
2181
2264
  activitySelected(event) {
2182
2265
  this.activity.setValue(event?.item?.content);
2183
2266
  }
2184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ImportPluginConfigurationComponent, deps: [{ token: i2$1.CdsThemeService }, { token: i1$2.FormBuilder }, { token: ProcessLinkService }, { token: i4.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
2185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ImportPluginConfigurationComponent, isStandalone: false, selector: "valtimo-import-plugin-configuration", inputs: { pluginActionKey: "pluginActionKey" }, outputs: { configurationEvent: "configurationEvent" }, 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-toggletip align=\"right-bottom\" [autoAlign]=\"true\" [isOpen]=\"open$ | async\">\n <button\n class=\"process-link-configuration-import-button\"\n [disabled]=\"((compatiblePluginProcessLinks$ | async) || []).length === 0\"\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n >\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <div\n cdsToggletipContent\n class=\"process-link-configuration-select\"\n >\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.process' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectProcess' | translate\"\n (selected)=\"processSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"processListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.version' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectVersion' | translate\"\n [disabled]=\"!process.value\"\n (selected)=\"versionSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"versionListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.activity' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectActivity' | translate\"\n [disabled]=\"!process.value || !version.value\"\n (selected)=\"activitySelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"activityListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <button cdsButton [attr.data-carbon-theme]=\"toggletipTheme$ | async\" [disabled]=\"!importPluginForm.valid\" (click)=\"onSubmit()\" [cdsLayer]=\"1\">\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n </button>\n </div>\n</cds-toggletip>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.process-link-configuration-import-button{margin-bottom:16px}.process-link-configuration-select{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.process-link-configuration-select .cds--btn{width:100%;max-width:unset}\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: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i5.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: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i4.Toggletip, selector: "cds-toggletip, ibm-toggletip", inputs: ["id", "isOpen"] }, { kind: "directive", type: i4.ToggletipButton, selector: "[cdsToggletipButton], [ibmToggletipButton]", inputs: ["ariaLabel"] }, { kind: "directive", type: i4.ToggletipContent, selector: "[cdsToggletipContent], [ibmToggletipContent]" }, { kind: "directive", type: i2$1.RemoveClassnamesDirective, selector: "[removeClassnames]", inputs: ["removeClassnames"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
2267
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ImportPluginConfigurationComponent, deps: [{ token: i2$1.CdsThemeService }, { token: i1$2.FormBuilder }, { token: ProcessLinkService }, { token: i5.IconService }, { token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
2268
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ImportPluginConfigurationComponent, isStandalone: false, selector: "valtimo-import-plugin-configuration", inputs: { pluginActionKey: "pluginActionKey" }, outputs: { configurationEvent: "configurationEvent" }, 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-toggletip\n *ngIf=\"!(readOnly$ | async)\"\n align=\"right-bottom\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n>\n <button\n class=\"process-link-configuration-import-button\"\n [disabled]=\"((compatiblePluginProcessLinks$ | async) || []).length === 0\"\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n >\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <div\n cdsToggletipContent\n class=\"process-link-configuration-select\"\n >\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.process' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectProcess' | translate\"\n (selected)=\"processSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"processListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.version' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectVersion' | translate\"\n [disabled]=\"!process.value\"\n (selected)=\"versionSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"versionListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.activity' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectActivity' | translate\"\n [disabled]=\"!process.value || !version.value\"\n (selected)=\"activitySelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"activityListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <button cdsButton [attr.data-carbon-theme]=\"toggletipTheme$ | async\" [disabled]=\"!importPluginForm.valid\" (click)=\"onSubmit()\" [cdsLayer]=\"1\">\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n </button>\n </div>\n</cds-toggletip>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.process-link-configuration-import-button{margin-bottom:16px}.process-link-configuration-select{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.process-link-configuration-select .cds--btn{width:100%;max-width:unset}\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: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { 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: "directive", type: i5.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i5.Toggletip, selector: "cds-toggletip, ibm-toggletip", inputs: ["id", "isOpen"] }, { kind: "directive", type: i5.ToggletipButton, selector: "[cdsToggletipButton], [ibmToggletipButton]", inputs: ["ariaLabel"] }, { kind: "directive", type: i5.ToggletipContent, selector: "[cdsToggletipContent], [ibmToggletipContent]" }, { kind: "directive", type: i2$1.RemoveClassnamesDirective, selector: "[removeClassnames]", inputs: ["removeClassnames"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
2186
2269
  }
2187
2270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ImportPluginConfigurationComponent, decorators: [{
2188
2271
  type: Component,
2189
- args: [{ standalone: false, selector: 'valtimo-import-plugin-configuration', 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-toggletip align=\"right-bottom\" [autoAlign]=\"true\" [isOpen]=\"open$ | async\">\n <button\n class=\"process-link-configuration-import-button\"\n [disabled]=\"((compatiblePluginProcessLinks$ | async) || []).length === 0\"\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n >\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <div\n cdsToggletipContent\n class=\"process-link-configuration-select\"\n >\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.process' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectProcess' | translate\"\n (selected)=\"processSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"processListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.version' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectVersion' | translate\"\n [disabled]=\"!process.value\"\n (selected)=\"versionSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"versionListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.activity' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectActivity' | translate\"\n [disabled]=\"!process.value || !version.value\"\n (selected)=\"activitySelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"activityListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <button cdsButton [attr.data-carbon-theme]=\"toggletipTheme$ | async\" [disabled]=\"!importPluginForm.valid\" (click)=\"onSubmit()\" [cdsLayer]=\"1\">\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n </button>\n </div>\n</cds-toggletip>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.process-link-configuration-import-button{margin-bottom:16px}.process-link-configuration-select{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.process-link-configuration-select .cds--btn{width:100%;max-width:unset}\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"] }]
2190
- }], ctorParameters: () => [{ type: i2$1.CdsThemeService }, { type: i1$2.FormBuilder }, { type: ProcessLinkService }, { type: i4.IconService }], propDecorators: { pluginActionKey: [{
2272
+ args: [{ standalone: false, selector: 'valtimo-import-plugin-configuration', 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-toggletip\n *ngIf=\"!(readOnly$ | async)\"\n align=\"right-bottom\"\n [autoAlign]=\"true\"\n [isOpen]=\"open$ | async\"\n>\n <button\n class=\"process-link-configuration-import-button\"\n [disabled]=\"((compatiblePluginProcessLinks$ | async) || []).length === 0\"\n cdsToggletipButton\n [removeClassnames]=\"['cds--toggletip-button']\"\n cdsButton=\"ghost\"\n >\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <div\n cdsToggletipContent\n class=\"process-link-configuration-select\"\n >\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.process' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectProcess' | translate\"\n (selected)=\"processSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"processListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.version' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectVersion' | translate\"\n [disabled]=\"!process.value\"\n (selected)=\"versionSelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"versionListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n [label]=\"'processLinkConfiguration.activity' | translate\"\n [placeholder]=\"'processLinkConfiguration.selectActivity' | translate\"\n [disabled]=\"!process.value || !version.value\"\n (selected)=\"activitySelected($event)\"\n [appendInline]=\"true\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list\n [items]=\"activityListItems$ | async\"\n onclick=\"event.stopPropagation()\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <button cdsButton [attr.data-carbon-theme]=\"toggletipTheme$ | async\" [disabled]=\"!importPluginForm.valid\" (click)=\"onSubmit()\" [cdsLayer]=\"1\">\n {{ 'processLinkConfiguration.importConfiguration' | translate }}\n </button>\n </div>\n</cds-toggletip>\n", styles: [":host ::ng-deep .cds--popover-content{max-inline-size:unset}.process-link-configuration-import-button{margin-bottom:16px}.process-link-configuration-select{width:400px;max-inline-size:400px;display:flex;flex-direction:column;gap:16px}.process-link-configuration-select .cds--btn{width:100%;max-width:unset}\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"] }]
2273
+ }], ctorParameters: () => [{ type: i2$1.CdsThemeService }, { type: i1$2.FormBuilder }, { type: ProcessLinkService }, { type: i5.IconService }, { type: ProcessLinkStateService }], propDecorators: { pluginActionKey: [{
2191
2274
  type: Input
2192
2275
  }], configurationEvent: [{
2193
2276
  type: Output
@@ -2215,6 +2298,7 @@ class PluginActionConfigurationComponent {
2215
2298
  this.buttonService = buttonService;
2216
2299
  this.stepService = stepService;
2217
2300
  this.processLinkService = processLinkService;
2301
+ this.testIds = PLUGIN_ACTION_CONFIGURATION_TEST_IDS;
2218
2302
  this.valid = new EventEmitter();
2219
2303
  this.configuration = new EventEmitter();
2220
2304
  this.pluginDefinitionKey$ = this.pluginStateService.pluginDefinitionKey$;
@@ -2346,11 +2430,11 @@ class PluginActionConfigurationComponent {
2346
2430
  }));
2347
2431
  }
2348
2432
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PluginActionConfigurationComponent, deps: [{ token: ProcessLinkStateService }, { token: PluginStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }, { token: ProcessLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
2349
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: PluginActionConfigurationComponent, isStandalone: false, selector: "valtimo-plugin-action-configuration", inputs: { selectedPluginConfiguration$: "selectedPluginConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, 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-import-plugin-configuration\n [pluginActionKey]=\"functionKey$ | async\"\n (configurationEvent)=\"onImportConfiguration($event)\"\n></valtimo-import-plugin-configuration>\n\n<valtimo-plugin-configuration-container\n [pluginDefinitionKey]=\"pluginDefinitionKey$ | async\"\n [functionKey]=\"functionKey$ | async\"\n [save$]=\"save$\"\n [disabled$]=\"saving$\"\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n [prefillConfiguration$]=\"prefillConfiguration$\"\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n type=\"function\"\n></valtimo-plugin-configuration-container>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i1$1.PluginConfigurationContainerComponent, selector: "valtimo-plugin-configuration-container", inputs: ["type", "pluginDefinitionKey", "functionKey", "save$", "disabled$", "selectedPluginConfiguration$", "prefillConfiguration$"], outputs: ["valid", "configuration"] }, { kind: "component", type: ImportPluginConfigurationComponent, selector: "valtimo-import-plugin-configuration", inputs: ["pluginActionKey"], outputs: ["configurationEvent"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }] }); }
2433
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: PluginActionConfigurationComponent, isStandalone: false, selector: "valtimo-plugin-action-configuration", inputs: { selectedPluginConfiguration$: "selectedPluginConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, 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-import-plugin-configuration\n [attr.data-test-id]=\"testIds.container\"\n [pluginActionKey]=\"functionKey$ | async\"\n (configurationEvent)=\"onImportConfiguration($event)\"\n></valtimo-import-plugin-configuration>\n\n<valtimo-plugin-configuration-container\n [pluginDefinitionKey]=\"pluginDefinitionKey$ | async\"\n [functionKey]=\"functionKey$ | async\"\n [save$]=\"save$\"\n [disabled$]=\"saving$\"\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n [prefillConfiguration$]=\"prefillConfiguration$\"\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n type=\"function\"\n></valtimo-plugin-configuration-container>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i1$1.PluginConfigurationContainerComponent, selector: "valtimo-plugin-configuration-container", inputs: ["type", "pluginDefinitionKey", "functionKey", "save$", "disabled$", "selectedPluginConfiguration$", "prefillConfiguration$"], outputs: ["valid", "configuration"] }, { kind: "component", type: ImportPluginConfigurationComponent, selector: "valtimo-import-plugin-configuration", inputs: ["pluginActionKey"], outputs: ["configurationEvent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
2350
2434
  }
2351
2435
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PluginActionConfigurationComponent, decorators: [{
2352
2436
  type: Component,
2353
- args: [{ standalone: false, selector: 'valtimo-plugin-action-configuration', 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-import-plugin-configuration\n [pluginActionKey]=\"functionKey$ | async\"\n (configurationEvent)=\"onImportConfiguration($event)\"\n></valtimo-import-plugin-configuration>\n\n<valtimo-plugin-configuration-container\n [pluginDefinitionKey]=\"pluginDefinitionKey$ | async\"\n [functionKey]=\"functionKey$ | async\"\n [save$]=\"save$\"\n [disabled$]=\"saving$\"\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n [prefillConfiguration$]=\"prefillConfiguration$\"\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n type=\"function\"\n></valtimo-plugin-configuration-container>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
2437
+ args: [{ standalone: false, selector: 'valtimo-plugin-action-configuration', 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-import-plugin-configuration\n [attr.data-test-id]=\"testIds.container\"\n [pluginActionKey]=\"functionKey$ | async\"\n (configurationEvent)=\"onImportConfiguration($event)\"\n></valtimo-import-plugin-configuration>\n\n<valtimo-plugin-configuration-container\n [pluginDefinitionKey]=\"pluginDefinitionKey$ | async\"\n [functionKey]=\"functionKey$ | async\"\n [save$]=\"save$\"\n [disabled$]=\"saving$\"\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n [prefillConfiguration$]=\"prefillConfiguration$\"\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n type=\"function\"\n></valtimo-plugin-configuration-container>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
2354
2438
  }], ctorParameters: () => [{ type: ProcessLinkStateService }, { type: PluginStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }, { type: ProcessLinkService }], propDecorators: { selectedPluginConfiguration$: [{
2355
2439
  type: Input
2356
2440
  }], valid: [{
@@ -2483,13 +2567,13 @@ class FormLinkProcessDiagramComponent {
2483
2567
  }
2484
2568
  this.version = +version;
2485
2569
  }
2486
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormLinkProcessDiagramComponent, deps: [{ token: i1$3.ProcessService }, { token: i3$2.ActivatedRoute }, { token: i2$1.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
2487
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormLinkProcessDiagramComponent, isStandalone: false, selector: "valtimo-form-link-process-diagram", outputs: { bpmnElementModalOpen: "bpmnElementModalOpen", bpmnElementModalClose: "bpmnElementModalClose" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\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: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i4.Select, selector: "cds-select, ibm-select", inputs: ["value", "display", "label", "helperText", "invalidText", "warn", "warnText", "id", "size", "disabled", "skeleton", "invalid", "readonly", "theme", "ariaLabel", "fluid"], outputs: ["valueChange"] }, { kind: "directive", type: i4.Option, selector: "option" }] }); }
2570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormLinkProcessDiagramComponent, deps: [{ token: i1$3.ProcessService }, { token: i3$1.ActivatedRoute }, { token: i2$1.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
2571
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormLinkProcessDiagramComponent, isStandalone: false, selector: "valtimo-form-link-process-diagram", outputs: { bpmnElementModalOpen: "bpmnElementModalOpen", bpmnElementModalClose: "bpmnElementModalClose" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i5.Select, selector: "cds-select, ibm-select", inputs: ["value", "display", "label", "helperText", "invalidText", "warn", "warnText", "id", "size", "disabled", "skeleton", "invalid", "readonly", "theme", "ariaLabel", "fluid"], outputs: ["valueChange"] }, { kind: "directive", type: i5.Option, selector: "option" }] }); }
2488
2572
  }
2489
2573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormLinkProcessDiagramComponent, decorators: [{
2490
2574
  type: Component,
2491
2575
  args: [{ standalone: false, selector: 'valtimo-form-link-process-diagram', 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<div class=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\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"] }]
2492
- }], ctorParameters: () => [{ type: i1$3.ProcessService }, { type: i3$2.ActivatedRoute }, { type: i2$1.PageTitleService }], propDecorators: { el: [{
2576
+ }], ctorParameters: () => [{ type: i1$3.ProcessService }, { type: i3$1.ActivatedRoute }, { type: i2$1.PageTitleService }], propDecorators: { el: [{
2493
2577
  type: ViewChild,
2494
2578
  args: ['ref']
2495
2579
  }], bpmnElementModalOpen: [{
@@ -2498,6 +2582,182 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
2498
2582
  type: Output
2499
2583
  }] } });
2500
2584
 
2585
+ /*
2586
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
2587
+ *
2588
+ * Licensed under EUPL, Version 1.2 (the "License");
2589
+ * you may not use this file except in compliance with the License.
2590
+ * You may obtain a copy of the License at
2591
+ *
2592
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
2593
+ *
2594
+ * Unless required by applicable law or agreed to in writing, software
2595
+ * distributed under the License is distributed on an "AS IS" basis,
2596
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2597
+ * See the License for the specific language governing permissions and
2598
+ * limitations under the License.
2599
+ */
2600
+ const READ_ONLY_INPUT_TYPES = ['email', 'number', 'password', 'search', 'tel', 'text', 'url'];
2601
+ const FOCUSABLE = 'a[href], area[href], button, input, select, textarea, iframe, [tabindex], [contenteditable]';
2602
+ // Carbon draws a control read-only through a modifier class on its wrapper.
2603
+ const CARBON_READ_ONLY_MODIFIERS = [
2604
+ ['.cds--checkbox-group', 'cds--checkbox-group--readonly'],
2605
+ ['.cds--checkbox-wrapper', 'cds--checkbox-wrapper--readonly'],
2606
+ ['.cds--combo-box', 'cds--combo-box--readonly'],
2607
+ ['.cds--dropdown', 'cds--dropdown--readonly'],
2608
+ ['.cds--multi-select', 'cds--multi-select--readonly'],
2609
+ ['.cds--number', 'cds--number--readonly'],
2610
+ ['.cds--radio-button-group', 'cds--radio-button-group--readonly'],
2611
+ ['.cds--select', 'cds--select--readonly'],
2612
+ ['.cds--slider-container', 'cds--slider-container--readonly'],
2613
+ ['.cds--text-area__wrapper', 'cds--text-area__wrapper--readonly'],
2614
+ ['.cds--text-input-wrapper', 'cds--text-input-wrapper--readonly'],
2615
+ ['.cds--time-picker', 'cds--time-picker--readonly'],
2616
+ ['.cds--toggle', 'cds--toggle--readonly'],
2617
+ ];
2618
+ // Fields used without their Carbon wrapper need their parent to carry the modifier instead.
2619
+ const CARBON_UNWRAPPED_FIELDS = [
2620
+ ['.cds--text-area', '.cds--text-area__wrapper', 'cds--text-area__wrapper--readonly'],
2621
+ ['.cds--text-input', '.cds--text-input-wrapper', 'cds--text-input-wrapper--readonly'],
2622
+ ];
2623
+ // Carbon buttons change the content, so read-only content leaves them out instead of disabling them.
2624
+ const EDIT_ACTIONS = '.cds--btn:not(.cds--text-input--password__visibility__toggle)';
2625
+ class ReadOnlyContentDirective {
2626
+ set readOnly(readOnly) {
2627
+ this._readOnly = !!readOnly;
2628
+ this.apply();
2629
+ }
2630
+ constructor(elementRef) {
2631
+ this.elementRef = elementRef;
2632
+ this._readOnly = false;
2633
+ this._observer = null;
2634
+ this._originalStates = new Map();
2635
+ this._blockActivation = (event) => {
2636
+ if (!this._readOnly)
2637
+ return;
2638
+ event.preventDefault();
2639
+ event.stopPropagation();
2640
+ };
2641
+ }
2642
+ ngOnInit() {
2643
+ this._observer = new MutationObserver(() => this.apply());
2644
+ this._observer.observe(this.elementRef.nativeElement, { childList: true, subtree: true });
2645
+ this.elementRef.nativeElement.addEventListener('click', this._blockActivation, true);
2646
+ this.apply();
2647
+ }
2648
+ ngOnDestroy() {
2649
+ this._observer?.disconnect();
2650
+ this.elementRef.nativeElement.removeEventListener('click', this._blockActivation, true);
2651
+ this._originalStates.clear();
2652
+ }
2653
+ apply() {
2654
+ const host = this.elementRef?.nativeElement;
2655
+ if (!host)
2656
+ return;
2657
+ if (!this._readOnly) {
2658
+ this.restore();
2659
+ return;
2660
+ }
2661
+ Array.from(host.children).forEach(child => this.setStyle(child, 'pointerEvents', 'none'));
2662
+ host
2663
+ .querySelectorAll(FOCUSABLE)
2664
+ .forEach(element => this.setAttribute(element, 'tabindex', '-1'));
2665
+ host.querySelectorAll('input').forEach(input => {
2666
+ if (READ_ONLY_INPUT_TYPES.includes(input.type))
2667
+ this.setReadOnly(input);
2668
+ });
2669
+ host.querySelectorAll('textarea').forEach(textarea => this.setReadOnly(textarea));
2670
+ host
2671
+ .querySelectorAll('[contenteditable="true"]')
2672
+ .forEach(editor => this.setAttribute(editor, 'contenteditable', 'false'));
2673
+ host
2674
+ .querySelectorAll('[role="combobox"], [role="listbox"]')
2675
+ .forEach(element => this.setAttribute(element, 'aria-readonly', 'true'));
2676
+ host
2677
+ .querySelectorAll('[role="button"]')
2678
+ .forEach(element => this.setAttribute(element, 'aria-disabled', 'true'));
2679
+ host
2680
+ .querySelectorAll(EDIT_ACTIONS)
2681
+ .forEach(action => this.setStyle(action, 'display', 'none'));
2682
+ this.applyCarbonReadOnlyStyling(host);
2683
+ }
2684
+ applyCarbonReadOnlyStyling(host) {
2685
+ CARBON_READ_ONLY_MODIFIERS.forEach(([selector, modifier]) => host
2686
+ .querySelectorAll(selector)
2687
+ .forEach(wrapper => this.addClass(wrapper, modifier)));
2688
+ CARBON_UNWRAPPED_FIELDS.forEach(([field, wrapper, modifier]) => host.querySelectorAll(field).forEach(control => {
2689
+ const parent = control.parentElement;
2690
+ if (!parent || control.closest(wrapper))
2691
+ return;
2692
+ this.addClass(parent, modifier);
2693
+ }));
2694
+ }
2695
+ addClass(element, className) {
2696
+ if (element.classList.contains(className))
2697
+ return;
2698
+ element.classList.add(className);
2699
+ this.stateOf(element).addedClasses.push(className);
2700
+ }
2701
+ setAttribute(element, name, value) {
2702
+ const attributes = this.stateOf(element).attributes;
2703
+ if (!attributes.has(name))
2704
+ attributes.set(name, element.getAttribute(name));
2705
+ element.setAttribute(name, value);
2706
+ }
2707
+ setReadOnly(control) {
2708
+ const state = this.stateOf(control);
2709
+ if (state.readOnly === null)
2710
+ state.readOnly = control.readOnly;
2711
+ control.readOnly = true;
2712
+ }
2713
+ setStyle(element, property, value) {
2714
+ const styles = this.stateOf(element).styles;
2715
+ if (!styles.has(property))
2716
+ styles.set(property, element.style[property]);
2717
+ element.style[property] = value;
2718
+ }
2719
+ stateOf(element) {
2720
+ const state = this._originalStates.get(element) ?? {
2721
+ addedClasses: [],
2722
+ attributes: new Map(),
2723
+ readOnly: null,
2724
+ styles: new Map(),
2725
+ };
2726
+ this._originalStates.set(element, state);
2727
+ return state;
2728
+ }
2729
+ restore() {
2730
+ this._originalStates.forEach((original, element) => {
2731
+ original.attributes.forEach((value, name) => {
2732
+ if (value === null) {
2733
+ element.removeAttribute(name);
2734
+ }
2735
+ else {
2736
+ element.setAttribute(name, value);
2737
+ }
2738
+ });
2739
+ original.styles.forEach((value, property) => (element.style[property] = value));
2740
+ original.addedClasses.forEach(className => element.classList.remove(className));
2741
+ if (original.readOnly !== null) {
2742
+ element.readOnly = original.readOnly;
2743
+ }
2744
+ });
2745
+ this._originalStates.clear();
2746
+ }
2747
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ReadOnlyContentDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
2748
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: ReadOnlyContentDirective, isStandalone: true, selector: "[valtimoReadOnlyContent]", inputs: { readOnly: ["valtimoReadOnlyContent", "readOnly"] }, ngImport: i0 }); }
2749
+ }
2750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ReadOnlyContentDirective, decorators: [{
2751
+ type: Directive,
2752
+ args: [{
2753
+ standalone: true,
2754
+ selector: '[valtimoReadOnlyContent]',
2755
+ }]
2756
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { readOnly: [{
2757
+ type: Input,
2758
+ args: ['valtimoReadOnlyContent']
2759
+ }] } });
2760
+
2501
2761
  /*
2502
2762
  * Copyright 2015-2026 Ritense BV, the Netherlands.
2503
2763
  *
@@ -3015,8 +3275,8 @@ class ConfigureBuildingBlockMappingsComponent {
3015
3275
  return false;
3016
3276
  return fields.some(field => field.required && field.name === target);
3017
3277
  }
3018
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ConfigureBuildingBlockMappingsComponent, deps: [{ token: i1$2.FormBuilder }, { token: BuildingBlockStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }, { token: ProcessLinkService }, { token: ProcessLinkStateService }, { token: i3.TranslateService }, { token: i3$2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: ProcessLinkBuildingBlockApiService }, { token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
3019
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: ConfigureBuildingBlockMappingsComponent, isStandalone: true, selector: "valtimo-configure-building-block-mappings", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@let obs =\n {\n fields: (buildingBlockFields$ | async),\n fieldItems: (buildingBlockFieldItems$ | async),\n params: (params$ | async),\n buildingBlockParams: (buildingBlockParams$ | async),\n sourceContextName: (sourceContextName$ | async),\n targetBuildingBlockName: (targetBuildingBlockName$ | async),\n sourceIsCase: (sourceIsCase$ | async),\n sourceIsIndependent: (sourceIsIndependent$ | async),\n caseLabelTranslation: ('Case' | translate),\n processLabelTranslation: ('processLinkConfiguration.buildingBlock.process' | translate),\n buildingBlockLabelTranslation:\n ('processLinkConfiguration.buildingBlock.selectLabel' | translate),\n };\n\n<div class=\"mapping-step\">\n <section class=\"mapping-section\" [attr.data-test-id]=\"testIds.inputSection\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.inputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"inputsForm\">\n <div class=\"mapping-header input\">\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n </div>\n\n <div formArrayName=\"inputs\">\n @for (group of inputs.controls; let inputIndex = $index; track inputIndex) {\n <div\n class=\"mapping-row input\"\n [formGroup]=\"group\"\n [attr.data-test-id]=\"testIds.inputRow\"\n >\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"source\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [notation]=\"'slashes'\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [excludePrefixes]=\"[ValuePathSelectorPrefix.TASK]\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [formControl]=\"group.get('source')\"\n ></valtimo-value-path-selector>\n }\n\n <div class=\"arrow\">\u2192</div>\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [attr.data-test-id]=\"testIds.inputTargetSelectWrapper\">\n @if (isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <div class=\"required-target\" [attr.data-test-id]=\"testIds.inputRequiredTargetLabel\">\n {{ group.get('target')?.value }}\n </div>\n } @else {\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"target\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [items]=\"getBuildingBlockFieldItemsForRow$(group) | async\"\n [dropUp]=\"false\"\n >\n </v-select>\n }\n </div>\n\n <div class=\"mapping-cell-actions\">\n @if (!isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteInput(inputIndex)\"\n [attr.data-test-id]=\"testIds.inputDeleteButton\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n } @else {\n <div class=\"required-indicator\" [attr.data-test-id]=\"testIds.inputRequiredIndicator\">\n *\n </div>\n\n <div>\n {{ 'interface.required' | translate }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addInput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addInput' | translate\"\n [disabled]=\"allInputsMapped$ | async\"\n [attr.data-test-id]=\"testIds.addInputButton\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addInput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n\n <section class=\"mapping-section\" [attr.data-test-id]=\"testIds.outputSection\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.outputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"outputsForm\">\n <div class=\"mapping-header output\">\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <div class=\"sync-options\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.sync.title' | translate\"\n />\n </div>\n </div>\n\n <div formArrayName=\"outputs\">\n @for (group of outputs.controls; let outputIndex = $index; track outputIndex) {\n <div\n class=\"mapping-row output\"\n [formGroup]=\"group\"\n [attr.data-test-id]=\"testIds.outputRow\"\n >\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [attr.data-test-id]=\"testIds.outputSourceSelectWrapper\">\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"source\"\n [items]=\"obs.fieldItems || []\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [dropUp]=\"true\"\n >\n </v-select>\n </div>\n\n <div class=\"arrow\">\u2192</div>\n </div>\n\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"target\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [notation]=\"'slashes'\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [excludePrefixes]=\"[ValuePathSelectorPrefix.TASK]\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [formControl]=\"group.get('target')\"\n [appendInline]=\"false\"\n [filterItems]=\"getUsedCaseTargetsForRow$(group) | async\"\n [dropUp]=\"true\"\n ></valtimo-value-path-selector>\n }\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n <cds-radio-group\n class=\"sync-radio-group\"\n formControlName=\"syncTiming\"\n [attr.name]=\"'syncTiming-' + outputIndex\"\n >\n @for (item of syncTimingItems; track item.id) {\n <cds-radio [value]=\"item.id\" [checked]=\"isSyncTimingSelected(group, item.id)\">\n {{ item.labelKey | translate }}\n </cds-radio>\n }\n </cds-radio-group>\n </div>\n\n <div class=\"mapping-cell-actions\">\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteOutput(outputIndex)\"\n [attr.data-test-id]=\"testIds.outputDeleteButton\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addOutput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addOutput' | translate\"\n [attr.data-test-id]=\"testIds.addOutputButton\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addOutput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n</div>\n", styles: [".section-header{font-size:14px;line-height:18px;font-weight:600}.mapping-section{margin-bottom:16px}.mapping-row,.mapping-header{display:grid;align-items:center}.mapping-row.input,.mapping-header.input{grid-template-columns:1fr 1fr}.mapping-row.output,.mapping-header.output{grid-template-columns:5fr 6fr 3fr}.mapping-header.output .sync-options{padding-left:10px;display:flex}.mapping-row{margin-bottom:8px;padding:8px;background-color:var(--cds-layer)}.mapping-row .mapping-part{display:flex}.mapping-row .arrow{text-align:center;width:40px;line-height:40px;font-size:large}.mapping-row .mapping-cell{flex:1;min-width:0}.mapping-row .mapping-cell-actions{display:flex;align-self:flex-end;text-transform:capitalize;margin-left:10px}.mapping-row .mapping-cell-actions .required-indicator{margin:0 5px;color:var(--cds-text-error)}.mapping-row .mapping-cell-actions button{margin-bottom:5px}.mapping-row .mapping-cell-actions button ::ng-deep .cds--btn__icon{margin:0!important}.mapping-row .sync-radio-group{padding-left:10px;margin-top:8px}.mapping-row .sync-radio-group .sync-radio:first-child{margin-right:0}.mapping-row .sync-radio-group ::ng-deep .cds--radio-button__label{justify-content:normal}::ng-deep .process-link-modal-container .cds--modal-container{max-width:1280px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "ngmodule", type: RadioModule }, { kind: "component", type: i4.Radio, selector: "cds-radio, ibm-radio", inputs: ["checked", "name", "disabled", "labelPlacement", "ariaLabelledby", "ariaLabel", "required", "value", "skeleton", "id"], outputs: ["change"] }, { kind: "component", type: i4.RadioGroup, selector: "cds-radio-group, ibm-radio-group", inputs: ["selected", "value", "name", "disabled", "skeleton", "orientation", "labelPlacement", "legend", "ariaLabel", "ariaLabelledby", "helperText", "invalid", "invalidText", "warn", "warnText"], outputs: ["change"] }, { kind: "ngmodule", type: InputModule }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i2$1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i2$1.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", "warn", "warnText", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3278
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ConfigureBuildingBlockMappingsComponent, deps: [{ token: i1$2.FormBuilder }, { token: BuildingBlockStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }, { token: ProcessLinkService }, { token: ProcessLinkStateService }, { token: i3.TranslateService }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: ProcessLinkBuildingBlockApiService }, { token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
3279
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: ConfigureBuildingBlockMappingsComponent, isStandalone: true, selector: "valtimo-configure-building-block-mappings", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@let obs =\n {\n fields: (buildingBlockFields$ | async),\n fieldItems: (buildingBlockFieldItems$ | async),\n params: (params$ | async),\n buildingBlockParams: (buildingBlockParams$ | async),\n sourceContextName: (sourceContextName$ | async),\n targetBuildingBlockName: (targetBuildingBlockName$ | async),\n sourceIsCase: (sourceIsCase$ | async),\n sourceIsIndependent: (sourceIsIndependent$ | async),\n caseLabelTranslation: ('Case' | translate),\n processLabelTranslation: ('processLinkConfiguration.buildingBlock.process' | translate),\n buildingBlockLabelTranslation:\n ('processLinkConfiguration.buildingBlock.selectLabel' | translate),\n };\n\n<div class=\"mapping-step\">\n <section class=\"mapping-section\" [attr.data-test-id]=\"testIds.inputSection\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.inputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"inputsForm\">\n <div class=\"mapping-header input\">\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n </div>\n\n <div formArrayName=\"inputs\">\n @for (group of inputs.controls; let inputIndex = $index; track inputIndex) {\n <div\n class=\"mapping-row input\"\n [formGroup]=\"group\"\n [attr.data-test-id]=\"testIds.inputRow\"\n >\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"source\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [notation]=\"'slashes'\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [excludePrefixes]=\"[ValuePathSelectorPrefix.TASK]\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [formControl]=\"group.get('source')\"\n ></valtimo-value-path-selector>\n }\n\n <div class=\"arrow\">\u2192</div>\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [attr.data-test-id]=\"testIds.inputTargetSelectWrapper\">\n @if (isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <div class=\"required-target\" [attr.data-test-id]=\"testIds.inputRequiredTargetLabel\">\n {{ group.get('target')?.value }}\n </div>\n } @else {\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"target\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [items]=\"getBuildingBlockFieldItemsForRow$(group) | async\"\n [dropUp]=\"false\"\n >\n </v-select>\n }\n </div>\n\n <div class=\"mapping-cell-actions\">\n @if (!isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteInput(inputIndex)\"\n [attr.data-test-id]=\"testIds.inputDeleteButton\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n } @else {\n <div class=\"required-indicator\" [attr.data-test-id]=\"testIds.inputRequiredIndicator\">\n *\n </div>\n\n <div>\n {{ 'interface.required' | translate }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addInput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addInput' | translate\"\n [disabled]=\"allInputsMapped$ | async\"\n [attr.data-test-id]=\"testIds.addInputButton\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addInput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n\n <section class=\"mapping-section\" [attr.data-test-id]=\"testIds.outputSection\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.outputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"outputsForm\">\n <div class=\"mapping-header output\">\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <div class=\"sync-options\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.sync.title' | translate\"\n />\n </div>\n </div>\n\n <div formArrayName=\"outputs\">\n @for (group of outputs.controls; let outputIndex = $index; track outputIndex) {\n <div\n class=\"mapping-row output\"\n [formGroup]=\"group\"\n [attr.data-test-id]=\"testIds.outputRow\"\n >\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [attr.data-test-id]=\"testIds.outputSourceSelectWrapper\">\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"source\"\n [items]=\"obs.fieldItems || []\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [dropUp]=\"true\"\n >\n </v-select>\n </div>\n\n <div class=\"arrow\">\u2192</div>\n </div>\n\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"target\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [notation]=\"'slashes'\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [excludePrefixes]=\"[ValuePathSelectorPrefix.TASK]\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [formControl]=\"group.get('target')\"\n [appendInline]=\"false\"\n [filterItems]=\"getUsedCaseTargetsForRow$(group) | async\"\n [dropUp]=\"true\"\n ></valtimo-value-path-selector>\n }\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n <cds-radio-group\n class=\"sync-radio-group\"\n formControlName=\"syncTiming\"\n [attr.name]=\"'syncTiming-' + outputIndex\"\n >\n @for (item of syncTimingItems; track item.id) {\n <cds-radio [value]=\"item.id\" [checked]=\"isSyncTimingSelected(group, item.id)\">\n {{ item.labelKey | translate }}\n </cds-radio>\n }\n </cds-radio-group>\n </div>\n\n <div class=\"mapping-cell-actions\">\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteOutput(outputIndex)\"\n [attr.data-test-id]=\"testIds.outputDeleteButton\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addOutput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addOutput' | translate\"\n [attr.data-test-id]=\"testIds.addOutputButton\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addOutput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n</div>\n", styles: [".section-header{font-size:14px;line-height:18px;font-weight:600}.mapping-section{margin-bottom:16px}.mapping-row,.mapping-header{display:grid;align-items:center}.mapping-row.input,.mapping-header.input{grid-template-columns:1fr 1fr}.mapping-row.output,.mapping-header.output{grid-template-columns:5fr 6fr 3fr}.mapping-header.output .sync-options{padding-left:10px;display:flex}.mapping-row{margin-bottom:8px;padding:8px;background-color:var(--cds-layer)}.mapping-row .mapping-part{display:flex}.mapping-row .arrow{text-align:center;width:40px;line-height:40px;font-size:large}.mapping-row .mapping-cell{flex:1;min-width:0}.mapping-row .mapping-cell-actions{display:flex;align-self:flex-end;text-transform:capitalize;margin-left:10px}.mapping-row .mapping-cell-actions .required-indicator{margin:0 5px;color:var(--cds-text-error)}.mapping-row .mapping-cell-actions button{margin-bottom:5px}.mapping-row .mapping-cell-actions button ::ng-deep .cds--btn__icon{margin:0!important}.mapping-row .sync-radio-group{padding-left:10px;margin-top:8px}.mapping-row .sync-radio-group .sync-radio:first-child{margin-right:0}.mapping-row .sync-radio-group ::ng-deep .cds--radio-button__label{justify-content:normal}::ng-deep .process-link-modal-container .cds--modal-container{max-width:1280px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "ngmodule", type: RadioModule }, { kind: "component", type: i5.Radio, selector: "cds-radio, ibm-radio", inputs: ["checked", "name", "disabled", "labelPlacement", "ariaLabelledby", "ariaLabel", "required", "value", "skeleton", "id"], outputs: ["change"] }, { kind: "component", type: i5.RadioGroup, selector: "cds-radio-group, ibm-radio-group", inputs: ["selected", "value", "name", "disabled", "skeleton", "orientation", "labelPlacement", "legend", "ariaLabel", "ariaLabelledby", "helperText", "invalid", "invalidText", "warn", "warnText"], outputs: ["change"] }, { kind: "ngmodule", type: InputModule }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i2$1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i2$1.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", "warn", "warnText", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i5.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3020
3280
  }
3021
3281
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ConfigureBuildingBlockMappingsComponent, decorators: [{
3022
3282
  type: Component,
@@ -3034,7 +3294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
3034
3294
  SelectModule,
3035
3295
  LayerModule,
3036
3296
  ], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@let obs =\n {\n fields: (buildingBlockFields$ | async),\n fieldItems: (buildingBlockFieldItems$ | async),\n params: (params$ | async),\n buildingBlockParams: (buildingBlockParams$ | async),\n sourceContextName: (sourceContextName$ | async),\n targetBuildingBlockName: (targetBuildingBlockName$ | async),\n sourceIsCase: (sourceIsCase$ | async),\n sourceIsIndependent: (sourceIsIndependent$ | async),\n caseLabelTranslation: ('Case' | translate),\n processLabelTranslation: ('processLinkConfiguration.buildingBlock.process' | translate),\n buildingBlockLabelTranslation:\n ('processLinkConfiguration.buildingBlock.selectLabel' | translate),\n };\n\n<div class=\"mapping-step\">\n <section class=\"mapping-section\" [attr.data-test-id]=\"testIds.inputSection\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.inputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"inputsForm\">\n <div class=\"mapping-header input\">\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n </div>\n\n <div formArrayName=\"inputs\">\n @for (group of inputs.controls; let inputIndex = $index; track inputIndex) {\n <div\n class=\"mapping-row input\"\n [formGroup]=\"group\"\n [attr.data-test-id]=\"testIds.inputRow\"\n >\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"source\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [notation]=\"'slashes'\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [excludePrefixes]=\"[ValuePathSelectorPrefix.TASK]\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [formControl]=\"group.get('source')\"\n ></valtimo-value-path-selector>\n }\n\n <div class=\"arrow\">\u2192</div>\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [attr.data-test-id]=\"testIds.inputTargetSelectWrapper\">\n @if (isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <div class=\"required-target\" [attr.data-test-id]=\"testIds.inputRequiredTargetLabel\">\n {{ group.get('target')?.value }}\n </div>\n } @else {\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"target\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [items]=\"getBuildingBlockFieldItemsForRow$(group) | async\"\n [dropUp]=\"false\"\n >\n </v-select>\n }\n </div>\n\n <div class=\"mapping-cell-actions\">\n @if (!isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteInput(inputIndex)\"\n [attr.data-test-id]=\"testIds.inputDeleteButton\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n } @else {\n <div class=\"required-indicator\" [attr.data-test-id]=\"testIds.inputRequiredIndicator\">\n *\n </div>\n\n <div>\n {{ 'interface.required' | translate }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addInput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addInput' | translate\"\n [disabled]=\"allInputsMapped$ | async\"\n [attr.data-test-id]=\"testIds.addInputButton\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addInput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n\n <section class=\"mapping-section\" [attr.data-test-id]=\"testIds.outputSection\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.outputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"outputsForm\">\n <div class=\"mapping-header output\">\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <div class=\"sync-options\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.sync.title' | translate\"\n />\n </div>\n </div>\n\n <div formArrayName=\"outputs\">\n @for (group of outputs.controls; let outputIndex = $index; track outputIndex) {\n <div\n class=\"mapping-row output\"\n [formGroup]=\"group\"\n [attr.data-test-id]=\"testIds.outputRow\"\n >\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [attr.data-test-id]=\"testIds.outputSourceSelectWrapper\">\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"source\"\n [items]=\"obs.fieldItems || []\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [dropUp]=\"true\"\n >\n </v-select>\n </div>\n\n <div class=\"arrow\">\u2192</div>\n </div>\n\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"target\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [notation]=\"'slashes'\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [excludePrefixes]=\"[ValuePathSelectorPrefix.TASK]\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [formControl]=\"group.get('target')\"\n [appendInline]=\"false\"\n [filterItems]=\"getUsedCaseTargetsForRow$(group) | async\"\n [dropUp]=\"true\"\n ></valtimo-value-path-selector>\n }\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n <cds-radio-group\n class=\"sync-radio-group\"\n formControlName=\"syncTiming\"\n [attr.name]=\"'syncTiming-' + outputIndex\"\n >\n @for (item of syncTimingItems; track item.id) {\n <cds-radio [value]=\"item.id\" [checked]=\"isSyncTimingSelected(group, item.id)\">\n {{ item.labelKey | translate }}\n </cds-radio>\n }\n </cds-radio-group>\n </div>\n\n <div class=\"mapping-cell-actions\">\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteOutput(outputIndex)\"\n [attr.data-test-id]=\"testIds.outputDeleteButton\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addOutput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addOutput' | translate\"\n [attr.data-test-id]=\"testIds.addOutputButton\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addOutput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n</div>\n", styles: [".section-header{font-size:14px;line-height:18px;font-weight:600}.mapping-section{margin-bottom:16px}.mapping-row,.mapping-header{display:grid;align-items:center}.mapping-row.input,.mapping-header.input{grid-template-columns:1fr 1fr}.mapping-row.output,.mapping-header.output{grid-template-columns:5fr 6fr 3fr}.mapping-header.output .sync-options{padding-left:10px;display:flex}.mapping-row{margin-bottom:8px;padding:8px;background-color:var(--cds-layer)}.mapping-row .mapping-part{display:flex}.mapping-row .arrow{text-align:center;width:40px;line-height:40px;font-size:large}.mapping-row .mapping-cell{flex:1;min-width:0}.mapping-row .mapping-cell-actions{display:flex;align-self:flex-end;text-transform:capitalize;margin-left:10px}.mapping-row .mapping-cell-actions .required-indicator{margin:0 5px;color:var(--cds-text-error)}.mapping-row .mapping-cell-actions button{margin-bottom:5px}.mapping-row .mapping-cell-actions button ::ng-deep .cds--btn__icon{margin:0!important}.mapping-row .sync-radio-group{padding-left:10px;margin-top:8px}.mapping-row .sync-radio-group .sync-radio:first-child{margin-right:0}.mapping-row .sync-radio-group ::ng-deep .cds--radio-button__label{justify-content:normal}::ng-deep .process-link-modal-container .cds--modal-container{max-width:1280px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
3037
- }], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: BuildingBlockStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }, { type: ProcessLinkService }, { type: ProcessLinkStateService }, { type: i3.TranslateService }, { type: i3$2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: ProcessLinkBuildingBlockApiService }, { type: ProcessLinkStateService }] });
3297
+ }], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: BuildingBlockStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }, { type: ProcessLinkService }, { type: ProcessLinkStateService }, { type: i3.TranslateService }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: ProcessLinkBuildingBlockApiService }, { type: ProcessLinkStateService }] });
3038
3298
 
3039
3299
  /*
3040
3300
  * Copyright 2015-2026 Ritense BV, the Netherlands.
@@ -3054,6 +3314,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
3054
3314
  class ChooseProcessLinkTypeComponent {
3055
3315
  constructor(processLinkStateService) {
3056
3316
  this.processLinkStateService = processLinkStateService;
3317
+ this.testIds = PROCESS_LINK_TYPE_CHOOSER_TEST_IDS;
3318
+ this.testIdPrefix = PROCESS_LINK_TYPE_BUTTON_TEST_ID_PREFIX;
3057
3319
  this.availableProcessLinkTypes$ = this.processLinkStateService.availableProcessLinkTypes$;
3058
3320
  }
3059
3321
  getTooltipKey(processLinkTypeId) {
@@ -3067,11 +3329,11 @@ class ChooseProcessLinkTypeComponent {
3067
3329
  this.processLinkStateService.selectProcessLinkType(processLinkTypeId);
3068
3330
  }
3069
3331
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChooseProcessLinkTypeComponent, deps: [{ token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
3070
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ChooseProcessLinkTypeComponent, isStandalone: false, selector: "valtimo-choose-process-link-type", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"getTooltipKey(processLinkTypeId) | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'ui-component'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i2$1.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3332
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ChooseProcessLinkTypeComponent, isStandalone: false, selector: "valtimo-choose-process-link-type", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\" [attr.data-test-id]=\"testIds.container\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n [attr.data-test-id]=\"testIdPrefix + processLinkTypeId\"\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"getTooltipKey(processLinkTypeId) | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'ui-component'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i2$1.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3071
3333
  }
3072
3334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ChooseProcessLinkTypeComponent, decorators: [{
3073
3335
  type: Component,
3074
- args: [{ standalone: false, selector: 'valtimo-choose-process-link-type', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"getTooltipKey(processLinkTypeId) | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'ui-component'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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"] }]
3336
+ args: [{ standalone: false, selector: 'valtimo-choose-process-link-type', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\" [attr.data-test-id]=\"testIds.container\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n [attr.data-test-id]=\"testIdPrefix + processLinkTypeId\"\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"getTooltipKey(processLinkTypeId) | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'ui-component'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\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"] }]
3075
3337
  }], ctorParameters: () => [{ type: ProcessLinkStateService }] });
3076
3338
 
3077
3339
  /*
@@ -3192,7 +3454,7 @@ class FormDisplayConfigurationComponent {
3192
3454
  this.buttonService.disableSaveButton();
3193
3455
  }
3194
3456
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormDisplayConfigurationComponent, deps: [{ token: ProcessLinkButtonService }, { token: ProcessLinkStateService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
3195
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: FormDisplayConfigurationComponent, isStandalone: false, selector: "valtimo-form-display-configuration", inputs: { selectedFormDefinition: "selectedFormDefinition" }, outputs: { formDisplayValue: "formDisplayValue", formSizeValue: "formSizeValue", subtitlesValue: "subtitlesValue" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDisplayValue: formDisplayValue$ | async,\n formDisplayTypeListItems: formDisplayTypeListItems$ | async,\n formSizeListItems: formSizeListItems$ | async,\n disableFormSizeInput: disableFormSizeInput$ | async,\n subtitles: subtitles$ | async,\n isUserTask: isUserTask$ | async,\n isStartEvent: isStartEvent$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n @if (obs.isUserTask || obs.isStartEvent) {\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.displayType.placeholder' | translate\"\n [label]=\"'processLinkSteps.displayType.label' | translate\"\n [disabled]=\"obs.saving\"\n (selected)=\"selectFormDisplayType($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formDisplayTypeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n\n <br />\n }\n\n @if (obs.isUserTask || obs.isStartEvent) {\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.formSize.placeholder' | translate\"\n [label]=\"'processLinkSteps.formSize.label' | translate\"\n [disabled]=\"obs.disableFormSizeInput || obs.saving\"\n (selected)=\"selectFormSize($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formSizeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n\n <br />\n }\n\n @if (obs.isUserTask) {\n <valtimo-carbon-multi-input\n type=\"value\"\n titleTranslationKey=\"processLinkSteps.subtitles\"\n addRowTranslationKey=\"processLinkSteps.addSubtitle\"\n [disabled]=\"obs.saving\"\n [fullWidth]=\"true\"\n [minimumAmountOfRows]=\"0\"\n [initialAmountOfRows]=\"0\"\n [defaultValues]=\"obs.subtitles\"\n (valueChange)=\"onSubtitlesChange($event)\"\n ></valtimo-carbon-multi-input>\n }\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i2$1.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: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3457
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: FormDisplayConfigurationComponent, isStandalone: false, selector: "valtimo-form-display-configuration", inputs: { selectedFormDefinition: "selectedFormDefinition" }, outputs: { formDisplayValue: "formDisplayValue", formSizeValue: "formSizeValue", subtitlesValue: "subtitlesValue" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDisplayValue: formDisplayValue$ | async,\n formDisplayTypeListItems: formDisplayTypeListItems$ | async,\n formSizeListItems: formSizeListItems$ | async,\n disableFormSizeInput: disableFormSizeInput$ | async,\n subtitles: subtitles$ | async,\n isUserTask: isUserTask$ | async,\n isStartEvent: isStartEvent$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n @if (obs.isUserTask || obs.isStartEvent) {\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.displayType.placeholder' | translate\"\n [label]=\"'processLinkSteps.displayType.label' | translate\"\n [disabled]=\"obs.saving\"\n (selected)=\"selectFormDisplayType($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formDisplayTypeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n\n <br />\n }\n\n @if (obs.isUserTask || obs.isStartEvent) {\n <cds-combo-box\n [placeholder]=\"'processLinkSteps.formSize.placeholder' | translate\"\n [label]=\"'processLinkSteps.formSize.label' | translate\"\n [disabled]=\"obs.disableFormSizeInput || obs.saving\"\n (selected)=\"selectFormSize($event)\"\n >\n <cds-dropdown-list [items]=\"obs.formSizeListItems || []\"></cds-dropdown-list>\n </cds-combo-box>\n\n <br />\n }\n\n @if (obs.isUserTask) {\n <valtimo-carbon-multi-input\n type=\"value\"\n titleTranslationKey=\"processLinkSteps.subtitles\"\n addRowTranslationKey=\"processLinkSteps.addSubtitle\"\n [disabled]=\"obs.saving\"\n [fullWidth]=\"true\"\n [minimumAmountOfRows]=\"0\"\n [initialAmountOfRows]=\"0\"\n [defaultValues]=\"obs.subtitles\"\n (valueChange)=\"onSubtitlesChange($event)\"\n ></valtimo-carbon-multi-input>\n }\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i2$1.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: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3196
3458
  }
3197
3459
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormDisplayConfigurationComponent, decorators: [{
3198
3460
  type: Component,
@@ -3382,13 +3644,13 @@ class SelectFormComponent {
3382
3644
  this.stateService.sendProcessLinkCreateEvent(createRequest);
3383
3645
  });
3384
3646
  }
3385
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectFormComponent, deps: [{ token: i1$4.FormService }, { token: ProcessLinkStateService }, { token: ProcessLinkService }, { token: ProcessLinkButtonService }, { token: i3$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3386
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectFormComponent, isStandalone: false, selector: "valtimo-select-form", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDefinitions: formDefinitionListItems$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseFormDescription' | translate }}\n </p>\n <div class=\"select-form\">\n <cds-combo-box\n [appendInline]=\"true\"\n [disabled]=\"!obs.formDefinitions || obs.saving\"\n [items]=\"obs.formDefinitions || []\"\n [placeholder]=\"'interface.typeToSearch' | translate\"\n (selected)=\"selectFormDefinition($event)\"\n [label]=\"'processLinkSteps.selectForm' | translate\"\n ><cds-dropdown-list></cds-dropdown-list\n ></cds-combo-box>\n <br />\n\n <valtimo-form-display-configuration\n [selectedFormDefinition]=\"selectedFormDefinition\"\n (formDisplayValue)=\"selectedFormDisplayValue($event)\"\n (formSizeValue)=\"selectedFormSizeValue($event)\"\n (subtitlesValue)=\"selectedSubtitlesValue($event)\"\n ></valtimo-form-display-configuration>\n </div>\n</ng-container>\n", styles: [".label-with-tooltip{display:flex;align-items:center}.select-form{display:flex;flex-direction:column;width:100%;margin-top:24px}\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: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: FormDisplayConfigurationComponent, selector: "valtimo-form-display-configuration", inputs: ["selectedFormDefinition"], outputs: ["formDisplayValue", "formSizeValue", "subtitlesValue"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectFormComponent, deps: [{ token: i1$4.FormService }, { token: ProcessLinkStateService }, { token: ProcessLinkService }, { token: ProcessLinkButtonService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectFormComponent, isStandalone: false, selector: "valtimo-select-form", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDefinitions: formDefinitionListItems$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseFormDescription' | translate }}\n </p>\n <div class=\"select-form\">\n <cds-combo-box\n [appendInline]=\"true\"\n [disabled]=\"!obs.formDefinitions || obs.saving\"\n [items]=\"obs.formDefinitions || []\"\n [placeholder]=\"'interface.typeToSearch' | translate\"\n (selected)=\"selectFormDefinition($event)\"\n [label]=\"'processLinkSteps.selectForm' | translate\"\n ><cds-dropdown-list></cds-dropdown-list\n ></cds-combo-box>\n <br />\n\n <valtimo-form-display-configuration\n [selectedFormDefinition]=\"selectedFormDefinition\"\n (formDisplayValue)=\"selectedFormDisplayValue($event)\"\n (formSizeValue)=\"selectedFormSizeValue($event)\"\n (subtitlesValue)=\"selectedSubtitlesValue($event)\"\n ></valtimo-form-display-configuration>\n </div>\n</ng-container>\n", styles: [".label-with-tooltip{display:flex;align-items:center}.select-form{display:flex;flex-direction:column;width:100%;margin-top:24px}\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: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: FormDisplayConfigurationComponent, selector: "valtimo-form-display-configuration", inputs: ["selectedFormDefinition"], outputs: ["formDisplayValue", "formSizeValue", "subtitlesValue"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3387
3649
  }
3388
3650
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectFormComponent, decorators: [{
3389
3651
  type: Component,
3390
3652
  args: [{ standalone: false, selector: 'valtimo-select-form', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDefinitions: formDefinitionListItems$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseFormDescription' | translate }}\n </p>\n <div class=\"select-form\">\n <cds-combo-box\n [appendInline]=\"true\"\n [disabled]=\"!obs.formDefinitions || obs.saving\"\n [items]=\"obs.formDefinitions || []\"\n [placeholder]=\"'interface.typeToSearch' | translate\"\n (selected)=\"selectFormDefinition($event)\"\n [label]=\"'processLinkSteps.selectForm' | translate\"\n ><cds-dropdown-list></cds-dropdown-list\n ></cds-combo-box>\n <br />\n\n <valtimo-form-display-configuration\n [selectedFormDefinition]=\"selectedFormDefinition\"\n (formDisplayValue)=\"selectedFormDisplayValue($event)\"\n (formSizeValue)=\"selectedFormSizeValue($event)\"\n (subtitlesValue)=\"selectedSubtitlesValue($event)\"\n ></valtimo-form-display-configuration>\n </div>\n</ng-container>\n", styles: [".label-with-tooltip{display:flex;align-items:center}.select-form{display:flex;flex-direction:column;width:100%;margin-top:24px}\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"] }]
3391
- }], ctorParameters: () => [{ type: i1$4.FormService }, { type: ProcessLinkStateService }, { type: ProcessLinkService }, { type: ProcessLinkButtonService }, { type: i3$2.ActivatedRoute }] });
3653
+ }], ctorParameters: () => [{ type: i1$4.FormService }, { type: ProcessLinkStateService }, { type: ProcessLinkService }, { type: ProcessLinkButtonService }, { type: i3$1.ActivatedRoute }] });
3392
3654
 
3393
3655
  /*
3394
3656
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -3502,7 +3764,7 @@ class SelectFormFlowComponent {
3502
3764
  .subscribe(([selectedProcessLink, isUserTask, isStartEvent]) => {
3503
3765
  const updateProcessLinkRequest = {
3504
3766
  id: selectedProcessLink.id,
3505
- formFlowDefinitionId: this.selectedFormFlowDefinitionId,
3767
+ formFlowDefinitionKey: this.selectedFormFlowDefinitionId,
3506
3768
  activityId: selectedProcessLink.activityId,
3507
3769
  ...(isUserTask && {
3508
3770
  formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,
@@ -3547,13 +3809,13 @@ class SelectFormFlowComponent {
3547
3809
  this.stateService.sendProcessLinkCreateEvent(createRequest);
3548
3810
  });
3549
3811
  }
3550
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectFormFlowComponent, deps: [{ token: i1$5.FormFlowService }, { token: ProcessLinkStateService }, { token: ProcessLinkService }, { token: ProcessLinkButtonService }, { token: i3$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3551
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectFormFlowComponent, isStandalone: false, selector: "valtimo-select-form-flow", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formFlowDefinitions: formFlowDefinitionListItems$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseFormFlowDescription' | translate }}\n </p>\n\n <div class=\"select-form-flow\">\n <cds-combo-box\n [appendInline]=\"true\"\n [disabled]=\"!obs.formFlowDefinitions || obs.saving\"\n [items]=\"obs.formFlowDefinitions || []\"\n [placeholder]=\"'interface.typeToSearch' | translate\"\n (selected)=\"selectFormFlowDefinition($event)\"\n [label]=\"'processLinkSteps.selectFormFlow' | translate\"\n ><cds-dropdown-list></cds-dropdown-list\n ></cds-combo-box>\n\n <br />\n\n <valtimo-form-display-configuration\n [selectedFormDefinition]=\"selectedFormFlowDefinitionId\"\n (formDisplayValue)=\"selectedFormDisplayValue($event)\"\n (formSizeValue)=\"selectedFormSizeValue($event)\"\n (subtitlesValue)=\"selectedSubtitlesValue($event)\"\n ></valtimo-form-display-configuration>\n </div>\n</ng-container>\n", styles: [".label-with-tooltip{display:flex;align-items:center}.select-form-flow{display:flex;flex-direction:column;width:100%;margin-top:24px}\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: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: FormDisplayConfigurationComponent, selector: "valtimo-form-display-configuration", inputs: ["selectedFormDefinition"], outputs: ["formDisplayValue", "formSizeValue", "subtitlesValue"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3812
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectFormFlowComponent, deps: [{ token: i1$5.FormFlowService }, { token: ProcessLinkStateService }, { token: ProcessLinkService }, { token: ProcessLinkButtonService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3813
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectFormFlowComponent, isStandalone: false, selector: "valtimo-select-form-flow", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formFlowDefinitions: formFlowDefinitionListItems$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseFormFlowDescription' | translate }}\n </p>\n\n <div class=\"select-form-flow\">\n <cds-combo-box\n [appendInline]=\"true\"\n [disabled]=\"!obs.formFlowDefinitions || obs.saving\"\n [items]=\"obs.formFlowDefinitions || []\"\n [placeholder]=\"'interface.typeToSearch' | translate\"\n (selected)=\"selectFormFlowDefinition($event)\"\n [label]=\"'processLinkSteps.selectFormFlow' | translate\"\n ><cds-dropdown-list></cds-dropdown-list\n ></cds-combo-box>\n\n <br />\n\n <valtimo-form-display-configuration\n [selectedFormDefinition]=\"selectedFormFlowDefinitionId\"\n (formDisplayValue)=\"selectedFormDisplayValue($event)\"\n (formSizeValue)=\"selectedFormSizeValue($event)\"\n (subtitlesValue)=\"selectedSubtitlesValue($event)\"\n ></valtimo-form-display-configuration>\n </div>\n</ng-container>\n", styles: [".label-with-tooltip{display:flex;align-items:center}.select-form-flow{display:flex;flex-direction:column;width:100%;margin-top:24px}\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: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: FormDisplayConfigurationComponent, selector: "valtimo-form-display-configuration", inputs: ["selectedFormDefinition"], outputs: ["formDisplayValue", "formSizeValue", "subtitlesValue"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3552
3814
  }
3553
3815
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectFormFlowComponent, decorators: [{
3554
3816
  type: Component,
3555
3817
  args: [{ standalone: false, selector: 'valtimo-select-form-flow', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formFlowDefinitions: formFlowDefinitionListItems$ | async,\n saving: saving$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseFormFlowDescription' | translate }}\n </p>\n\n <div class=\"select-form-flow\">\n <cds-combo-box\n [appendInline]=\"true\"\n [disabled]=\"!obs.formFlowDefinitions || obs.saving\"\n [items]=\"obs.formFlowDefinitions || []\"\n [placeholder]=\"'interface.typeToSearch' | translate\"\n (selected)=\"selectFormFlowDefinition($event)\"\n [label]=\"'processLinkSteps.selectFormFlow' | translate\"\n ><cds-dropdown-list></cds-dropdown-list\n ></cds-combo-box>\n\n <br />\n\n <valtimo-form-display-configuration\n [selectedFormDefinition]=\"selectedFormFlowDefinitionId\"\n (formDisplayValue)=\"selectedFormDisplayValue($event)\"\n (formSizeValue)=\"selectedFormSizeValue($event)\"\n (subtitlesValue)=\"selectedSubtitlesValue($event)\"\n ></valtimo-form-display-configuration>\n </div>\n</ng-container>\n", styles: [".label-with-tooltip{display:flex;align-items:center}.select-form-flow{display:flex;flex-direction:column;width:100%;margin-top:24px}\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"] }]
3556
- }], ctorParameters: () => [{ type: i1$5.FormFlowService }, { type: ProcessLinkStateService }, { type: ProcessLinkService }, { type: ProcessLinkButtonService }, { type: i3$2.ActivatedRoute }] });
3818
+ }], ctorParameters: () => [{ type: i1$5.FormFlowService }, { type: ProcessLinkStateService }, { type: ProcessLinkService }, { type: ProcessLinkButtonService }, { type: i3$1.ActivatedRoute }] });
3557
3819
 
3558
3820
  /*
3559
3821
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -3652,7 +3914,7 @@ class SelectUIComponentComponent {
3652
3914
  });
3653
3915
  }
3654
3916
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectUIComponentComponent, deps: [{ token: ProcessLinkStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkService }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
3655
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectUIComponentComponent, isStandalone: false, selector: "valtimo-select-ui-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<cds-combo-box\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"formCustomComponentListItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'processLinkSteps.uiComponent' | translate\"\n (selected)=\"selectCustomComponent($event)\"\n>\n <cds-dropdown-list></cds-dropdown-list>\n</cds-combo-box>\n", styles: [".custom-widget{padding:24px}.custom-widget__header{display:flex;align-items:center;justify-content:space-between}.custom-widget__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}\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: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3917
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectUIComponentComponent, isStandalone: false, selector: "valtimo-select-ui-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<cds-combo-box\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"formCustomComponentListItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'processLinkSteps.uiComponent' | translate\"\n (selected)=\"selectCustomComponent($event)\"\n>\n <cds-dropdown-list></cds-dropdown-list>\n</cds-combo-box>\n", styles: [".custom-widget{padding:24px}.custom-widget__header{display:flex;align-items:center;justify-content:space-between}.custom-widget__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}\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: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3656
3918
  }
3657
3919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectUIComponentComponent, decorators: [{
3658
3920
  type: Component,
@@ -3755,7 +4017,7 @@ class SelectBuildingBlockComponent {
3755
4017
  return name;
3756
4018
  }
3757
4019
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectBuildingBlockComponent, deps: [{ token: ProcessLinkBuildingBlockApiService }, { token: ProcessLinkStateService }, { token: BuildingBlockStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }], target: i0.ɵɵFactoryTarget.Component }); }
3758
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectBuildingBlockComponent, isStandalone: false, selector: "valtimo-select-building-block", ngImport: i0, template: "<!--\n Copyright 2015-2025 Ritense BV\n Licensed under the EUPL, Version 1.2\n-->\n\n<div class=\"select-building-block\" *ngIf=\"!loading; else loadingState\">\n <ng-container *ngIf=\"buildingBlocks$ | async as buildingBlocks\">\n <ng-container *ngIf=\"buildingBlocks.length; else emptyState\">\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"onSelectionChange($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ 'processLinkConfiguration.buildingBlock.name' | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.buildingBlock.description' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let buildingBlock of buildingBlocks\" [value]=\"buildingBlock\">\n <cds-list-column>\n <div *ngIf=\"buildingBlock.imageBase64\">\n <img\n class=\"building-block-artwork\"\n [src]=\"'data:image/png;base64,' + buildingBlock.imageBase64\"\n [title]=\"buildingBlock.name\"\n />\n </div>\n </cds-list-column>\n <cds-list-column>{{ buildingBlock.name }}</cds-list-column>\n <cds-list-column>{{ buildingBlock.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingState>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #emptyState>\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.emptyState' | translate }}\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.empty-state{padding:1rem;border:1px solid #e0e0e0;border-radius:4px;background-color:#f4f4f4;color:#8d8d8d}.building-block-artwork{object-fit:contain;height:60px;width:100%;margin-bottom:-.5rem}::ng-deep .list-container .cds--structured-list-td{vertical-align:top}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i4.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i4.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i4.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i4.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
4020
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SelectBuildingBlockComponent, isStandalone: false, selector: "valtimo-select-building-block", ngImport: i0, template: "<!--\n Copyright 2015-2025 Ritense BV\n Licensed under the EUPL, Version 1.2\n-->\n\n<div class=\"select-building-block\" *ngIf=\"!loading; else loadingState\">\n <ng-container *ngIf=\"buildingBlocks$ | async as buildingBlocks\">\n <ng-container *ngIf=\"buildingBlocks.length; else emptyState\">\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"onSelectionChange($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ 'processLinkConfiguration.buildingBlock.name' | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.buildingBlock.description' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let buildingBlock of buildingBlocks\" [value]=\"buildingBlock\">\n <cds-list-column>\n <div *ngIf=\"buildingBlock.imageBase64\">\n <img\n class=\"building-block-artwork\"\n [src]=\"'data:image/png;base64,' + buildingBlock.imageBase64\"\n [title]=\"buildingBlock.name\"\n />\n </div>\n </cds-list-column>\n <cds-list-column>{{ buildingBlock.name }}</cds-list-column>\n <cds-list-column>{{ buildingBlock.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingState>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #emptyState>\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.emptyState' | translate }}\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.empty-state{padding:1rem;border:1px solid #e0e0e0;border-radius:4px;background-color:#f4f4f4;color:#8d8d8d}.building-block-artwork{object-fit:contain;height:60px;width:100%;margin-bottom:-.5rem}::ng-deep .list-container .cds--structured-list-td{vertical-align:top}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i5.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i5.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i5.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i5.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
3759
4021
  }
3760
4022
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelectBuildingBlockComponent, decorators: [{
3761
4023
  type: Component,
@@ -3877,9 +4139,15 @@ class ConfigureBuildingBlockPluginsComponent {
3877
4139
  this.buildingBlockStateService.requiredPluginKeys$,
3878
4140
  this.buildingBlockStateService.mappingsComplete$,
3879
4141
  this.buildingBlockStateService.requirementsLoading$,
4142
+ /*
4143
+ Changing the version keeps the existing mappings and prunes them only once the new
4144
+ version's fields have loaded. Without this, the fields of the previous version could
4145
+ still be in play on the next step, and a save would send mappings that no longer exist.
4146
+ */
4147
+ this.buildingBlockStateService.fieldsLoading$,
3880
4148
  this.definitionVersionTag$,
3881
- ]).subscribe(([keys, complete, loading, version]) => {
3882
- if (loading || !version) {
4149
+ ]).subscribe(([keys, complete, requirementsLoading, fieldsLoading, version]) => {
4150
+ if (requirementsLoading || fieldsLoading || !version) {
3883
4151
  this.buttonService.disableNextButton();
3884
4152
  return;
3885
4153
  }
@@ -3943,8 +4211,7 @@ class ConfigureBuildingBlockPluginsComponent {
3943
4211
  const currentVersion = this.buildingBlockStateService.getDefinitionSnapshot().versionTag;
3944
4212
  if (normalizedValue === currentVersion)
3945
4213
  return;
3946
- this.buildingBlockStateService.setPluginConfigurationMappings(undefined);
3947
- this.buildingBlockStateService.setDefinitionVersionTag(normalizedValue);
4214
+ this.buildingBlockStateService.changeDefinitionVersionTag(normalizedValue);
3948
4215
  }
3949
4216
  createProcessLink() {
3950
4217
  this.stateService.modalParams$.pipe(take(1)).subscribe(modalParams => {
@@ -4002,11 +4269,11 @@ class ConfigureBuildingBlockPluginsComponent {
4002
4269
  }, {});
4003
4270
  }
4004
4271
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ConfigureBuildingBlockPluginsComponent, deps: [{ token: ProcessLinkStateService }, { token: BuildingBlockStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }, { token: i1$1.PluginManagementService }, { token: i1$1.PluginTranslationService }, { token: ProcessLinkService }, { token: i3.TranslateService }, { token: ProcessLinkBuildingBlockApiService }], target: i0.ɵɵFactoryTarget.Component }); }
4005
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: ConfigureBuildingBlockPluginsComponent, isStandalone: false, selector: "valtimo-configure-building-block-plugins", 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<div class=\"configure-building-block-plugins\">\n <div\n *ngIf=\"dependenciesNotificationObject$ | async as dependenciesNotificationObject\"\n class=\"configure-building-block-plugins__warning\"\n >\n <cds-notification [notificationObj]=\"dependenciesNotificationObject\"> </cds-notification>\n </div>\n\n @if (versionItems$ | async; as versionItems) {\n @let versionPlaceholder = versionPlaceholder$ | async;\n <div class=\"version-select\">\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [items]=\"versionItems\"\n [label]=\"'processLinkConfiguration.buildingBlock.versionLabel' | translate\"\n [placeholder]=\"versionPlaceholder || ''\"\n (selected)=\"onVersionChange($event?.id || '')\"\n (clear)=\"onVersionChange('')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n\n @if (loading$ | async) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n } @else {\n <div class=\"plugin-list\">\n @if (definitionVersionTag$ | async) {\n @if (isNestedBuildingBlock$ | async) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.nestedBuildingBlockInfo' | translate }}\n </div>\n } @else {\n @if (pluginConfigurationViewModels$ | async; as pluginConfigurationViewModels) {\n @if (pluginConfigurationViewModels.length === 0) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.noRequirements' | translate }}\n </div>\n } @else {\n @let configurationPlaceholder = configurationPlaceholder$ | async;\n\n <div class=\"plugin-row\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.pluginLabel' | translate\"\n >\n </v-input-label>\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.configurationLabel' | translate\"\n required=\"true\"\n >\n </v-input-label>\n </div>\n\n @for (plugin of pluginConfigurationViewModels; track plugin.key) {\n <div class=\"plugin-row\">\n <div class=\"plugin-label\">\n {{ plugin.label }}\n </div>\n\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [items]=\"plugin.dropdownItems\"\n [placeholder]=\"configurationPlaceholder || ''\"\n (selected)=\"onMappingChange(plugin.key, $event?.id || '')\"\n (clear)=\"onMappingChange(plugin.key, '')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n }\n }\n }\n }\n </div>\n }\n</div>\n", styles: [".loading-container{display:flex;justify-content:center;padding:2rem 0}.empty-state{padding:1rem;border:1px solid #e0e0e0;border-radius:4px;background-color:#f4f4f4;color:#8d8d8d}.plugin-row{display:grid;align-items:center;grid-template-columns:1fr 1fr;margin-bottom:15px}.plugin-row .plugin-label{padding-left:16px;border-block-end:1px solid var(--cds-border-strong);height:100%;margin-right:15px;display:grid;align-items:center}.plugin-list{margin-top:30px}.configure-building-block-plugins__warning{display:flex;width:100%;margin-bottom:24px}.configure-building-block-plugins__warning ::ng-deep cds-notification{max-inline-size:100%;min-inline-size:100%}\n"], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i2$1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i4.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
4272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: ConfigureBuildingBlockPluginsComponent, isStandalone: false, selector: "valtimo-configure-building-block-plugins", 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<div class=\"configure-building-block-plugins\">\n <div\n *ngIf=\"dependenciesNotificationObject$ | async as dependenciesNotificationObject\"\n class=\"configure-building-block-plugins__warning\"\n >\n <cds-notification [notificationObj]=\"dependenciesNotificationObject\"> </cds-notification>\n </div>\n\n @if (versionItems$ | async; as versionItems) {\n @let versionPlaceholder = versionPlaceholder$ | async;\n <div class=\"version-select\">\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"versionItems\"\n [label]=\"'processLinkConfiguration.buildingBlock.versionLabel' | translate\"\n [placeholder]=\"versionPlaceholder || ''\"\n (selected)=\"onVersionChange($event?.id || '')\"\n (clear)=\"onVersionChange('')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n\n @if (loading$ | async) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n } @else {\n <div class=\"plugin-list\">\n @if (definitionVersionTag$ | async) {\n @if (isNestedBuildingBlock$ | async) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.nestedBuildingBlockInfo' | translate }}\n </div>\n } @else {\n @if (pluginConfigurationViewModels$ | async; as pluginConfigurationViewModels) {\n @if (pluginConfigurationViewModels.length === 0) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.noRequirements' | translate }}\n </div>\n } @else {\n @let configurationPlaceholder = configurationPlaceholder$ | async;\n\n <div class=\"plugin-row\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.pluginLabel' | translate\"\n >\n </v-input-label>\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.configurationLabel' | translate\"\n required=\"true\"\n >\n </v-input-label>\n </div>\n\n @for (plugin of pluginConfigurationViewModels; track plugin.key) {\n <div class=\"plugin-row\">\n <div class=\"plugin-label\">\n {{ plugin.label }}\n </div>\n\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"plugin.dropdownItems\"\n [placeholder]=\"configurationPlaceholder || ''\"\n (selected)=\"onMappingChange(plugin.key, $event?.id || '')\"\n (clear)=\"onMappingChange(plugin.key, '')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n }\n }\n }\n }\n </div>\n }\n</div>\n", styles: [".version-select ::ng-deep .cds--list-box__menu{scrollbar-color:var(--cds-border-strong) var(--cds-layer);scrollbar-width:thin}.version-select ::ng-deep .cds--list-box__menu::-webkit-scrollbar{width:8px}.version-select ::ng-deep .cds--list-box__menu::-webkit-scrollbar-track{background:var(--cds-layer)}.version-select ::ng-deep .cds--list-box__menu::-webkit-scrollbar-thumb{background:var(--cds-border-strong);border-radius:4px}.loading-container{display:flex;justify-content:center;padding:2rem 0}.empty-state{padding:1rem;border:1px solid #e0e0e0;border-radius:4px;background-color:#f4f4f4;color:#8d8d8d}.plugin-row{display:grid;align-items:center;grid-template-columns:1fr 1fr;margin-bottom:15px}.plugin-row .plugin-label{padding-left:16px;border-block-end:1px solid var(--cds-border-strong);height:100%;margin-right:15px;display:grid;align-items:center}.plugin-list{margin-top:30px}.configure-building-block-plugins__warning{display:flex;width:100%;margin-bottom:24px}.configure-building-block-plugins__warning ::ng-deep cds-notification{max-inline-size:100%;min-inline-size:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i5.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i2$1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i5.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
4006
4273
  }
4007
4274
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ConfigureBuildingBlockPluginsComponent, decorators: [{
4008
4275
  type: Component,
4009
- args: [{ standalone: false, selector: 'valtimo-configure-building-block-plugins', 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<div class=\"configure-building-block-plugins\">\n <div\n *ngIf=\"dependenciesNotificationObject$ | async as dependenciesNotificationObject\"\n class=\"configure-building-block-plugins__warning\"\n >\n <cds-notification [notificationObj]=\"dependenciesNotificationObject\"> </cds-notification>\n </div>\n\n @if (versionItems$ | async; as versionItems) {\n @let versionPlaceholder = versionPlaceholder$ | async;\n <div class=\"version-select\">\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [items]=\"versionItems\"\n [label]=\"'processLinkConfiguration.buildingBlock.versionLabel' | translate\"\n [placeholder]=\"versionPlaceholder || ''\"\n (selected)=\"onVersionChange($event?.id || '')\"\n (clear)=\"onVersionChange('')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n\n @if (loading$ | async) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n } @else {\n <div class=\"plugin-list\">\n @if (definitionVersionTag$ | async) {\n @if (isNestedBuildingBlock$ | async) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.nestedBuildingBlockInfo' | translate }}\n </div>\n } @else {\n @if (pluginConfigurationViewModels$ | async; as pluginConfigurationViewModels) {\n @if (pluginConfigurationViewModels.length === 0) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.noRequirements' | translate }}\n </div>\n } @else {\n @let configurationPlaceholder = configurationPlaceholder$ | async;\n\n <div class=\"plugin-row\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.pluginLabel' | translate\"\n >\n </v-input-label>\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.configurationLabel' | translate\"\n required=\"true\"\n >\n </v-input-label>\n </div>\n\n @for (plugin of pluginConfigurationViewModels; track plugin.key) {\n <div class=\"plugin-row\">\n <div class=\"plugin-label\">\n {{ plugin.label }}\n </div>\n\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [items]=\"plugin.dropdownItems\"\n [placeholder]=\"configurationPlaceholder || ''\"\n (selected)=\"onMappingChange(plugin.key, $event?.id || '')\"\n (clear)=\"onMappingChange(plugin.key, '')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n }\n }\n }\n }\n </div>\n }\n</div>\n", styles: [".loading-container{display:flex;justify-content:center;padding:2rem 0}.empty-state{padding:1rem;border:1px solid #e0e0e0;border-radius:4px;background-color:#f4f4f4;color:#8d8d8d}.plugin-row{display:grid;align-items:center;grid-template-columns:1fr 1fr;margin-bottom:15px}.plugin-row .plugin-label{padding-left:16px;border-block-end:1px solid var(--cds-border-strong);height:100%;margin-right:15px;display:grid;align-items:center}.plugin-list{margin-top:30px}.configure-building-block-plugins__warning{display:flex;width:100%;margin-bottom:24px}.configure-building-block-plugins__warning ::ng-deep cds-notification{max-inline-size:100%;min-inline-size:100%}\n"] }]
4276
+ args: [{ standalone: false, selector: 'valtimo-configure-building-block-plugins', 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<div class=\"configure-building-block-plugins\">\n <div\n *ngIf=\"dependenciesNotificationObject$ | async as dependenciesNotificationObject\"\n class=\"configure-building-block-plugins__warning\"\n >\n <cds-notification [notificationObj]=\"dependenciesNotificationObject\"> </cds-notification>\n </div>\n\n @if (versionItems$ | async; as versionItems) {\n @let versionPlaceholder = versionPlaceholder$ | async;\n <div class=\"version-select\">\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"versionItems\"\n [label]=\"'processLinkConfiguration.buildingBlock.versionLabel' | translate\"\n [placeholder]=\"versionPlaceholder || ''\"\n (selected)=\"onVersionChange($event?.id || '')\"\n (clear)=\"onVersionChange('')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n\n @if (loading$ | async) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n } @else {\n <div class=\"plugin-list\">\n @if (definitionVersionTag$ | async) {\n @if (isNestedBuildingBlock$ | async) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.nestedBuildingBlockInfo' | translate }}\n </div>\n } @else {\n @if (pluginConfigurationViewModels$ | async; as pluginConfigurationViewModels) {\n @if (pluginConfigurationViewModels.length === 0) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.noRequirements' | translate }}\n </div>\n } @else {\n @let configurationPlaceholder = configurationPlaceholder$ | async;\n\n <div class=\"plugin-row\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.pluginLabel' | translate\"\n >\n </v-input-label>\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.configurationLabel' | translate\"\n required=\"true\"\n >\n </v-input-label>\n </div>\n\n @for (plugin of pluginConfigurationViewModels; track plugin.key) {\n <div class=\"plugin-row\">\n <div class=\"plugin-label\">\n {{ plugin.label }}\n </div>\n\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [items]=\"plugin.dropdownItems\"\n [placeholder]=\"configurationPlaceholder || ''\"\n (selected)=\"onMappingChange(plugin.key, $event?.id || '')\"\n (clear)=\"onMappingChange(plugin.key, '')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n }\n }\n }\n }\n </div>\n }\n</div>\n", styles: [".version-select ::ng-deep .cds--list-box__menu{scrollbar-color:var(--cds-border-strong) var(--cds-layer);scrollbar-width:thin}.version-select ::ng-deep .cds--list-box__menu::-webkit-scrollbar{width:8px}.version-select ::ng-deep .cds--list-box__menu::-webkit-scrollbar-track{background:var(--cds-layer)}.version-select ::ng-deep .cds--list-box__menu::-webkit-scrollbar-thumb{background:var(--cds-border-strong);border-radius:4px}.loading-container{display:flex;justify-content:center;padding:2rem 0}.empty-state{padding:1rem;border:1px solid #e0e0e0;border-radius:4px;background-color:#f4f4f4;color:#8d8d8d}.plugin-row{display:grid;align-items:center;grid-template-columns:1fr 1fr;margin-bottom:15px}.plugin-row .plugin-label{padding-left:16px;border-block-end:1px solid var(--cds-border-strong);height:100%;margin-right:15px;display:grid;align-items:center}.plugin-list{margin-top:30px}.configure-building-block-plugins__warning{display:flex;width:100%;margin-bottom:24px}.configure-building-block-plugins__warning ::ng-deep cds-notification{max-inline-size:100%;min-inline-size:100%}\n"] }]
4010
4277
  }], ctorParameters: () => [{ type: ProcessLinkStateService }, { type: BuildingBlockStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }, { type: i1$1.PluginManagementService }, { type: i1$1.PluginTranslationService }, { type: ProcessLinkService }, { type: i3.TranslateService }, { type: ProcessLinkBuildingBlockApiService }] });
4011
4278
 
4012
4279
  /*
@@ -4032,6 +4299,7 @@ class ProcessLinkModalComponent {
4032
4299
  this.pluginStateService = pluginStateService;
4033
4300
  this.processLinkStateService = processLinkStateService;
4034
4301
  this.configService = configService;
4302
+ this.testIds = PROCESS_LINK_MODAL_TEST_IDS;
4035
4303
  this.showModal$ = this.stateService.showModal$;
4036
4304
  this.processStepName$ = this.stateService.elementName$;
4037
4305
  this.steps$ = this.stepService.steps$;
@@ -4047,6 +4315,7 @@ class ProcessLinkModalComponent {
4047
4315
  this.typeOfSelectedProcessLink$ = this.stateService.typeOfSelectedProcessLink$;
4048
4316
  this.viewModelEnabled$ = this.stateService.viewModelEnabled$;
4049
4317
  this.isEditing$ = this.stateService.isEditing$;
4318
+ this.readOnly$ = this.stateService.readOnly$;
4050
4319
  this.isAdHocBuildingBlock$ = this.stepService.skipBuildingBlockSelectionStep$;
4051
4320
  this.selectedPluginConfiguration$ = this.pluginStateService.selectedPluginConfiguration$;
4052
4321
  this.showViewModelToggle$ = this.configService.getFeatureToggleObservable('enableFormViewModel');
@@ -4074,11 +4343,11 @@ class ProcessLinkModalComponent {
4074
4343
  this.processLinkStateService.setViewModelEnabled(value);
4075
4344
  }
4076
4345
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkModalComponent, deps: [{ token: ProcessLinkStateService }, { token: ProcessLinkStepService }, { token: ProcessLinkButtonService }, { token: PluginStateService }, { token: ProcessLinkStateService }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
4077
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ProcessLinkModalComponent, isStandalone: false, selector: "valtimo-process-link-modal", 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<div\n class=\"process-link-modal-container\"\n *ngIf=\"{\n showModal: showModal$ | async,\n processStepName: processStepName$ | async,\n steps: steps$ | async,\n selectedPluginConfiguration: selectedPluginConfiguration$ | async,\n currentStepIndex: currentStepIndex$ | async,\n currentStepId: currentStepId$ | async,\n showSaveButton: showSaveButton$ | async,\n enableSaveButton: enableSaveButton$ | async,\n showBackButton: showBackButton$ | async,\n showNextButton: showNextButton$ | async,\n enableNextButton: enableNextButton$ | async,\n saving: saving$ | async,\n hideProgressIndicator: hideProgressIndicator$ | async,\n typeOfSelectedProgressLink: typeOfSelectedProcessLink$ | async,\n isEditing: isEditing$ | async,\n isAdHocBuildingBlock: isAdHocBuildingBlock$ | async,\n } as obs\"\n>\n <cds-modal valtimoCdsModal [open]=\"obs.showModal\" size=\"lg\" (close)=\"closeModal()\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <h2 *ngIf=\"!obs.isAdHocBuildingBlock\" cdsModalHeaderLabel>{{ 'processLinkConfiguration.configureStep' | translate }}</h2>\n <h3 cdsModalHeaderHeading>\n <ng-container *ngIf=\"obs.isAdHocBuildingBlock; else defaultModalTitle\">\n {{ 'processLinkConfiguration.buildingBlockActionTitle' | translate: {buildingBlockName: obs.processStepName || '-'} }}\n </ng-container>\n <ng-template #defaultModalTitle>\n {{\n 'processLinkConfiguration.modalTitle'\n | translate: {processStepName: obs.processStepName || '-'}\n }}\n </ng-template>\n </h3>\n <h4 cdsModalHeaderLabel *ngIf=\"obs.typeOfSelectedProgressLink === 'plugin'\">\n {{\n 'processLinkConfiguration.pluginConfiguration'\n | translate: {pluginConfigTitle: obs.selectedPluginConfiguration?.title || '-'}\n }}\n </h4>\n <div class=\"process-link-progress\">\n <ng-container *ngTemplateOutlet=\"progressIndicator; context: {obs: obs}\"></ng-container>\n </div>\n </cds-modal-header>\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"stepContent; context: {obs: obs}\"></ng-container>\n </section>\n <ng-template *ngTemplateOutlet=\"footer; context: {obs: obs}\"></ng-template>\n </cds-modal>\n</div>\n\n<ng-template #progressIndicator let-obs=\"obs\">\n <cds-progress-indicator\n *ngIf=\"obs.steps && !obs.hideProgressIndicator\"\n [steps]=\"obs.steps\"\n [current]=\"obs.currentStepIndex\"\n spacing=\"equal\"\n ></cds-progress-indicator>\n</ng-template>\n\n<ng-template #stepContent let-obs=\"obs\">\n <div class=\"cds-loading-container\" *ngIf=\"obs.saving\">\n <cds-loading></cds-loading>\n </div>\n <div [ngClass]=\"{hidden: obs.saving}\">\n <ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'chooseProcessLinkType'\">\n <valtimo-choose-process-link-type></valtimo-choose-process-link-type>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectForm'\">\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle$ | async\"\n [label]=\"'processLinkConfiguration.toggleViewModel.title' | translate\"\n [onText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [offText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [checked]=\"viewModelEnabled$ | async\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectFormFlow'\">\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'choosePluginConfiguration' ||\n obs.currentStepId === 'choosePluginDefinition'\n \"\n >\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'selectBuildingBlock'\">\n <valtimo-select-building-block></valtimo-select-building-block>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginAction'\">\n <valtimo-select-plugin-action></valtimo-select-plugin-action>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configurePluginAction'\">\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockPlugins'\">\n <valtimo-configure-building-block-plugins></valtimo-configure-building-block-plugins>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockMappings'\">\n <valtimo-configure-building-block-mappings></valtimo-configure-building-block-mappings>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'uiComponent'\">\n <valtimo-select-ui-component></valtimo-select-ui-component>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #footer let-obs=\"obs\">\n <cds-modal-footer *ngIf=\"!obs.saving\">\n <button cdsButton=\"ghost\" (click)=\"closeModal()\" [disabled]=\"obs.disabled\">\n {{ 'processLinkConfiguration.cancel' | translate }}\n </button>\n <div class=\"footer-spacer\"></div>\n <button\n cdsButton=\"danger--primary\"\n *ngIf=\"obs.isEditing\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n *ngIf=\"obs.showBackButton && !obs.saving\"\n cdsButton=\"secondary\"\n (click)=\"backButtonClick()\"\n >\n {{ 'processLinkConfiguration.back' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showNextButton && !obs.saving\"\n [disabled]=\"!obs.enableNextButton\"\n (click)=\"nextButtonClick()\"\n >\n {{ 'processLinkConfiguration.next' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showSaveButton && !obs.saving\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </cds-modal-footer>\n</ng-template>\n", styles: ["::ng-deep .process-link-modal-container .cds--modal-container{max-width:960px;min-height:70%}::ng-deep .process-link-modal-container .cds--modal-footer .footer-spacer{flex:0 1 50%}.cds-loading-container{position:absolute;top:50px;padding-bottom:50px;left:0;width:100%;height:calc(100% - 50px);display:flex;justify-content:center;align-items:center;background:var(--cds-layer);z-index:99;box-sizing:border-box}.process-link-progress{width:100%;margin-top:32px;margin-bottom:16px}.hidden{visibility:hidden}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i4.ModalHeaderLabel, selector: "[cdsModalHeaderLabel], [ibmModalHeaderLabel]" }, { kind: "component", type: i4.ProgressIndicator, selector: "cds-progress-indicator, ibm-progress-indicator", inputs: ["current", "steps", "translations", "orientation", "skeleton", "spacing"], outputs: ["stepSelected"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i2$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: i4.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: ConfigureBuildingBlockMappingsComponent, selector: "valtimo-configure-building-block-mappings" }, { kind: "component", type: SelectPluginConfigurationComponent, selector: "valtimo-select-plugin-configuration" }, { kind: "component", type: SelectPluginActionComponent, selector: "valtimo-select-plugin-action" }, { kind: "component", type: PluginActionConfigurationComponent, selector: "valtimo-plugin-action-configuration", inputs: ["selectedPluginConfiguration$"], outputs: ["valid", "configuration"] }, { kind: "component", type: ChooseProcessLinkTypeComponent, selector: "valtimo-choose-process-link-type" }, { kind: "component", type: SelectFormComponent, selector: "valtimo-select-form" }, { kind: "component", type: SelectFormFlowComponent, selector: "valtimo-select-form-flow" }, { kind: "component", type: SelectUIComponentComponent, selector: "valtimo-select-ui-component" }, { kind: "component", type: SelectBuildingBlockComponent, selector: "valtimo-select-building-block" }, { kind: "component", type: ConfigureBuildingBlockPluginsComponent, selector: "valtimo-configure-building-block-plugins" }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
4346
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ProcessLinkModalComponent, isStandalone: false, selector: "valtimo-process-link-modal", 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<div\n class=\"process-link-modal-container\"\n *ngIf=\"{\n showModal: showModal$ | async,\n processStepName: processStepName$ | async,\n steps: steps$ | async,\n selectedPluginConfiguration: selectedPluginConfiguration$ | async,\n currentStepIndex: currentStepIndex$ | async,\n currentStepId: currentStepId$ | async,\n showSaveButton: showSaveButton$ | async,\n enableSaveButton: enableSaveButton$ | async,\n showBackButton: showBackButton$ | async,\n showNextButton: showNextButton$ | async,\n enableNextButton: enableNextButton$ | async,\n saving: saving$ | async,\n hideProgressIndicator: hideProgressIndicator$ | async,\n typeOfSelectedProgressLink: typeOfSelectedProcessLink$ | async,\n isEditing: isEditing$ | async,\n isAdHocBuildingBlock: isAdHocBuildingBlock$ | async,\n readOnly: readOnly$ | async,\n } as obs\"\n>\n <cds-modal valtimoCdsModal [open]=\"obs.showModal\" size=\"lg\" (close)=\"closeModal()\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <h2 *ngIf=\"!obs.isAdHocBuildingBlock\" cdsModalHeaderLabel>\n {{ 'processLinkConfiguration.configureStep' | translate }}\n </h2>\n <h3 cdsModalHeaderHeading [attr.data-test-id]=\"testIds.heading\">\n <ng-container *ngIf=\"obs.isAdHocBuildingBlock; else defaultModalTitle\">\n {{\n 'processLinkConfiguration.buildingBlockActionTitle'\n | translate: {buildingBlockName: obs.processStepName || '-'}\n }}\n </ng-container>\n <ng-template #defaultModalTitle>\n {{\n 'processLinkConfiguration.modalTitle'\n | translate: {processStepName: obs.processStepName || '-'}\n }}\n </ng-template>\n </h3>\n <h4\n cdsModalHeaderLabel\n *ngIf=\"obs.typeOfSelectedProgressLink === 'plugin'\"\n [attr.data-test-id]=\"testIds.pluginConfigurationLabel\"\n >\n {{\n 'processLinkConfiguration.pluginConfiguration'\n | translate: {pluginConfigTitle: obs.selectedPluginConfiguration?.title || '-'}\n }}\n </h4>\n <div class=\"process-link-progress\">\n <ng-container *ngTemplateOutlet=\"progressIndicator; context: {obs: obs}\"></ng-container>\n </div>\n </cds-modal-header>\n <section cdsModalContent [cdsLayer]=\"1\" [valtimoReadOnlyContent]=\"obs.readOnly\">\n <ng-container *ngTemplateOutlet=\"stepContent; context: {obs: obs}\"></ng-container>\n </section>\n <ng-template *ngTemplateOutlet=\"footer; context: {obs: obs}\"></ng-template>\n </cds-modal>\n</div>\n\n<ng-template #progressIndicator let-obs=\"obs\">\n <cds-progress-indicator\n *ngIf=\"obs.steps && !obs.hideProgressIndicator\"\n [attr.data-test-id]=\"testIds.progressIndicator\"\n [steps]=\"obs.steps\"\n [current]=\"obs.currentStepIndex\"\n spacing=\"equal\"\n ></cds-progress-indicator>\n</ng-template>\n\n<ng-template #stepContent let-obs=\"obs\">\n <div class=\"cds-loading-container\" *ngIf=\"obs.saving\">\n <cds-loading></cds-loading>\n </div>\n <div [ngClass]=\"{hidden: obs.saving}\">\n <ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'chooseProcessLinkType'\">\n <valtimo-choose-process-link-type></valtimo-choose-process-link-type>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectForm'\">\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle$ | async\"\n [label]=\"'processLinkConfiguration.toggleViewModel.title' | translate\"\n [onText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [offText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [checked]=\"viewModelEnabled$ | async\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectFormFlow'\">\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'choosePluginConfiguration' ||\n obs.currentStepId === 'choosePluginDefinition'\n \"\n >\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'selectBuildingBlock'\">\n <valtimo-select-building-block></valtimo-select-building-block>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginAction'\">\n <valtimo-select-plugin-action></valtimo-select-plugin-action>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configurePluginAction'\">\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockPlugins'\">\n <valtimo-configure-building-block-plugins></valtimo-configure-building-block-plugins>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockMappings'\">\n <valtimo-configure-building-block-mappings></valtimo-configure-building-block-mappings>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'uiComponent'\">\n <valtimo-select-ui-component></valtimo-select-ui-component>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #footer let-obs=\"obs\">\n <cds-modal-footer *ngIf=\"!obs.saving\">\n <button\n cdsButton=\"ghost\"\n [attr.data-test-id]=\"testIds.cancelButton\"\n (click)=\"closeModal()\"\n [disabled]=\"obs.disabled\"\n >\n {{ (obs.readOnly ? 'interface.close' : 'processLinkConfiguration.cancel') | translate }}\n </button>\n <div class=\"footer-spacer\"></div>\n <button\n cdsButton=\"danger--primary\"\n *ngIf=\"obs.isEditing && !obs.readOnly\"\n [attr.data-test-id]=\"testIds.unlinkButton\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n *ngIf=\"obs.showBackButton && !obs.saving && !obs.readOnly\"\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.backButton\"\n (click)=\"backButtonClick()\"\n >\n {{ 'processLinkConfiguration.back' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showNextButton && !obs.saving && !obs.readOnly\"\n [attr.data-test-id]=\"testIds.nextButton\"\n [disabled]=\"!obs.enableNextButton\"\n (click)=\"nextButtonClick()\"\n >\n {{ 'processLinkConfiguration.next' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showSaveButton && !obs.saving && !obs.readOnly\"\n [attr.data-test-id]=\"testIds.completeButton\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </cds-modal-footer>\n</ng-template>\n", styles: ["::ng-deep .process-link-modal-container .cds--modal-container{max-width:960px;min-height:70%}::ng-deep .process-link-modal-container .cds--modal-footer .footer-spacer{flex:0 1 50%}.cds-loading-container{position:absolute;top:50px;padding-bottom:50px;left:0;width:100%;height:calc(100% - 50px);display:flex;justify-content:center;align-items:center;background:var(--cds-layer);z-index:99;box-sizing:border-box}.process-link-progress{width:100%;margin-top:32px;margin-bottom:16px}.hidden{visibility:hidden}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: ReadOnlyContentDirective, selector: "[valtimoReadOnlyContent]", inputs: ["valtimoReadOnlyContent"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i5.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i5.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i5.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i5.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i5.ModalHeaderLabel, selector: "[cdsModalHeaderLabel], [ibmModalHeaderLabel]" }, { kind: "component", type: i5.ProgressIndicator, selector: "cds-progress-indicator, ibm-progress-indicator", inputs: ["current", "steps", "translations", "orientation", "skeleton", "spacing"], outputs: ["stepSelected"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i2$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: i5.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "directive", type: i5.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: ConfigureBuildingBlockMappingsComponent, selector: "valtimo-configure-building-block-mappings" }, { kind: "component", type: SelectPluginConfigurationComponent, selector: "valtimo-select-plugin-configuration" }, { kind: "component", type: SelectPluginActionComponent, selector: "valtimo-select-plugin-action" }, { kind: "component", type: PluginActionConfigurationComponent, selector: "valtimo-plugin-action-configuration", inputs: ["selectedPluginConfiguration$"], outputs: ["valid", "configuration"] }, { kind: "component", type: ChooseProcessLinkTypeComponent, selector: "valtimo-choose-process-link-type" }, { kind: "component", type: SelectFormComponent, selector: "valtimo-select-form" }, { kind: "component", type: SelectFormFlowComponent, selector: "valtimo-select-form-flow" }, { kind: "component", type: SelectUIComponentComponent, selector: "valtimo-select-ui-component" }, { kind: "component", type: SelectBuildingBlockComponent, selector: "valtimo-select-building-block" }, { kind: "component", type: ConfigureBuildingBlockPluginsComponent, selector: "valtimo-configure-building-block-plugins" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
4078
4347
  }
4079
4348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkModalComponent, decorators: [{
4080
4349
  type: Component,
4081
- args: [{ standalone: false, selector: 'valtimo-process-link-modal', 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<div\n class=\"process-link-modal-container\"\n *ngIf=\"{\n showModal: showModal$ | async,\n processStepName: processStepName$ | async,\n steps: steps$ | async,\n selectedPluginConfiguration: selectedPluginConfiguration$ | async,\n currentStepIndex: currentStepIndex$ | async,\n currentStepId: currentStepId$ | async,\n showSaveButton: showSaveButton$ | async,\n enableSaveButton: enableSaveButton$ | async,\n showBackButton: showBackButton$ | async,\n showNextButton: showNextButton$ | async,\n enableNextButton: enableNextButton$ | async,\n saving: saving$ | async,\n hideProgressIndicator: hideProgressIndicator$ | async,\n typeOfSelectedProgressLink: typeOfSelectedProcessLink$ | async,\n isEditing: isEditing$ | async,\n isAdHocBuildingBlock: isAdHocBuildingBlock$ | async,\n } as obs\"\n>\n <cds-modal valtimoCdsModal [open]=\"obs.showModal\" size=\"lg\" (close)=\"closeModal()\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <h2 *ngIf=\"!obs.isAdHocBuildingBlock\" cdsModalHeaderLabel>{{ 'processLinkConfiguration.configureStep' | translate }}</h2>\n <h3 cdsModalHeaderHeading>\n <ng-container *ngIf=\"obs.isAdHocBuildingBlock; else defaultModalTitle\">\n {{ 'processLinkConfiguration.buildingBlockActionTitle' | translate: {buildingBlockName: obs.processStepName || '-'} }}\n </ng-container>\n <ng-template #defaultModalTitle>\n {{\n 'processLinkConfiguration.modalTitle'\n | translate: {processStepName: obs.processStepName || '-'}\n }}\n </ng-template>\n </h3>\n <h4 cdsModalHeaderLabel *ngIf=\"obs.typeOfSelectedProgressLink === 'plugin'\">\n {{\n 'processLinkConfiguration.pluginConfiguration'\n | translate: {pluginConfigTitle: obs.selectedPluginConfiguration?.title || '-'}\n }}\n </h4>\n <div class=\"process-link-progress\">\n <ng-container *ngTemplateOutlet=\"progressIndicator; context: {obs: obs}\"></ng-container>\n </div>\n </cds-modal-header>\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"stepContent; context: {obs: obs}\"></ng-container>\n </section>\n <ng-template *ngTemplateOutlet=\"footer; context: {obs: obs}\"></ng-template>\n </cds-modal>\n</div>\n\n<ng-template #progressIndicator let-obs=\"obs\">\n <cds-progress-indicator\n *ngIf=\"obs.steps && !obs.hideProgressIndicator\"\n [steps]=\"obs.steps\"\n [current]=\"obs.currentStepIndex\"\n spacing=\"equal\"\n ></cds-progress-indicator>\n</ng-template>\n\n<ng-template #stepContent let-obs=\"obs\">\n <div class=\"cds-loading-container\" *ngIf=\"obs.saving\">\n <cds-loading></cds-loading>\n </div>\n <div [ngClass]=\"{hidden: obs.saving}\">\n <ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'chooseProcessLinkType'\">\n <valtimo-choose-process-link-type></valtimo-choose-process-link-type>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectForm'\">\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle$ | async\"\n [label]=\"'processLinkConfiguration.toggleViewModel.title' | translate\"\n [onText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [offText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [checked]=\"viewModelEnabled$ | async\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectFormFlow'\">\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'choosePluginConfiguration' ||\n obs.currentStepId === 'choosePluginDefinition'\n \"\n >\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'selectBuildingBlock'\">\n <valtimo-select-building-block></valtimo-select-building-block>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginAction'\">\n <valtimo-select-plugin-action></valtimo-select-plugin-action>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configurePluginAction'\">\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockPlugins'\">\n <valtimo-configure-building-block-plugins></valtimo-configure-building-block-plugins>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockMappings'\">\n <valtimo-configure-building-block-mappings></valtimo-configure-building-block-mappings>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'uiComponent'\">\n <valtimo-select-ui-component></valtimo-select-ui-component>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #footer let-obs=\"obs\">\n <cds-modal-footer *ngIf=\"!obs.saving\">\n <button cdsButton=\"ghost\" (click)=\"closeModal()\" [disabled]=\"obs.disabled\">\n {{ 'processLinkConfiguration.cancel' | translate }}\n </button>\n <div class=\"footer-spacer\"></div>\n <button\n cdsButton=\"danger--primary\"\n *ngIf=\"obs.isEditing\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n *ngIf=\"obs.showBackButton && !obs.saving\"\n cdsButton=\"secondary\"\n (click)=\"backButtonClick()\"\n >\n {{ 'processLinkConfiguration.back' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showNextButton && !obs.saving\"\n [disabled]=\"!obs.enableNextButton\"\n (click)=\"nextButtonClick()\"\n >\n {{ 'processLinkConfiguration.next' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showSaveButton && !obs.saving\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </cds-modal-footer>\n</ng-template>\n", styles: ["::ng-deep .process-link-modal-container .cds--modal-container{max-width:960px;min-height:70%}::ng-deep .process-link-modal-container .cds--modal-footer .footer-spacer{flex:0 1 50%}.cds-loading-container{position:absolute;top:50px;padding-bottom:50px;left:0;width:100%;height:calc(100% - 50px);display:flex;justify-content:center;align-items:center;background:var(--cds-layer);z-index:99;box-sizing:border-box}.process-link-progress{width:100%;margin-top:32px;margin-bottom:16px}.hidden{visibility:hidden}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
4350
+ args: [{ standalone: false, selector: 'valtimo-process-link-modal', 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<div\n class=\"process-link-modal-container\"\n *ngIf=\"{\n showModal: showModal$ | async,\n processStepName: processStepName$ | async,\n steps: steps$ | async,\n selectedPluginConfiguration: selectedPluginConfiguration$ | async,\n currentStepIndex: currentStepIndex$ | async,\n currentStepId: currentStepId$ | async,\n showSaveButton: showSaveButton$ | async,\n enableSaveButton: enableSaveButton$ | async,\n showBackButton: showBackButton$ | async,\n showNextButton: showNextButton$ | async,\n enableNextButton: enableNextButton$ | async,\n saving: saving$ | async,\n hideProgressIndicator: hideProgressIndicator$ | async,\n typeOfSelectedProgressLink: typeOfSelectedProcessLink$ | async,\n isEditing: isEditing$ | async,\n isAdHocBuildingBlock: isAdHocBuildingBlock$ | async,\n readOnly: readOnly$ | async,\n } as obs\"\n>\n <cds-modal valtimoCdsModal [open]=\"obs.showModal\" size=\"lg\" (close)=\"closeModal()\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <h2 *ngIf=\"!obs.isAdHocBuildingBlock\" cdsModalHeaderLabel>\n {{ 'processLinkConfiguration.configureStep' | translate }}\n </h2>\n <h3 cdsModalHeaderHeading [attr.data-test-id]=\"testIds.heading\">\n <ng-container *ngIf=\"obs.isAdHocBuildingBlock; else defaultModalTitle\">\n {{\n 'processLinkConfiguration.buildingBlockActionTitle'\n | translate: {buildingBlockName: obs.processStepName || '-'}\n }}\n </ng-container>\n <ng-template #defaultModalTitle>\n {{\n 'processLinkConfiguration.modalTitle'\n | translate: {processStepName: obs.processStepName || '-'}\n }}\n </ng-template>\n </h3>\n <h4\n cdsModalHeaderLabel\n *ngIf=\"obs.typeOfSelectedProgressLink === 'plugin'\"\n [attr.data-test-id]=\"testIds.pluginConfigurationLabel\"\n >\n {{\n 'processLinkConfiguration.pluginConfiguration'\n | translate: {pluginConfigTitle: obs.selectedPluginConfiguration?.title || '-'}\n }}\n </h4>\n <div class=\"process-link-progress\">\n <ng-container *ngTemplateOutlet=\"progressIndicator; context: {obs: obs}\"></ng-container>\n </div>\n </cds-modal-header>\n <section cdsModalContent [cdsLayer]=\"1\" [valtimoReadOnlyContent]=\"obs.readOnly\">\n <ng-container *ngTemplateOutlet=\"stepContent; context: {obs: obs}\"></ng-container>\n </section>\n <ng-template *ngTemplateOutlet=\"footer; context: {obs: obs}\"></ng-template>\n </cds-modal>\n</div>\n\n<ng-template #progressIndicator let-obs=\"obs\">\n <cds-progress-indicator\n *ngIf=\"obs.steps && !obs.hideProgressIndicator\"\n [attr.data-test-id]=\"testIds.progressIndicator\"\n [steps]=\"obs.steps\"\n [current]=\"obs.currentStepIndex\"\n spacing=\"equal\"\n ></cds-progress-indicator>\n</ng-template>\n\n<ng-template #stepContent let-obs=\"obs\">\n <div class=\"cds-loading-container\" *ngIf=\"obs.saving\">\n <cds-loading></cds-loading>\n </div>\n <div [ngClass]=\"{hidden: obs.saving}\">\n <ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'chooseProcessLinkType'\">\n <valtimo-choose-process-link-type></valtimo-choose-process-link-type>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectForm'\">\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle$ | async\"\n [label]=\"'processLinkConfiguration.toggleViewModel.title' | translate\"\n [onText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [offText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [checked]=\"viewModelEnabled$ | async\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectFormFlow'\">\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'choosePluginConfiguration' ||\n obs.currentStepId === 'choosePluginDefinition'\n \"\n >\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'selectBuildingBlock'\">\n <valtimo-select-building-block></valtimo-select-building-block>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginAction'\">\n <valtimo-select-plugin-action></valtimo-select-plugin-action>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configurePluginAction'\">\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockPlugins'\">\n <valtimo-configure-building-block-plugins></valtimo-configure-building-block-plugins>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockMappings'\">\n <valtimo-configure-building-block-mappings></valtimo-configure-building-block-mappings>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'uiComponent'\">\n <valtimo-select-ui-component></valtimo-select-ui-component>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #footer let-obs=\"obs\">\n <cds-modal-footer *ngIf=\"!obs.saving\">\n <button\n cdsButton=\"ghost\"\n [attr.data-test-id]=\"testIds.cancelButton\"\n (click)=\"closeModal()\"\n [disabled]=\"obs.disabled\"\n >\n {{ (obs.readOnly ? 'interface.close' : 'processLinkConfiguration.cancel') | translate }}\n </button>\n <div class=\"footer-spacer\"></div>\n <button\n cdsButton=\"danger--primary\"\n *ngIf=\"obs.isEditing && !obs.readOnly\"\n [attr.data-test-id]=\"testIds.unlinkButton\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n *ngIf=\"obs.showBackButton && !obs.saving && !obs.readOnly\"\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.backButton\"\n (click)=\"backButtonClick()\"\n >\n {{ 'processLinkConfiguration.back' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showNextButton && !obs.saving && !obs.readOnly\"\n [attr.data-test-id]=\"testIds.nextButton\"\n [disabled]=\"!obs.enableNextButton\"\n (click)=\"nextButtonClick()\"\n >\n {{ 'processLinkConfiguration.next' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showSaveButton && !obs.saving && !obs.readOnly\"\n [attr.data-test-id]=\"testIds.completeButton\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </cds-modal-footer>\n</ng-template>\n", styles: ["::ng-deep .process-link-modal-container .cds--modal-container{max-width:960px;min-height:70%}::ng-deep .process-link-modal-container .cds--modal-footer .footer-spacer{flex:0 1 50%}.cds-loading-container{position:absolute;top:50px;padding-bottom:50px;left:0;width:100%;height:calc(100% - 50px);display:flex;justify-content:center;align-items:center;background:var(--cds-layer);z-index:99;box-sizing:border-box}.process-link-progress{width:100%;margin-top:32px;margin-bottom:16px}.hidden{visibility:hidden}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
4082
4351
  }], ctorParameters: () => [{ type: ProcessLinkStateService }, { type: ProcessLinkStepService }, { type: ProcessLinkButtonService }, { type: PluginStateService }, { type: ProcessLinkStateService }, { type: i1.ConfigService }] });
4083
4352
 
4084
4353
  /*
@@ -4167,7 +4436,7 @@ const routes = [
4167
4436
  ];
4168
4437
  class ProcessLinkRoutingModule {
4169
4438
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4170
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkRoutingModule, imports: [i3$2.RouterModule], exports: [RouterModule] }); }
4439
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkRoutingModule, imports: [i3$1.RouterModule], exports: [RouterModule] }); }
4171
4440
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
4172
4441
  }
4173
4442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ProcessLinkRoutingModule, decorators: [{
@@ -4496,7 +4765,7 @@ class FormFlowComponent {
4496
4765
  this.disabled$.next(false);
4497
4766
  }
4498
4767
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormFlowComponent, deps: [{ token: FormFlowService }, { token: i2$1.ValtimoModalService }, { token: i3.TranslateService }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
4499
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormFlowComponent, isStandalone: false, selector: "valtimo-form-flow", inputs: { formIoFormData: "formIoFormData", formFlowInstanceId: "formFlowInstanceId" }, outputs: { formFlowComplete: "formFlowComplete", formFlowChange: "formFlowChange" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n breadcrumbs: breadcrumbs$ | async,\n currentStepIndex: currentStepIndex$ | async,\n enableFormFlowBreadcrumbs: enableFormFlowBreadcrumbs$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n>\n <div *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <div *ngIf=\"obs.enableFormFlowBreadcrumbs\" class=\"form-flow__progress-bar-indicator\">\n <cds-progress-indicator\n [spacing]=\"'equal'\"\n [skeleton]=\"obs.breadcrumbs.length === 0\"\n [current]=\"obs.currentStepIndex\"\n [steps]=\"obs.breadcrumbs\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n </div>\n\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (event)=\"onEvent($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n\n <div *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [".form-flow__progress-bar-indicator{height:64px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.form-flow__progress-bar-indicator ::-webkit-scrollbar{display:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ProgressIndicator, selector: "cds-progress-indicator, ibm-progress-indicator", inputs: ["current", "steps", "translations", "orientation", "skeleton", "spacing"], outputs: ["stepSelected"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "errors", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: ["disabled", "componentId", "formFlowInstanceId"], outputs: ["changeEvent", "submitEvent"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }] }); }
4768
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormFlowComponent, isStandalone: false, selector: "valtimo-form-flow", inputs: { formIoFormData: "formIoFormData", formFlowInstanceId: "formFlowInstanceId" }, outputs: { formFlowComplete: "formFlowComplete", formFlowChange: "formFlowChange" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n breadcrumbs: breadcrumbs$ | async,\n currentStepIndex: currentStepIndex$ | async,\n enableFormFlowBreadcrumbs: enableFormFlowBreadcrumbs$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n>\n <div *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <div *ngIf=\"obs.enableFormFlowBreadcrumbs\" class=\"form-flow__progress-bar-indicator\">\n <cds-progress-indicator\n [spacing]=\"'equal'\"\n [skeleton]=\"obs.breadcrumbs.length === 0\"\n [current]=\"obs.currentStepIndex\"\n [steps]=\"obs.breadcrumbs\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n </div>\n\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (event)=\"onEvent($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n\n <div *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [".form-flow__progress-bar-indicator{height:64px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.form-flow__progress-bar-indicator ::-webkit-scrollbar{display:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ProgressIndicator, selector: "cds-progress-indicator, ibm-progress-indicator", inputs: ["current", "steps", "translations", "orientation", "skeleton", "spacing"], outputs: ["stepSelected"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "errors", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: ["disabled", "componentId", "formFlowInstanceId"], outputs: ["changeEvent", "submitEvent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
4500
4769
  }
4501
4770
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormFlowComponent, decorators: [{
4502
4771
  type: Component,
@@ -4546,6 +4815,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
4546
4815
  * limitations under the License.
4547
4816
  */
4548
4817
 
4818
+ /*
4819
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
4820
+ *
4821
+ * Licensed under EUPL, Version 1.2 (the "License");
4822
+ * you may not use this file except in compliance with the License.
4823
+ * You may obtain a copy of the License at
4824
+ *
4825
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
4826
+ *
4827
+ * Unless required by applicable law or agreed to in writing, software
4828
+ * distributed under the License is distributed on an "AS IS" basis,
4829
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4830
+ * See the License for the specific language governing permissions and
4831
+ * limitations under the License.
4832
+ */
4833
+
4549
4834
  /*
4550
4835
  * Copyright 2015-2025 Ritense BV, the Netherlands.
4551
4836
  *
@@ -4578,7 +4863,8 @@ class ProcessLinkModule {
4578
4863
  SelectUIComponentComponent,
4579
4864
  ImportPluginConfigurationComponent,
4580
4865
  SelectBuildingBlockComponent,
4581
- ConfigureBuildingBlockPluginsComponent], imports: [CommonModule,
4866
+ ConfigureBuildingBlockPluginsComponent], imports: [ReadOnlyContentDirective,
4867
+ CommonModule,
4582
4868
  ProcessLinkRoutingModule,
4583
4869
  FormsModule,
4584
4870
  ReactiveFormsModule,
@@ -4685,6 +4971,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
4685
4971
  ConfigureBuildingBlockPluginsComponent,
4686
4972
  ],
4687
4973
  imports: [
4974
+ ReadOnlyContentDirective,
4688
4975
  CommonModule,
4689
4976
  ProcessLinkRoutingModule,
4690
4977
  FormsModule,
@@ -4858,5 +5145,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
4858
5145
  * Generated bundle index. Do not edit.
4859
5146
  */
4860
5147
 
4861
- export { BB_MAPPINGS_TEST_IDS, BuildingBlockStateService, ChooseProcessLinkTypeComponent, FORM_CUSTOM_COMPONENT_TOKEN, FORM_FLOW_COMPONENT_TOKEN, FormFlowComponent, FormFlowComponentService, FormFlowService, PluginActionConfigurationComponent, PluginStateService, ProcessLinkBuildingBlockApiService, ProcessLinkButtonService, ProcessLinkComponent, ProcessLinkModalComponent, ProcessLinkModule, ProcessLinkService, ProcessLinkStateService, ProcessLinkStepService, SelectPluginActionComponent, SelectPluginConfigurationComponent, UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK, UrlResolverService, UrlValidatorService, ensureDocPrefix, formSizeToCarbonModalSizeMap };
5148
+ export { BB_MAPPINGS_TEST_IDS, BuildingBlockStateService, ChooseProcessLinkTypeComponent, FORM_CUSTOM_COMPONENT_TOKEN, FormFlowComponent, FormFlowService, PLUGIN_ACTION_CONFIGURATION_TEST_IDS, PROCESS_LINK_MODAL_TEST_IDS, PROCESS_LINK_TYPE_BUTTON_TEST_ID_PREFIX, PROCESS_LINK_TYPE_CHOOSER_TEST_IDS, PluginActionConfigurationComponent, PluginStateService, ProcessLinkBuildingBlockApiService, ProcessLinkButtonService, ProcessLinkComponent, ProcessLinkModalComponent, ProcessLinkModule, ProcessLinkService, ProcessLinkStateService, ProcessLinkStepService, SELECT_PLUGIN_ACTION_TEST_IDS, SELECT_PLUGIN_ACTION_TILE_TEST_ID_PREFIX, SELECT_PLUGIN_CONFIGURATION_ROW_TEST_ID_PREFIX, SELECT_PLUGIN_CONFIGURATION_TEST_IDS, SelectPluginActionComponent, SelectPluginConfigurationComponent, UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK, UrlResolverService, UrlValidatorService, ensureDocPrefix, formSizeToCarbonModalSizeMap };
4862
5149
  //# sourceMappingURL=valtimo-process-link.mjs.map