@valtimo/form-flow-management 12.14.1 → 13.0.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 (35) hide show
  1. package/fesm2022/valtimo-form-flow-management.mjs +226 -269
  2. package/fesm2022/valtimo-form-flow-management.mjs.map +1 -1
  3. package/lib/components/delete-form-flow-modal/delete-form-flow-modal.component.d.ts.map +1 -1
  4. package/lib/components/editor/form-flow-editor.component.d.ts +22 -24
  5. package/lib/components/editor/form-flow-editor.component.d.ts.map +1 -1
  6. package/lib/components/new-form-flow-modal/new-form-flow-modal.component.d.ts.map +1 -1
  7. package/lib/components/overview/form-flow-overview.component.d.ts +24 -11
  8. package/lib/components/overview/form-flow-overview.component.d.ts.map +1 -1
  9. package/lib/form-flow-management.module.d.ts +5 -6
  10. package/lib/form-flow-management.module.d.ts.map +1 -1
  11. package/lib/models/form-flow.model.d.ts +6 -2
  12. package/lib/models/form-flow.model.d.ts.map +1 -1
  13. package/lib/services/form-flow-download.service.d.ts +4 -5
  14. package/lib/services/form-flow-download.service.d.ts.map +1 -1
  15. package/lib/services/form-flow.service.d.ts +12 -17
  16. package/lib/services/form-flow.service.d.ts.map +1 -1
  17. package/package.json +4 -6
  18. package/public-api.d.ts +2 -0
  19. package/public-api.d.ts.map +1 -1
  20. package/esm2022/lib/components/delete-form-flow-modal/delete-form-flow-modal.component.mjs +0 -39
  21. package/esm2022/lib/components/editor/form-flow-editor.component.mjs +0 -161
  22. package/esm2022/lib/components/editor/formflow.schema.json +0 -79
  23. package/esm2022/lib/components/new-form-flow-modal/new-form-flow-modal.component.mjs +0 -67
  24. package/esm2022/lib/components/overview/form-flow-overview.component.mjs +0 -80
  25. package/esm2022/lib/form-flow-management-routing.module.mjs +0 -55
  26. package/esm2022/lib/form-flow-management.module.mjs +0 -101
  27. package/esm2022/lib/models/form-flow.model.mjs +0 -17
  28. package/esm2022/lib/models/index.mjs +0 -17
  29. package/esm2022/lib/services/form-flow-download.service.mjs +0 -40
  30. package/esm2022/lib/services/form-flow.service.mjs +0 -66
  31. package/esm2022/lib/services/index.mjs +0 -17
  32. package/esm2022/public-api.mjs +0 -22
  33. package/esm2022/valtimo-form-flow-management.mjs +0 -5
  34. package/lib/form-flow-management-routing.module.d.ts +0 -9
  35. package/lib/form-flow-management-routing.module.d.ts.map +0 -1
@@ -1,25 +1,24 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ViewChild, NgModule } from '@angular/core';
3
- import { BehaviorSubject, tap, switchMap, take, catchError, of, finalize, combineLatest, filter, map, startWith } from 'rxjs';
4
- import * as i1 from '@valtimo/config';
5
- import { ROLE_ADMIN } from '@valtimo/config';
6
- import * as i2 from '@angular/common/http';
7
- import * as i3 from '@angular/common';
8
- import { CommonModule } from '@angular/common';
9
- import * as i5 from '@ngx-translate/core';
3
+ import * as i2 from '@valtimo/shared';
4
+ import { BaseApiService, getCaseManagementRouteParams } from '@valtimo/shared';
5
+ import * as i1 from '@angular/common/http';
6
+ import * as i1$2 from '@valtimo/components';
7
+ import { CARBON_CONSTANTS, ViewType, CarbonListComponent, ConfirmationModalModule, EditorModule, RenderInPageHeaderDirective, CarbonListModule } from '@valtimo/components';
8
+ import { BehaviorSubject, combineLatest, tap, switchMap, of, map, take, finalize } from 'rxjs';
9
+ import * as i3 from '@angular/router';
10
+ import * as i4 from '@ngx-translate/core';
10
11
  import { TranslateModule } from '@ngx-translate/core';
11
- import * as i3$1 from '@valtimo/components';
12
- import { CARBON_CONSTANTS, ViewType, CarbonListComponent, ConfirmationModalModule, EditorModule, RenderInPageHeaderDirectiveModule, CarbonListModule } from '@valtimo/components';
13
- import * as i2$1 from '@angular/router';
14
- import { RouterModule } from '@angular/router';
15
- import { AuthGuardService } from '@valtimo/security';
16
- import * as i4 from 'carbon-components-angular';
17
- import { NotificationService, ButtonModule, ModalModule, InputModule, IconModule, LoadingModule, DialogModule, NotificationModule, DropdownModule } from 'carbon-components-angular';
12
+ import * as i5 from '@angular/common';
13
+ import { CommonModule } from '@angular/common';
14
+ import * as i2$1 from 'carbon-components-angular';
15
+ import { ButtonModule, ModalModule, InputModule, IconModule, LoadingModule, DialogModule, NotificationModule, DropdownModule } from 'carbon-components-angular';
18
16
  import * as i1$1 from '@angular/forms';
19
17
  import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
18
+ import { ArrowLeft16 } from '@carbon/icons';
20
19
 
21
20
  /*
22
- * Copyright 2015-2024 Ritense BV, the Netherlands.
21
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
23
22
  *
24
23
  * Licensed under EUPL, Version 1.2 (the "License");
25
24
  * you may not use this file except in compliance with the License.
@@ -35,7 +34,7 @@ import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
35
34
  */
36
35
 
37
36
  /*
38
- * Copyright 2015-2024 Ritense BV, the Netherlands.
37
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
39
38
  *
40
39
  * Licensed under EUPL, Version 1.2 (the "License");
41
40
  * you may not use this file except in compliance with the License.
@@ -50,69 +49,39 @@ import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
50
49
  * limitations under the License.
51
50
  */
52
51
 
53
- class FormFlowService {
54
- get formFlowDefinitions$() {
55
- return this.http.get(`${this.valtimoEndpointUri}v1/form-flow/definition`);
56
- }
57
- constructor(configService, http) {
52
+ class FormFlowService extends BaseApiService {
53
+ constructor(httpClient, configService) {
54
+ super(httpClient, configService);
55
+ this.httpClient = httpClient;
58
56
  this.configService = configService;
59
- this.http = http;
60
- this.formFlows$ = new BehaviorSubject([]);
61
- this.loading$ = new BehaviorSubject(false);
62
- this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/`;
63
57
  }
64
- addFormFlow(definition) {
65
- return this.http.post(`${this.valtimoEndpointUri}v1/form-flow/definition`, definition);
58
+ getFormFlowDefinitions(caseDefinitionKey, caseVersionTag) {
59
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/form-flow-definition`));
66
60
  }
67
- deleteFormFlowDefinition(key) {
68
- return this.http.delete(`${this.valtimoEndpointUri}v1/form-flow/definition/${key}`);
61
+ getFormFlowDefinitionByKey(caseDefinitionKey, caseVersionTag, formFlowDefinitionKey) {
62
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/form-flow-definition/${formFlowDefinitionKey}`));
69
63
  }
70
- dispatchAction(actionResult) {
71
- actionResult
72
- .pipe(tap(() => {
73
- this.loading$.next(true);
74
- }), switchMap(() => this.formFlowDefinitions$), take(1), catchError(error => of(error)))
75
- .subscribe({
76
- next: (formFlows) => {
77
- this.formFlows$.next(formFlows.content);
78
- this.loading$.next(false);
79
- },
80
- error: error => {
81
- console.error(error);
82
- },
83
- });
64
+ createFormFlowDefinition(caseDefinitionKey, caseVersionTag, definition) {
65
+ return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/form-flow-definition`), definition);
84
66
  }
85
- loadFormFlows() {
86
- this.formFlowDefinitions$
87
- .pipe(tap(() => {
88
- this.loading$.next(true);
89
- }), take(1))
90
- .subscribe({
91
- next: (items) => {
92
- this.formFlows$.next(items.content);
93
- this.loading$.next(false);
94
- },
95
- error: error => {
96
- console.error(error);
97
- },
98
- });
99
- }
100
- getFormFlowDefinition(id) {
101
- return this.http.get(`${this.valtimoEndpointUri}v1/form-flow/definition/${id.key}/${id.version}`);
67
+ deleteFormFlowDefinition(caseDefinitionKey, caseVersionTag, definitionKey) {
68
+ return this.httpClient.delete(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/form-flow-definition/${definitionKey}`));
102
69
  }
103
- updateFormFlowDefinition(key, updatedDefinition) {
104
- return this.http.put(`${this.valtimoEndpointUri}v1/form-flow/definition/${key}`, updatedDefinition);
70
+ updateFormFlowDefinition(caseDefinitionKey, caseVersionTag, definitionKey, updatedDefinition) {
71
+ return this.httpClient.put(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/form-flow-definition/${definitionKey}`), updatedDefinition);
105
72
  }
106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
107
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowService, providedIn: 'root' }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
74
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowService, providedIn: 'root' }); }
108
75
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowService, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowService, decorators: [{
110
77
  type: Injectable,
111
- args: [{ providedIn: 'root' }]
112
- }], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }] });
78
+ args: [{
79
+ providedIn: 'root',
80
+ }]
81
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
113
82
 
114
83
  /*
115
- * Copyright 2015-2024 Ritense BV, the Netherlands.
84
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
116
85
  *
117
86
  * Licensed under EUPL, Version 1.2 (the "License");
118
87
  * you may not use this file except in compliance with the License.
@@ -128,7 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
128
97
  */
129
98
 
130
99
  /*
131
- * Copyright 2015-2024 Ritense BV, the Netherlands.
100
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
132
101
  *
133
102
  * Licensed under EUPL, Version 1.2 (the "License");
134
103
  * you may not use this file except in compliance with the License.
@@ -163,8 +132,7 @@ class NewFormFlowModalComponent {
163
132
  return;
164
133
  }
165
134
  this.closeEvent.emit({
166
- key: this.key.value,
167
- version: 1,
135
+ key: this.key.value ?? '',
168
136
  startStep: 'start-step',
169
137
  steps: [],
170
138
  });
@@ -175,12 +143,12 @@ class NewFormFlowModalComponent {
175
143
  this.form.reset();
176
144
  }, CARBON_CONSTANTS.modalAnimationMs);
177
145
  }
178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NewFormFlowModalComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NewFormFlowModalComponent, selector: "valtimo-new-form-flow-modal", inputs: { open: "open" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"open\" showFooter=\"true\" [title]=\"'formFlow.add' | translate\" valtimoCdsModal>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'formFlow.add' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'formFlow.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'formFlow.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ 'interface.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", dependencies: [{ kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NewFormFlowModalComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NewFormFlowModalComponent, isStandalone: false, selector: "valtimo-new-form-flow-modal", inputs: { open: "open" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n [open]=\"open\"\n showFooter=\"true\"\n [title]=\"'formFlow.add' | translate\"\n valtimoCdsModal\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'formFlow.add' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'formFlow.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'formFlow.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ 'interface.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", dependencies: [{ kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$1.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
180
148
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NewFormFlowModalComponent, decorators: [{
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NewFormFlowModalComponent, decorators: [{
182
150
  type: Component,
183
- args: [{ selector: 'valtimo-new-form-flow-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"open\" showFooter=\"true\" [title]=\"'formFlow.add' | translate\" valtimoCdsModal>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'formFlow.add' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'formFlow.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'formFlow.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ 'interface.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n" }]
151
+ args: [{ standalone: false, selector: 'valtimo-new-form-flow-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n [open]=\"open\"\n showFooter=\"true\"\n [title]=\"'formFlow.add' | translate\"\n valtimoCdsModal\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'formFlow.add' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'formFlow.key' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'formFlow.key' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ 'interface.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n" }]
184
152
  }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { open: [{
185
153
  type: Input
186
154
  }], closeEvent: [{
@@ -188,7 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
188
156
  }] } });
189
157
 
190
158
  /*
191
- * Copyright 2015-2024 Ritense BV, the Netherlands.
159
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
192
160
  *
193
161
  * Licensed under EUPL, Version 1.2 (the "License");
194
162
  * you may not use this file except in compliance with the License.
@@ -203,10 +171,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
203
171
  * limitations under the License.
204
172
  */
205
173
  class FormFlowOverviewComponent {
206
- constructor(formFlowService, router) {
174
+ constructor(formFlowService, globalNotificationService, route, router, translateService, editPermissionsService) {
207
175
  this.formFlowService = formFlowService;
176
+ this.globalNotificationService = globalNotificationService;
177
+ this.route = route;
208
178
  this.router = router;
209
- this.fields = [
179
+ this.translateService = translateService;
180
+ this.editPermissionsService = editPermissionsService;
181
+ this.FIELDS = [
210
182
  {
211
183
  viewType: ViewType.TEXT,
212
184
  key: 'key',
@@ -223,35 +195,82 @@ class FormFlowOverviewComponent {
223
195
  label: 'formFlow.readOnly',
224
196
  },
225
197
  ];
226
- this.formFlowDefinitions$ = this.formFlowService.formFlows$;
227
- this.loading$ = this.formFlowService.loading$;
198
+ this.ACTION_ITEMS = [
199
+ {
200
+ callback: this.editFormFlowDetails.bind(this),
201
+ label: 'interface.edit',
202
+ },
203
+ {
204
+ callback: this.deleteFormFlow.bind(this),
205
+ label: 'interface.delete',
206
+ type: 'danger',
207
+ },
208
+ ];
209
+ this.loading$ = new BehaviorSubject(true);
210
+ this.showDeleteModal$ = new BehaviorSubject(false);
211
+ this.deleteDefinitionKey$ = new BehaviorSubject(null);
212
+ this._params = undefined;
213
+ this._refresh$ = new BehaviorSubject(null);
214
+ this.formFlowDefinitions$ = combineLatest([
215
+ getCaseManagementRouteParams(this.route),
216
+ this._refresh$,
217
+ ]).pipe(tap(([params]) => {
218
+ this.loading$.next(true);
219
+ this._params = params;
220
+ }), switchMap(([params]) => !params
221
+ ? of(null)
222
+ : this.formFlowService.getFormFlowDefinitions(params.caseDefinitionKey, params.caseDefinitionVersionTag)), map((formFlows) => {
223
+ this.loading$.next(false);
224
+ return !formFlows ? [] : formFlows.content;
225
+ }));
228
226
  this.showAddModal$ = new BehaviorSubject(false);
229
- }
230
- ngOnInit() {
231
- this.formFlowService.loadFormFlows();
227
+ this.params$ = getCaseManagementRouteParams(this.route);
228
+ this.hasEditPermissions$ = this.params$.pipe(switchMap(params => this.editPermissionsService.hasEditPermissions(params?.caseDefinitionKey, params?.caseDefinitionVersionTag)));
232
229
  }
233
230
  openAddModal() {
234
231
  this.showAddModal$.next(true);
235
232
  }
236
- onAdd(data) {
233
+ onAdd(formFlowDefinition) {
237
234
  this.showAddModal$.next(false);
238
- if (!data) {
235
+ if (!formFlowDefinition || !this._params)
239
236
  return;
240
- }
241
- this.formFlowService.dispatchAction(this.formFlowService.addFormFlow(data).pipe(finalize(() => {
237
+ this.formFlowService
238
+ .createFormFlowDefinition(this._params.caseDefinitionKey, this._params.caseDefinitionVersionTag, formFlowDefinition)
239
+ .subscribe((formFlowDefinition) => {
242
240
  this.showAddModal$.next(false);
243
- })));
241
+ this.router.navigate([formFlowDefinition.key], { relativeTo: this.route });
242
+ });
244
243
  }
245
- onRowClick(formFlow) {
246
- this.router.navigate([`/form-flow-management/${formFlow.key}`]);
244
+ editFormFlowDetails(formFlowDefinition) {
245
+ this.router.navigate([formFlowDefinition.key], { relativeTo: this.route });
247
246
  }
248
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowOverviewComponent, deps: [{ token: FormFlowService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
249
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFlowOverviewComponent, selector: "ng-component", viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"formFlowDefinitions$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <ng-container header> {{ 'formFlow.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addFormFlowButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addFormFlowButton\"\n description=\"{{ 'formFlow.noResults.description' | translate }}\"\n title=\"{{ 'formFlow.noResults.title' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-new-form-flow-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-new-form-flow-modal>\n\n<ng-template #addFormFlowButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'formFlow.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: i3$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i3$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: NewFormFlowModalComponent, selector: "valtimo-new-form-flow-modal", inputs: ["open"], outputs: ["closeEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
247
+ deleteFormFlow(item) {
248
+ this.deleteDefinitionKey$.next(item.key);
249
+ this.showDeleteModal$.next(true);
250
+ }
251
+ onDelete(definitionKey) {
252
+ if (!this._params)
253
+ return;
254
+ this.formFlowService
255
+ .deleteFormFlowDefinition(this._params.caseDefinitionKey, this._params.caseDefinitionVersionTag, definitionKey)
256
+ .subscribe(() => {
257
+ this.globalNotificationService.showToast({
258
+ title: this.translateService.instant('interface.delete'),
259
+ caption: this.translateService.instant('formFlow.deletedSuccessfully', {
260
+ key: definitionKey,
261
+ }),
262
+ type: 'success',
263
+ });
264
+ this._refresh$.next(null);
265
+ });
266
+ }
267
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowOverviewComponent, deps: [{ token: FormFlowService }, { token: i2.GlobalNotificationService }, { token: i3.ActivatedRoute }, { token: i3.Router }, { token: i4.TranslateService }, { token: i2.EditPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
268
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FormFlowOverviewComponent, isStandalone: false, selector: "ng-component", viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [header]=\"false\"\n [items]=\"formFlowDefinitions$ | async\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"editFormFlowDetails($event)\"\n>\n <ng-container header> {{ 'formFlow.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addFormFlowButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addFormFlowButton\"\n description=\"{{ 'formFlow.noResults.description' | translate }}\"\n title=\"{{ 'formFlow.noResults.title' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-new-form-flow-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-new-form-flow-modal>\n\n<ng-template #addFormFlowButton>\n <button *ngIf=\"hasEditPermissions$ | async\" cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'formFlow.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [outputOnConfirm]=\"deleteDefinitionKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i1$2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: NewFormFlowModalComponent, selector: "valtimo-new-form-flow-modal", inputs: ["open"], outputs: ["closeEvent"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
250
269
  }
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowOverviewComponent, decorators: [{
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowOverviewComponent, decorators: [{
252
271
  type: Component,
253
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [header]=\"false\"\n [items]=\"formFlowDefinitions$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <ng-container header> {{ 'formFlow.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addFormFlowButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addFormFlowButton\"\n description=\"{{ 'formFlow.noResults.description' | translate }}\"\n title=\"{{ 'formFlow.noResults.title' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-new-form-flow-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-new-form-flow-modal>\n\n<ng-template #addFormFlowButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'formFlow.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n" }]
254
- }], ctorParameters: () => [{ type: FormFlowService }, { type: i2$1.Router }], propDecorators: { carbonList: [{
272
+ args: [{ standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [header]=\"false\"\n [items]=\"formFlowDefinitions$ | async\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"editFormFlowDetails($event)\"\n>\n <ng-container header> {{ 'formFlow.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addFormFlowButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addFormFlowButton\"\n description=\"{{ 'formFlow.noResults.description' | translate }}\"\n title=\"{{ 'formFlow.noResults.title' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-new-form-flow-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-new-form-flow-modal>\n\n<ng-template #addFormFlowButton>\n <button *ngIf=\"hasEditPermissions$ | async\" cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'formFlow.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [outputOnConfirm]=\"deleteDefinitionKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n" }]
273
+ }], ctorParameters: () => [{ type: FormFlowService }, { type: i2.GlobalNotificationService }, { type: i3.ActivatedRoute }, { type: i3.Router }, { type: i4.TranslateService }, { type: i2.EditPermissionsService }], propDecorators: { carbonList: [{
255
274
  type: ViewChild,
256
275
  args: [CarbonListComponent]
257
276
  }] } });
@@ -339,7 +358,7 @@ var properties = {
339
358
  "type"
340
359
  ]
341
360
  },
342
- minItems: 1,
361
+ minItems: 0,
343
362
  uniqueItems: true
344
363
  }
345
364
  };
@@ -358,7 +377,7 @@ var formFlowSchemaJson = {
358
377
  };
359
378
 
360
379
  /*
361
- * Copyright 2015-2024 Ritense BV, the Netherlands.
380
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
362
381
  *
363
382
  * Licensed under EUPL, Version 1.2 (the "License");
364
383
  * you may not use this file except in compliance with the License.
@@ -373,65 +392,26 @@ var formFlowSchemaJson = {
373
392
  * limitations under the License.
374
393
  */
375
394
  class FormFlowDownloadService {
376
- constructor(formFlowService) {
377
- this.formFlowService = formFlowService;
378
- }
379
- downloadJson(json, formFlowDefinitionId) {
395
+ downloadJson(json, params) {
380
396
  const sJson = JSON.stringify(json, null, 2);
381
397
  const element = document.createElement('a');
382
398
  element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(sJson));
383
- element.setAttribute('download', `${formFlowDefinitionId.key}-${formFlowDefinitionId.version}.formflow.json`);
399
+ element.setAttribute('download', `${params.caseDefinitionKey}-${params.caseDefinitionVersionTag}-${params.formFlowDefinitionKey}.formflow.json`);
384
400
  element.style.display = 'none';
385
401
  document.body.appendChild(element);
386
402
  element.click(); // simulate click
387
403
  document.body.removeChild(element);
388
404
  }
389
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowDownloadService, deps: [{ token: FormFlowService }], target: i0.ɵɵFactoryTarget.Injectable }); }
390
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowDownloadService, providedIn: 'root' }); }
405
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowDownloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
406
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowDownloadService, providedIn: 'root' }); }
391
407
  }
392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowDownloadService, decorators: [{
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowDownloadService, decorators: [{
393
409
  type: Injectable,
394
410
  args: [{ providedIn: 'root' }]
395
- }], ctorParameters: () => [{ type: FormFlowService }] });
396
-
397
- /*
398
- * Copyright 2015-2024 Ritense BV, the Netherlands.
399
- *
400
- * Licensed under EUPL, Version 1.2 (the "License");
401
- * you may not use this file except in compliance with the License.
402
- * You may obtain a copy of the License at
403
- *
404
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
405
- *
406
- * Unless required by applicable law or agreed to in writing, software
407
- * distributed under the License is distributed on an "AS IS" basis,
408
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
409
- * See the License for the specific language governing permissions and
410
- * limitations under the License.
411
- */
412
- class DeleteFormFlowModalComponent {
413
- constructor() {
414
- this.deleteEvent = new EventEmitter();
415
- }
416
- onDelete(formFlowDefinitionKey) {
417
- this.deleteEvent.emit(formFlowDefinitionKey);
418
- }
419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteFormFlowModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DeleteFormFlowModalComponent, selector: "valtimo-delete-form-flow-modal", inputs: { deleteFormFlowDefinitionKey: "deleteFormFlowDefinitionKey", showDeleteModal$: "showDeleteModal$" }, outputs: { deleteEvent: "deleteEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [outputOnConfirm]=\"deleteFormFlowDefinitionKey\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n", dependencies: [{ kind: "component", type: i3$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
421
- }
422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteFormFlowModalComponent, decorators: [{
423
- type: Component,
424
- args: [{ selector: 'valtimo-delete-form-flow-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [outputOnConfirm]=\"deleteFormFlowDefinitionKey\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n" }]
425
- }], propDecorators: { deleteFormFlowDefinitionKey: [{
426
- type: Input
427
- }], showDeleteModal$: [{
428
- type: Input
429
- }], deleteEvent: [{
430
- type: Output
431
- }] } });
411
+ }] });
432
412
 
433
413
  /*
434
- * Copyright 2015-2024 Ritense BV, the Netherlands.
414
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
435
415
  *
436
416
  * Licensed under EUPL, Version 1.2 (the "License");
437
417
  * you may not use this file except in compliance with the License.
@@ -446,139 +426,127 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
446
426
  * limitations under the License.
447
427
  */
448
428
  class FormFlowEditorComponent {
449
- constructor(formFlowService, route, pageTitleService, router, notificationService, translateService, formFlowDownloadService, pageHeaderService) {
429
+ constructor(breadcrumbService, formFlowDownloadService, formFlowService, iconService, notificationService, pageHeaderService, pageTitleService, route, router, translateService) {
430
+ this.breadcrumbService = breadcrumbService;
431
+ this.formFlowDownloadService = formFlowDownloadService;
450
432
  this.formFlowService = formFlowService;
451
- this.route = route;
433
+ this.iconService = iconService;
434
+ this.notificationService = notificationService;
435
+ this.pageHeaderService = pageHeaderService;
452
436
  this.pageTitleService = pageTitleService;
437
+ this.route = route;
453
438
  this.router = router;
454
- this.notificationService = notificationService;
455
439
  this.translateService = translateService;
456
- this.formFlowDownloadService = formFlowDownloadService;
457
- this.pageHeaderService = pageHeaderService;
458
- this.model$ = new BehaviorSubject(null);
459
440
  this.readOnly$ = new BehaviorSubject(false);
460
441
  this.valid$ = new BehaviorSubject(false);
461
442
  this.loading$ = new BehaviorSubject(true);
462
443
  this.showDeleteModal$ = new BehaviorSubject(false);
463
- this.formFlowDefinitionVersions$ = new BehaviorSubject([1]);
464
444
  this.formFlowDefinitionId$ = new BehaviorSubject(null);
465
445
  this.CARBON_THEME = 'g10';
446
+ this._params$ = combineLatest([
447
+ getCaseManagementRouteParams(this.route),
448
+ this.route.params,
449
+ ]).pipe(map(([caseManagementParams, params]) => ({
450
+ ...(caseManagementParams ?? { caseDefinitionKey: '', caseDefinitionVersionTag: '' }),
451
+ ...params,
452
+ })));
466
453
  this.formFlowSchemaJson = formFlowSchemaJson;
454
+ this._formFlowDefinition2$ = this._params$.pipe(tap(() => this.loading$.next(true)), switchMap((params) => {
455
+ this.initBreadcrumbs(params);
456
+ return this.formFlowService.getFormFlowDefinitionByKey(params.caseDefinitionKey, params.caseDefinitionVersionTag, params.formFlowDefinitionKey);
457
+ }), tap((formFlowDefinition) => {
458
+ this.pageTitleService.setCustomPageTitle(formFlowDefinition.key);
459
+ this.readOnly$.next(formFlowDefinition.readOnly === true);
460
+ this.loading$.next(false);
461
+ }));
462
+ this.model$ = this._formFlowDefinition2$.pipe(map((formFlowDefinition) => this.getEditorModel(formFlowDefinition)));
467
463
  this._updatedModelValue$ = new BehaviorSubject('');
468
- this.formFlowDefinitionVersionItems$ = combineLatest([this.formFlowDefinitionVersions$, this.formFlowDefinitionId$]).pipe(filter(([versions, formFlowDefinitionId]) => !!versions && !!formFlowDefinitionId), map(([versions, formFlowDefinitionId]) => versions.map(version => ({
469
- formFlowDefinitionId: {
470
- key: formFlowDefinitionId.key,
471
- version,
472
- },
473
- content: `${this.translateService.instant('formFlow.version')}: ${version}`,
474
- selected: version === formFlowDefinitionId.version,
475
- }))), map(formFlowDefinitionVersionItems => ({
476
- value: formFlowDefinitionVersionItems,
477
- isLoading: false,
478
- })), startWith({ isLoading: true }));
479
- this.formFlowDefinition$ = this.formFlowDefinitionId$.pipe(filter(id => !!id), switchMap(id => this.formFlowService.getFormFlowDefinition(id)));
480
464
  this.compactMode$ = this.pageHeaderService.compactMode$;
481
- }
482
- ngOnInit() {
483
- this.formFlowService.loadFormFlows();
484
- this.openFormFlowDefinitionSubscription();
465
+ this.iconService.registerAll([ArrowLeft16]);
466
+ this.pageTitleService.disableReset();
485
467
  }
486
468
  ngOnDestroy() {
487
469
  this.pageTitleService.enableReset();
488
- this._idSubscription?.unsubscribe();
489
- this._definitionSubscription?.unsubscribe();
470
+ this.breadcrumbService.clearThirdBreadcrumb();
471
+ this.breadcrumbService.clearFourthBreadcrumb();
490
472
  }
491
473
  onValid(valid) {
492
- this.valid$.next(valid !== false);
474
+ this.valid$.next(valid);
493
475
  }
494
476
  onValueChange(value) {
495
477
  this._updatedModelValue$.next(value);
496
478
  }
497
479
  updateFormFlowDefinition() {
498
480
  this.loading$.next(true);
499
- combineLatest([this._updatedModelValue$, this.formFlowDefinitionId$])
500
- .pipe(take(1), map(([updatedModelValue, formFlowDefinitionId]) => ({
481
+ combineLatest([this._params$, this._updatedModelValue$])
482
+ .pipe(take(1), switchMap(([params, updatedModelValue]) => this.formFlowService.updateFormFlowDefinition(params.caseDefinitionKey, params.caseDefinitionVersionTag, params.formFlowDefinitionKey, {
501
483
  ...JSON.parse(updatedModelValue),
502
- key: formFlowDefinitionId.key,
503
- version: this.formFlowDefinitionVersions$.value[0] + 1,
504
- })), switchMap(updatedFormFlowDefinition => this.formFlowService.updateFormFlowDefinition(updatedFormFlowDefinition.key, updatedFormFlowDefinition)))
505
- .subscribe({
506
- next: result => {
507
- const id = { key: result.key, version: result.version };
508
- this.showSuccessMessage(result.key);
509
- this.formFlowDefinitionId$.next(id);
510
- this.formFlowDefinitionVersions$.next([id.version].concat(this.formFlowDefinitionVersions$.value));
511
- },
512
- error: () => {
513
- this.loading$.next(false);
514
- },
484
+ key: params.formFlowDefinitionKey,
485
+ })), finalize(() => this.loading$.next(false)))
486
+ .subscribe(result => {
487
+ this.showSuccessMessage(result.key);
515
488
  });
516
489
  }
517
- onDelete(formFlowDefinitionKey) {
490
+ onDelete() {
518
491
  this.loading$.next(true);
519
- this.formFlowService.dispatchAction(this.formFlowService.deleteFormFlowDefinition(formFlowDefinitionKey).pipe(finalize(() => {
520
- this.router.navigate(['/form-flow-management']);
521
- })));
492
+ this._params$
493
+ .pipe(take(1), switchMap((params) => this.formFlowService.deleteFormFlowDefinition(params.caseDefinitionKey, params.caseDefinitionVersionTag, params.formFlowDefinitionKey)))
494
+ .subscribe(() => {
495
+ this.router.navigate(['../'], { relativeTo: this.route });
496
+ });
522
497
  }
523
498
  showDeleteModal() {
524
499
  this.showDeleteModal$.next(true);
525
500
  }
526
501
  downloadFormFlowDefinition(model) {
527
- this.formFlowDefinitionId$.subscribe(formFlowDefinitionId => this.formFlowDownloadService.downloadJson(JSON.parse(model.value), formFlowDefinitionId));
528
- }
529
- loadFormFlowDefinitionId(formFlowDefinitionId) {
530
- if (!!formFlowDefinitionId) {
531
- this.formFlowDefinitionId$.next(formFlowDefinitionId);
532
- }
502
+ this._params$
503
+ .pipe(take(1))
504
+ .subscribe((params) => this.formFlowDownloadService.downloadJson(JSON.parse(model.value), params));
533
505
  }
534
- openFormFlowDefinitionSubscription() {
535
- this.loading$.next(true);
536
- this._idSubscription = this.route.params
537
- .pipe(filter(params => params?.key), map(params => params.key), switchMap(key => combineLatest([
538
- of(key),
539
- this.formFlowService.formFlows$.pipe(map(formFlowDefinitions => formFlowDefinitions.find(definition => definition.key === key)?.versions), filter(versions => !!versions), take(1), tap(versions => this.formFlowDefinitionVersions$.next(versions))),
540
- ])), map(([key, versions]) => ({ key, version: versions[0] })))
541
- .subscribe(formFlowDefinitionId => {
542
- this.pageTitleService.setCustomPageTitle(formFlowDefinitionId.key);
543
- this.formFlowDefinitionId$.next(formFlowDefinitionId);
544
- });
545
- this._definitionSubscription = this.formFlowDefinition$.pipe().subscribe(formFlowDefinition => {
546
- this.readOnly$.next(formFlowDefinition.readOnly === true);
547
- this.setModel(formFlowDefinition);
548
- });
506
+ navigateBack() {
507
+ this.router.navigate(['../'], { relativeTo: this.route });
549
508
  }
550
- setModel(formFlowDefinition) {
509
+ getEditorModel(formFlowDefinition) {
551
510
  const clone = { ...formFlowDefinition };
552
- delete clone.version;
553
511
  delete clone.readOnly;
554
- this.model$.next({
512
+ return {
555
513
  value: JSON.stringify(clone),
556
514
  language: 'json',
557
- uri: formFlowDefinition.key + '-' + formFlowDefinition.version + '.formflow.json',
558
- });
559
- this.loading$.next(false);
515
+ };
560
516
  }
561
- showSuccessMessage(key) {
517
+ showSuccessMessage(formFlowDefinitionKey) {
562
518
  this.notificationService.showToast({
563
519
  caption: this.translateService.instant('formFlow.savedSuccessTitleMessage', {
564
- key,
520
+ key: formFlowDefinitionKey,
565
521
  }),
566
522
  type: 'success',
567
- duration: CARBON_CONSTANTS.notificationDuration,
568
- showClose: true,
569
523
  title: this.translateService.instant('formFlow.savedSuccessTitle'),
570
524
  });
571
525
  }
572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowEditorComponent, deps: [{ token: FormFlowService }, { token: i2$1.ActivatedRoute }, { token: i3$1.PageTitleService }, { token: i2$1.Router }, { token: i4.NotificationService }, { token: i5.TranslateService }, { token: FormFlowDownloadService }, { token: i3$1.PageHeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
573
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFlowEditorComponent, selector: "ng-component", providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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=\"model$ | async as model; else loading\">\n <valtimo-editor\n [disabled]=\"(loading$ | async) === false && readOnly$ | async\"\n [model]=\"model\"\n [jsonSchema]=\"formFlowSchemaJson\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n class=\"buttons-container\"\n *ngIf=\"{\n model: model$ | async,\n valid: valid$ | async,\n readOnly: readOnly$ | async,\n versions: formFlowDefinitionVersionItems$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n >\n <cds-dropdown\n [disabled]=\"obs.versions.isLoading || obs.versions.value.length === 1\"\n [dropUp]=\"false\"\n [skeleton]=\"obs.versions.isLoading\"\n (selected)=\"loadFormFlowDefinitionId($event.item.formFlowDefinitionId)\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list [items]=\"obs.versions.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"buttons-container-right\">\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"!obs.valid && !obs.readOnly\"\n (selected)=\"downloadFormFlowDefinition(obs.model)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.readOnly\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button\n [disabled]=\"!obs.valid || obs.readOnly\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updateFormFlowDefinition()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"{formFlowDefinitionId: formFlowDefinitionId$ | async} as obs\">\n <valtimo-delete-form-flow-modal\n [deleteFormFlowDefinitionKey]=\"obs.formFlowDefinitionId?.key\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-delete-form-flow-modal>\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: [".loading-container{display:flex;width:100%;justify-content:center}::ng-deep .page-actions{width:100%}.buttons-container{display:flex;width:100%;justify-content:space-between;align-items:center}.buttons-container button{height:min-content}.buttons-container-right{display:flex;align-items:center}.overflow-button{margin-right:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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.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: "component", type: i3$1.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "directive", type: i3$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i4.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i4.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "component", type: i4.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i4.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: DeleteFormFlowModalComponent, selector: "valtimo-delete-form-flow-modal", inputs: ["deleteFormFlowDefinitionKey", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
526
+ initBreadcrumbs(params) {
527
+ const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;
528
+ this.breadcrumbService.setThirdBreadcrumb({
529
+ route: [route],
530
+ content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,
531
+ href: route,
532
+ });
533
+ const routeWithFormFlows = `${route}/form-flows`;
534
+ this.breadcrumbService.setFourthBreadcrumb({
535
+ route: [routeWithFormFlows],
536
+ content: this.translateService.instant('caseManagement.tabs.formFlows'),
537
+ href: routeWithFormFlows,
538
+ });
539
+ }
540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowEditorComponent, deps: [{ token: i1$2.BreadcrumbService }, { token: FormFlowDownloadService }, { token: FormFlowService }, { token: i2$1.IconService }, { token: i2.GlobalNotificationService }, { token: i1$2.PageHeaderService }, { token: i1$2.PageTitleService }, { token: i3.ActivatedRoute }, { token: i3.Router }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: FormFlowEditorComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (model$ | async; as model) {\n <valtimo-editor\n [disabled]=\"(loading$ | async) === false && readOnly$ | async\"\n [model]=\"model\"\n [jsonSchema]=\"formFlowSchemaJson\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n} @else {\n <cds-loading></cds-loading>\n}\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n compactMode: compactMode$ | async,\n valid: valid$ | async,\n readOnly: readOnly$ | async,\n model: model$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu>\n <cds-overflow-menu-option\n [disabled]=\"!obs.valid && !obs.readOnly\"\n (selected)=\"downloadFormFlowDefinition(obs.model)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.readOnly\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button cdsButton=\"secondary\" [size]=\"obs.compactMode ? 'sm' : 'md'\" (click)=\"navigateBack()\">\n {{ 'interface.back' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n </button>\n\n <button\n [disabled]=\"!obs.valid || obs.readOnly\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updateFormFlowDefinition()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete()\"\n></valtimo-confirmation-modal>\n", styles: ["cds-loading{display:flex;justify-content:center}.buttons-container{display:flex;align-items:center;justify-self:flex-end;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i1$2.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "directive", type: i1$2.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i2$1.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i2$1.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
574
542
  }
575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowEditorComponent, decorators: [{
543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowEditorComponent, decorators: [{
576
544
  type: Component,
577
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [NotificationService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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=\"model$ | async as model; else loading\">\n <valtimo-editor\n [disabled]=\"(loading$ | async) === false && readOnly$ | async\"\n [model]=\"model\"\n [jsonSchema]=\"formFlowSchemaJson\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n class=\"buttons-container\"\n *ngIf=\"{\n model: model$ | async,\n valid: valid$ | async,\n readOnly: readOnly$ | async,\n versions: formFlowDefinitionVersionItems$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n >\n <cds-dropdown\n [disabled]=\"obs.versions.isLoading || obs.versions.value.length === 1\"\n [dropUp]=\"false\"\n [skeleton]=\"obs.versions.isLoading\"\n (selected)=\"loadFormFlowDefinitionId($event.item.formFlowDefinitionId)\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list [items]=\"obs.versions.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"buttons-container-right\">\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"!obs.valid && !obs.readOnly\"\n (selected)=\"downloadFormFlowDefinition(obs.model)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.readOnly\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button\n [disabled]=\"!obs.valid || obs.readOnly\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updateFormFlowDefinition()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"{formFlowDefinitionId: formFlowDefinitionId$ | async} as obs\">\n <valtimo-delete-form-flow-modal\n [deleteFormFlowDefinitionKey]=\"obs.formFlowDefinitionId?.key\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-delete-form-flow-modal>\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: [".loading-container{display:flex;width:100%;justify-content:center}::ng-deep .page-actions{width:100%}.buttons-container{display:flex;width:100%;justify-content:space-between;align-items:center}.buttons-container button{height:min-content}.buttons-container-right{display:flex;align-items:center}.overflow-button{margin-right:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
578
- }], ctorParameters: () => [{ type: FormFlowService }, { type: i2$1.ActivatedRoute }, { type: i3$1.PageTitleService }, { type: i2$1.Router }, { type: i4.NotificationService }, { type: i5.TranslateService }, { type: FormFlowDownloadService }, { type: i3$1.PageHeaderService }] });
545
+ args: [{ standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (model$ | async; as model) {\n <valtimo-editor\n [disabled]=\"(loading$ | async) === false && readOnly$ | async\"\n [model]=\"model\"\n [jsonSchema]=\"formFlowSchemaJson\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n} @else {\n <cds-loading></cds-loading>\n}\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n compactMode: compactMode$ | async,\n valid: valid$ | async,\n readOnly: readOnly$ | async,\n model: model$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu>\n <cds-overflow-menu-option\n [disabled]=\"!obs.valid && !obs.readOnly\"\n (selected)=\"downloadFormFlowDefinition(obs.model)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.readOnly\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button cdsButton=\"secondary\" [size]=\"obs.compactMode ? 'sm' : 'md'\" (click)=\"navigateBack()\">\n {{ 'interface.back' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n </button>\n\n <button\n [disabled]=\"!obs.valid || obs.readOnly\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updateFormFlowDefinition()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete()\"\n></valtimo-confirmation-modal>\n", styles: ["cds-loading{display:flex;justify-content:center}.buttons-container{display:flex;align-items:center;justify-self:flex-end;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
546
+ }], ctorParameters: () => [{ type: i1$2.BreadcrumbService }, { type: FormFlowDownloadService }, { type: FormFlowService }, { type: i2$1.IconService }, { type: i2.GlobalNotificationService }, { type: i1$2.PageHeaderService }, { type: i1$2.PageTitleService }, { type: i3.ActivatedRoute }, { type: i3.Router }, { type: i4.TranslateService }] });
579
547
 
580
548
  /*
581
- * Copyright 2015-2024 Ritense BV, the Netherlands.
549
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
582
550
  *
583
551
  * Licensed under EUPL, Version 1.2 (the "License");
584
552
  * you may not use this file except in compliance with the License.
@@ -592,39 +560,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
592
560
  * See the License for the specific language governing permissions and
593
561
  * limitations under the License.
594
562
  */
595
- const routes = [
596
- {
597
- path: 'form-flow-management',
598
- component: FormFlowOverviewComponent,
599
- canActivate: [AuthGuardService],
600
- data: { title: 'Form flow', formFlows: [ROLE_ADMIN] },
601
- },
602
- {
603
- path: 'form-flow-management/:key',
604
- component: FormFlowEditorComponent,
605
- canActivate: [AuthGuardService],
606
- data: {
607
- title: 'FormFlow details',
608
- formFlows: [ROLE_ADMIN],
609
- customPageTitle: true,
610
- },
611
- },
612
- ];
613
- class FormFlowManagementRoutingModule {
614
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
615
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementRoutingModule, imports: [CommonModule, i2$1.RouterModule], exports: [RouterModule] }); }
616
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
563
+ class DeleteFormFlowModalComponent {
564
+ constructor() {
565
+ this.deleteEvent = new EventEmitter();
566
+ }
567
+ onDelete(formFlowDefinitionKey) {
568
+ this.deleteEvent.emit(formFlowDefinitionKey);
569
+ }
570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeleteFormFlowModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
571
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DeleteFormFlowModalComponent, isStandalone: false, selector: "valtimo-delete-form-flow-modal", inputs: { deleteFormFlowDefinitionKey: "deleteFormFlowDefinitionKey", showDeleteModal$: "showDeleteModal$" }, outputs: { deleteEvent: "deleteEvent" }, 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [outputOnConfirm]=\"deleteFormFlowDefinitionKey\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n", dependencies: [{ kind: "component", type: i1$2.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
617
572
  }
618
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementRoutingModule, decorators: [{
619
- type: NgModule,
620
- args: [{
621
- imports: [CommonModule, RouterModule.forChild(routes)],
622
- exports: [RouterModule],
623
- }]
624
- }] });
573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeleteFormFlowModalComponent, decorators: [{
574
+ type: Component,
575
+ args: [{ standalone: false, selector: 'valtimo-delete-form-flow-modal', changeDetection: ChangeDetectionStrategy.OnPush, 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formFlow.deleteModalContent\"\n [outputOnConfirm]=\"deleteFormFlowDefinitionKey\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n" }]
576
+ }], propDecorators: { deleteFormFlowDefinitionKey: [{
577
+ type: Input
578
+ }], showDeleteModal$: [{
579
+ type: Input
580
+ }], deleteEvent: [{
581
+ type: Output
582
+ }] } });
625
583
 
626
584
  /*
627
- * Copyright 2015-2024 Ritense BV, the Netherlands.
585
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
628
586
  *
629
587
  * Licensed under EUPL, Version 1.2 (the "License");
630
588
  * you may not use this file except in compliance with the License.
@@ -639,12 +597,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
639
597
  * limitations under the License.
640
598
  */
641
599
  class FormFlowManagementModule {
642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
643
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementModule, declarations: [FormFlowOverviewComponent,
600
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
601
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: FormFlowManagementModule, declarations: [FormFlowOverviewComponent,
644
602
  NewFormFlowModalComponent,
645
603
  FormFlowEditorComponent,
646
604
  DeleteFormFlowModalComponent], imports: [CommonModule,
647
- FormFlowManagementRoutingModule,
648
605
  ButtonModule,
649
606
  FormsModule,
650
607
  ModalModule,
@@ -654,15 +611,15 @@ class FormFlowManagementModule {
654
611
  IconModule,
655
612
  ConfirmationModalModule,
656
613
  EditorModule,
657
- RenderInPageHeaderDirectiveModule,
614
+ RenderInPageHeaderDirective,
658
615
  LoadingModule,
659
616
  IconModule,
660
617
  DialogModule,
661
618
  NotificationModule,
662
619
  CarbonListModule,
663
- DropdownModule] }); }
664
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementModule, imports: [CommonModule,
665
- FormFlowManagementRoutingModule,
620
+ DropdownModule,
621
+ ConfirmationModalModule] }); }
622
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowManagementModule, imports: [CommonModule,
666
623
  ButtonModule,
667
624
  FormsModule,
668
625
  ModalModule,
@@ -672,15 +629,15 @@ class FormFlowManagementModule {
672
629
  IconModule,
673
630
  ConfirmationModalModule,
674
631
  EditorModule,
675
- RenderInPageHeaderDirectiveModule,
676
632
  LoadingModule,
677
633
  IconModule,
678
634
  DialogModule,
679
635
  NotificationModule,
680
636
  CarbonListModule,
681
- DropdownModule] }); }
637
+ DropdownModule,
638
+ ConfirmationModalModule] }); }
682
639
  }
683
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowManagementModule, decorators: [{
640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormFlowManagementModule, decorators: [{
684
641
  type: NgModule,
685
642
  args: [{
686
643
  declarations: [
@@ -691,7 +648,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
691
648
  ],
692
649
  imports: [
693
650
  CommonModule,
694
- FormFlowManagementRoutingModule,
695
651
  ButtonModule,
696
652
  FormsModule,
697
653
  ModalModule,
@@ -701,19 +657,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
701
657
  IconModule,
702
658
  ConfirmationModalModule,
703
659
  EditorModule,
704
- RenderInPageHeaderDirectiveModule,
660
+ RenderInPageHeaderDirective,
705
661
  LoadingModule,
706
662
  IconModule,
707
663
  DialogModule,
708
664
  NotificationModule,
709
665
  CarbonListModule,
710
666
  DropdownModule,
667
+ ConfirmationModalModule,
711
668
  ],
712
669
  }]
713
670
  }] });
714
671
 
715
672
  /*
716
- * Copyright 2015-2024 Ritense BV, the Netherlands.
673
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
717
674
  *
718
675
  * Licensed under EUPL, Version 1.2 (the "License");
719
676
  * you may not use this file except in compliance with the License.
@@ -735,5 +692,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
735
692
  * Generated bundle index. Do not edit.
736
693
  */
737
694
 
738
- export { FormFlowManagementModule, FormFlowService };
695
+ export { FormFlowEditorComponent, FormFlowManagementModule, FormFlowOverviewComponent, FormFlowService };
739
696
  //# sourceMappingURL=valtimo-form-flow-management.mjs.map