@valtimo/process-link 0.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.
- package/README.md +32 -0
- package/fesm2022/valtimo-process-link.mjs +2985 -0
- package/fesm2022/valtimo-process-link.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts +12 -0
- package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts.map +1 -0
- package/lib/components/choose-process-link-type/index.d.ts +2 -0
- package/lib/components/choose-process-link-type/index.d.ts.map +1 -0
- package/lib/components/form-display-configuration/form-display-configuration.component.d.ts +42 -0
- package/lib/components/form-display-configuration/form-display-configuration.component.d.ts.map +1 -0
- package/lib/components/form-flow/form-flow.component.d.ts +54 -0
- package/lib/components/form-flow/form-flow.component.d.ts.map +1 -0
- package/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.d.ts +30 -0
- package/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.d.ts.map +1 -0
- package/lib/components/form-flow-configuration-container/index.d.ts +2 -0
- package/lib/components/form-flow-configuration-container/index.d.ts.map +1 -0
- package/lib/components/form-link-process-diagram/form-link-process-diagram.component.d.ts +34 -0
- package/lib/components/form-link-process-diagram/form-link-process-diagram.component.d.ts.map +1 -0
- package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts +48 -0
- package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts.map +1 -0
- package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts +39 -0
- package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts.map +1 -0
- package/lib/components/process-link/process-link.component.d.ts +14 -0
- package/lib/components/process-link/process-link.component.d.ts.map +1 -0
- package/lib/components/process-link-modal/process-link-modal.component.d.ts +38 -0
- package/lib/components/process-link-modal/process-link-modal.component.d.ts.map +1 -0
- package/lib/components/select-form/index.d.ts +2 -0
- package/lib/components/select-form/index.d.ts.map +1 -0
- package/lib/components/select-form/select-form.component.d.ts +42 -0
- package/lib/components/select-form/select-form.component.d.ts.map +1 -0
- package/lib/components/select-form-flow/index.d.ts +2 -0
- package/lib/components/select-form-flow/index.d.ts.map +1 -0
- package/lib/components/select-form-flow/select-form-flow.component.d.ts +40 -0
- package/lib/components/select-form-flow/select-form-flow.component.d.ts.map +1 -0
- package/lib/components/select-plugin-action/select-plugin-action.component.d.ts +29 -0
- package/lib/components/select-plugin-action/select-plugin-action.component.d.ts.map +1 -0
- package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts +29 -0
- package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts.map +1 -0
- package/lib/components/select-ui-component/select-ui-component.component.d.ts +28 -0
- package/lib/components/select-ui-component/select-ui-component.component.d.ts.map +1 -0
- package/lib/constants/index.d.ts +3 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/constants/injection-tokens.d.ts +6 -0
- package/lib/constants/injection-tokens.d.ts.map +1 -0
- package/lib/constants/process.link.d.ts +5 -0
- package/lib/constants/process.link.d.ts.map +1 -0
- package/lib/models/form-custom-component.model.d.ts +16 -0
- package/lib/models/form-custom-component.model.d.ts.map +1 -0
- package/lib/models/form-flow.model.d.ts +18 -0
- package/lib/models/form-flow.model.d.ts.map +1 -0
- package/lib/models/form-link.model.d.ts +57 -0
- package/lib/models/form-link.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +5 -0
- package/lib/models/index.d.ts.map +1 -0
- package/lib/models/process-link-url.model.d.ts +5 -0
- package/lib/models/process-link-url.model.d.ts.map +1 -0
- package/lib/models/process-link.model.d.ts +178 -0
- package/lib/models/process-link.model.d.ts.map +1 -0
- package/lib/process-link-routing.module.d.ts +8 -0
- package/lib/process-link-routing.module.d.ts.map +1 -0
- package/lib/process-link.module.d.ts +28 -0
- package/lib/process-link.module.d.ts.map +1 -0
- package/lib/services/form-flow-component.service.d.ts +13 -0
- package/lib/services/form-flow-component.service.d.ts.map +1 -0
- package/lib/services/form-flow.service.d.ts +20 -0
- package/lib/services/form-flow.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +10 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/plugin-state.service.d.ts +29 -0
- package/lib/services/plugin-state.service.d.ts.map +1 -0
- package/lib/services/process-link-button.service.d.ts +37 -0
- package/lib/services/process-link-button.service.d.ts.map +1 -0
- package/lib/services/process-link-state.service.d.ts +66 -0
- package/lib/services/process-link-state.service.d.ts.map +1 -0
- package/lib/services/process-link-step.service.d.ts +44 -0
- package/lib/services/process-link-step.service.d.ts.map +1 -0
- package/lib/services/process-link.service.d.ts +28 -0
- package/lib/services/process-link.service.d.ts.map +1 -0
- package/lib/services/url-resolver.service.d.ts +7 -0
- package/lib/services/url-resolver.service.d.ts.map +1 -0
- package/lib/services/url-validator.service.d.ts +11 -0
- package/lib/services/url-validator.service.d.ts.map +1 -0
- package/package.json +24 -0
- package/public-api.d.ts +12 -0
- package/public-api.d.ts.map +1 -0
- package/valtimo-process-link.d.ts.map +1 -0
|
@@ -0,0 +1,2985 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, InjectionToken, Optional, Inject, Component, EventEmitter, Output, Input, ViewChild, ChangeDetectionStrategy, NgModule, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import * as i2 from '@valtimo/shared';
|
|
4
|
+
import { BaseApiService, getCaseManagementRouteParams, ROLE_ADMIN } from '@valtimo/shared';
|
|
5
|
+
import * as i1 from '@angular/common/http';
|
|
6
|
+
import { HttpParams, HttpHeaders } from '@angular/common/http';
|
|
7
|
+
import { BehaviorSubject, Subject, switchMap, of, combineLatest, map as map$1, filter, Subscription, startWith, mergeMap, tap, take as take$1 } from 'rxjs';
|
|
8
|
+
import { map, take, switchMap as switchMap$1, tap as tap$1 } from 'rxjs/operators';
|
|
9
|
+
import * as i1$1 from '@valtimo/plugin';
|
|
10
|
+
import { PluginTranslatePipeModule, PluginConfigurationContainerModule } from '@valtimo/plugin';
|
|
11
|
+
import * as i2$1 from '@ngx-translate/core';
|
|
12
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
13
|
+
import * as i3 from '@angular/common';
|
|
14
|
+
import { CommonModule } from '@angular/common';
|
|
15
|
+
import * as i4 from 'carbon-components-angular';
|
|
16
|
+
import { ModalModule as ModalModule$1, ProgressIndicatorModule, ButtonModule, IconModule, ComboBoxModule, InputModule, LoadingModule, StructuredListModule, TilesModule, SelectModule, ToggleModule, LayerModule, ToggletipModule } from 'carbon-components-angular';
|
|
17
|
+
import * as i1$2 from '@angular/forms';
|
|
18
|
+
import { FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
19
|
+
import { Upload16 } from '@carbon/icons';
|
|
20
|
+
import * as i2$2 from '@valtimo/components';
|
|
21
|
+
import { FormioOptionsImpl, ModalModule, SearchableDropdownSelectModule, StepperModule, VModalModule, ParagraphModule, TooltipModule, TooltipIconModule, FormIoModule, ValtimoCdsModalDirective, RenderInPageHeaderDirective, CarbonMultiInputModule, RemoveClassnamesDirective } from '@valtimo/components';
|
|
22
|
+
import * as i5 from 'carbon-components-angular/dropdown';
|
|
23
|
+
import BpmnViewer from 'bpmn-js';
|
|
24
|
+
import * as i1$3 from '@valtimo/process';
|
|
25
|
+
import * as i3$1 from '@angular/router';
|
|
26
|
+
import { RouterModule } from '@angular/router';
|
|
27
|
+
import { AuthGuardService } from '@valtimo/security';
|
|
28
|
+
import * as i1$4 from '@valtimo/form';
|
|
29
|
+
import * as i1$5 from '@valtimo/form-flow-management';
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
33
|
+
*
|
|
34
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
35
|
+
* you may not use this file except in compliance with the License.
|
|
36
|
+
* You may obtain a copy of the License at
|
|
37
|
+
*
|
|
38
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
39
|
+
*
|
|
40
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
41
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
42
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
43
|
+
* See the License for the specific language governing permissions and
|
|
44
|
+
* limitations under the License.
|
|
45
|
+
*/
|
|
46
|
+
class FormFlowService extends BaseApiService {
|
|
47
|
+
constructor(httpClient, configService) {
|
|
48
|
+
super(httpClient, configService);
|
|
49
|
+
this.httpClient = httpClient;
|
|
50
|
+
this.configService = configService;
|
|
51
|
+
}
|
|
52
|
+
createInstanceForNewProcess(processDefinitionKey, request) {
|
|
53
|
+
return this.httpClient.post(this.getApiUrl(`v1/process-definition/${processDefinitionKey}/form-flow`), request);
|
|
54
|
+
}
|
|
55
|
+
getFormFlowStep(formFlowInstanceId) {
|
|
56
|
+
return this.httpClient.get(this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}`));
|
|
57
|
+
}
|
|
58
|
+
submitStep(formFlowInstanceId, stepInstanceId, submissionData) {
|
|
59
|
+
return this.httpClient.post(this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/step/instance/${stepInstanceId}`), submissionData);
|
|
60
|
+
}
|
|
61
|
+
back(formFlowInstanceId, submissionData) {
|
|
62
|
+
return this.httpClient.post(this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/back`), submissionData);
|
|
63
|
+
}
|
|
64
|
+
save(formFlowInstanceId, submissionData) {
|
|
65
|
+
return this.httpClient.post(this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/save`), submissionData);
|
|
66
|
+
}
|
|
67
|
+
getBreadcrumbs(formFlowInstanceId) {
|
|
68
|
+
return this.httpClient.get(this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/breadcrumbs`));
|
|
69
|
+
}
|
|
70
|
+
navigateToStep(instanceId, currentStepInstanceId, targetStepInstanceId, submissionData) {
|
|
71
|
+
return this.httpClient.post(this.getApiUrl(`v1/form-flow/instance/${instanceId}/step/instance/${currentStepInstanceId}/to/step/instance/${targetStepInstanceId}`), submissionData);
|
|
72
|
+
}
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", 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.17", ngImport: i0, type: FormFlowService, providedIn: 'root' }); }
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowService, decorators: [{
|
|
77
|
+
type: Injectable,
|
|
78
|
+
args: [{
|
|
79
|
+
providedIn: 'root',
|
|
80
|
+
}]
|
|
81
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
85
|
+
*
|
|
86
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
87
|
+
* you may not use this file except in compliance with the License.
|
|
88
|
+
* You may obtain a copy of the License at
|
|
89
|
+
*
|
|
90
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
91
|
+
*
|
|
92
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
93
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
94
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
95
|
+
* See the License for the specific language governing permissions and
|
|
96
|
+
* limitations under the License.
|
|
97
|
+
*/
|
|
98
|
+
class PluginStateService {
|
|
99
|
+
constructor(pluginManagementService, pluginService) {
|
|
100
|
+
this.pluginManagementService = pluginManagementService;
|
|
101
|
+
this.pluginService = pluginService;
|
|
102
|
+
this._selectedPluginDefinition$ = new BehaviorSubject(undefined);
|
|
103
|
+
this._selectedPluginConfiguration$ = new BehaviorSubject(undefined);
|
|
104
|
+
this._selectedPluginFunction$ = new BehaviorSubject(undefined);
|
|
105
|
+
this._save$ = new Subject();
|
|
106
|
+
this._selectedProcessLink$ = new BehaviorSubject(undefined);
|
|
107
|
+
}
|
|
108
|
+
get selectedPluginDefinition$() {
|
|
109
|
+
return this._selectedPluginDefinition$.asObservable();
|
|
110
|
+
}
|
|
111
|
+
get selectedPluginConfiguration$() {
|
|
112
|
+
return this._selectedPluginConfiguration$.asObservable();
|
|
113
|
+
}
|
|
114
|
+
get selectedPluginFunction$() {
|
|
115
|
+
return this._selectedPluginFunction$.asObservable();
|
|
116
|
+
}
|
|
117
|
+
get save$() {
|
|
118
|
+
return this._save$.asObservable();
|
|
119
|
+
}
|
|
120
|
+
get functionKey$() {
|
|
121
|
+
return this._selectedProcessLink$.pipe(switchMap(processLink => !processLink
|
|
122
|
+
? this._selectedPluginFunction$.pipe(map(pluginFunction => pluginFunction?.key))
|
|
123
|
+
: of(processLink?.pluginActionDefinitionKey)));
|
|
124
|
+
}
|
|
125
|
+
get pluginDefinitionKey$() {
|
|
126
|
+
return this._selectedProcessLink$.pipe(switchMap(selectedProcesLink => !selectedProcesLink
|
|
127
|
+
? this._selectedPluginConfiguration$.pipe(map(configuration => configuration?.pluginDefinition.key))
|
|
128
|
+
: combineLatest([
|
|
129
|
+
this._selectedProcessLink$,
|
|
130
|
+
this.pluginService.pluginSpecifications$,
|
|
131
|
+
]).pipe(map(([processLink, pluginSpecifications]) => {
|
|
132
|
+
const pluginSpecification = pluginSpecifications.find(specification => {
|
|
133
|
+
const functionKeys = specification?.functionConfigurationComponents &&
|
|
134
|
+
Object.keys(specification.functionConfigurationComponents);
|
|
135
|
+
return functionKeys?.includes(processLink?.pluginActionDefinitionKey);
|
|
136
|
+
});
|
|
137
|
+
return pluginSpecification?.pluginId;
|
|
138
|
+
}))));
|
|
139
|
+
}
|
|
140
|
+
selectPluginDefinition(definition) {
|
|
141
|
+
this._selectedPluginDefinition$.next(definition);
|
|
142
|
+
}
|
|
143
|
+
selectPluginConfiguration(configuration) {
|
|
144
|
+
this._selectedPluginConfiguration$.next(configuration);
|
|
145
|
+
}
|
|
146
|
+
selectPluginFunction(pluginFunction) {
|
|
147
|
+
this._selectedPluginFunction$.next(pluginFunction);
|
|
148
|
+
}
|
|
149
|
+
selectProcessLink(processLink) {
|
|
150
|
+
this._selectedProcessLink$.next(processLink);
|
|
151
|
+
}
|
|
152
|
+
deselectProcessLink() {
|
|
153
|
+
this._selectedProcessLink$.next(undefined);
|
|
154
|
+
}
|
|
155
|
+
save() {
|
|
156
|
+
this._save$.next(null);
|
|
157
|
+
}
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PluginStateService, deps: [{ token: i1$1.PluginManagementService }, { token: i1$1.PluginService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
159
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PluginStateService, providedIn: 'root' }); }
|
|
160
|
+
}
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PluginStateService, decorators: [{
|
|
162
|
+
type: Injectable,
|
|
163
|
+
args: [{
|
|
164
|
+
providedIn: 'root',
|
|
165
|
+
}]
|
|
166
|
+
}], ctorParameters: () => [{ type: i1$1.PluginManagementService }, { type: i1$1.PluginService }] });
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
170
|
+
*
|
|
171
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
172
|
+
* you may not use this file except in compliance with the License.
|
|
173
|
+
* You may obtain a copy of the License at
|
|
174
|
+
*
|
|
175
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
176
|
+
*
|
|
177
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
178
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
179
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
180
|
+
* See the License for the specific language governing permissions and
|
|
181
|
+
* limitations under the License.
|
|
182
|
+
*/
|
|
183
|
+
class ProcessLinkService {
|
|
184
|
+
constructor(configService, http) {
|
|
185
|
+
this.configService = configService;
|
|
186
|
+
this.http = http;
|
|
187
|
+
this.VALTIMO_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;
|
|
188
|
+
}
|
|
189
|
+
getTasksWithProcessLinks(processInstanceId) {
|
|
190
|
+
return this.http
|
|
191
|
+
.get(`${this.VALTIMO_ENDPOINT_URI}v1/process/${processInstanceId}/tasks/process-link`, {})
|
|
192
|
+
.pipe(map$1(res => res || []));
|
|
193
|
+
}
|
|
194
|
+
getProcessLink(getProcessLinkRequest) {
|
|
195
|
+
var params = new HttpParams().set('processDefinitionId', getProcessLinkRequest.processDefinitionId);
|
|
196
|
+
if (getProcessLinkRequest.activityId !== undefined)
|
|
197
|
+
params = params.set('activityId', getProcessLinkRequest.activityId);
|
|
198
|
+
return this.http.get(`${this.VALTIMO_ENDPOINT_URI}v1/process-link`, {
|
|
199
|
+
params,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
updateProcessLink(updateProcessLinkRequest) {
|
|
203
|
+
return this.http.put(`${this.VALTIMO_ENDPOINT_URI}v1/process-link`, this.emptyStringToNull(updateProcessLinkRequest));
|
|
204
|
+
}
|
|
205
|
+
saveProcessLink(saveProcessLinkRequest) {
|
|
206
|
+
return this.http.post(`${this.VALTIMO_ENDPOINT_URI}v1/process-link`, this.emptyStringToNull(saveProcessLinkRequest));
|
|
207
|
+
}
|
|
208
|
+
deleteProcessLink(id) {
|
|
209
|
+
return this.http.delete(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/${id}`);
|
|
210
|
+
}
|
|
211
|
+
getProcessLinkCandidates(activityType) {
|
|
212
|
+
return this.http.get(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/types?activityType=${activityType}`);
|
|
213
|
+
}
|
|
214
|
+
deployProcessWithProcessLinks(processLinks = [], processDefinitionId, processXml) {
|
|
215
|
+
const formData = new FormData();
|
|
216
|
+
const processLinksBlob = new Blob([JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))], { type: 'application/json' });
|
|
217
|
+
if (processXml)
|
|
218
|
+
formData.append('file', new File([processXml], 'process.bpmn'));
|
|
219
|
+
if (processDefinitionId)
|
|
220
|
+
formData.append('processDefinitionId', processDefinitionId);
|
|
221
|
+
formData.append('processLinks', processLinksBlob);
|
|
222
|
+
return this.http.post(`${this.VALTIMO_ENDPOINT_URI}management/v1/process-definition`, formData);
|
|
223
|
+
}
|
|
224
|
+
deployProcessWithProcessLinksForCase(processLinks = [], processDefinitionId, processXml, caseDefinitionKey, caseDefinitionVersionTag, canInitializeDocument = false, startableByUser = false) {
|
|
225
|
+
const formData = new FormData();
|
|
226
|
+
const processLinksBlob = new Blob([JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))], { type: 'application/json' });
|
|
227
|
+
if (processXml)
|
|
228
|
+
formData.append('file', new File([processXml], 'process.bpmn'));
|
|
229
|
+
if (processDefinitionId)
|
|
230
|
+
formData.append('processDefinitionId', processDefinitionId);
|
|
231
|
+
formData.append('processLinks', processLinksBlob);
|
|
232
|
+
formData.append('canInitializeDocument', String(canInitializeDocument));
|
|
233
|
+
formData.append('startableByUser', String(startableByUser));
|
|
234
|
+
return this.http.post(`${this.VALTIMO_ENDPOINT_URI}management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process-definition`, formData);
|
|
235
|
+
}
|
|
236
|
+
submitForm(processLinkId, formData, documentId, taskInstanceId, documentDefinitionName) {
|
|
237
|
+
let params = new HttpParams();
|
|
238
|
+
if (documentId) {
|
|
239
|
+
params = params.set('documentId', documentId);
|
|
240
|
+
}
|
|
241
|
+
if (taskInstanceId) {
|
|
242
|
+
params = params.set('taskInstanceId', taskInstanceId);
|
|
243
|
+
}
|
|
244
|
+
if (documentDefinitionName) {
|
|
245
|
+
params = params.set('documentDefinitionName', documentDefinitionName);
|
|
246
|
+
}
|
|
247
|
+
const httpOptions = {
|
|
248
|
+
headers: new HttpHeaders().set('Content-Type', 'application/json'),
|
|
249
|
+
params,
|
|
250
|
+
};
|
|
251
|
+
return this.http.post(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/${processLinkId}/form/submission`, formData, httpOptions);
|
|
252
|
+
}
|
|
253
|
+
submitURLProcessLink(processLinkId, documentId, taskInstanceId, documentDefinitionName) {
|
|
254
|
+
let params = new HttpParams();
|
|
255
|
+
if (documentId) {
|
|
256
|
+
params = params.set('documentId', documentId);
|
|
257
|
+
}
|
|
258
|
+
if (taskInstanceId) {
|
|
259
|
+
params = params.set('taskInstanceId', taskInstanceId);
|
|
260
|
+
}
|
|
261
|
+
if (documentDefinitionName) {
|
|
262
|
+
params = params.set('documentDefinitionName', documentDefinitionName);
|
|
263
|
+
}
|
|
264
|
+
const httpOptions = {
|
|
265
|
+
headers: new HttpHeaders().set('Content-Type', 'application/json'),
|
|
266
|
+
params,
|
|
267
|
+
};
|
|
268
|
+
return this.http.post(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/${processLinkId}`, {}, httpOptions);
|
|
269
|
+
}
|
|
270
|
+
getVariables() {
|
|
271
|
+
return this.http.get(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/variables`);
|
|
272
|
+
}
|
|
273
|
+
getCompatiblePluginProcessLinks(pluginActionDefinitionKey) {
|
|
274
|
+
return this.http.get(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/plugin?pluginActionDefinitionKey=${pluginActionDefinitionKey}`);
|
|
275
|
+
}
|
|
276
|
+
emptyStringToNull(object) {
|
|
277
|
+
if (object && typeof object === 'object') {
|
|
278
|
+
Object.keys(object).forEach(key => {
|
|
279
|
+
const typedKey = key;
|
|
280
|
+
const value = object[typedKey];
|
|
281
|
+
if (typeof value === 'object' && value !== null) {
|
|
282
|
+
this.emptyStringToNull(value);
|
|
283
|
+
}
|
|
284
|
+
else if (value === '') {
|
|
285
|
+
object[typedKey] = null;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
return object;
|
|
290
|
+
}
|
|
291
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkService, deps: [{ token: i2.ConfigService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
292
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkService, providedIn: 'root' }); }
|
|
293
|
+
}
|
|
294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkService, decorators: [{
|
|
295
|
+
type: Injectable,
|
|
296
|
+
args: [{
|
|
297
|
+
providedIn: 'root',
|
|
298
|
+
}]
|
|
299
|
+
}], ctorParameters: () => [{ type: i2.ConfigService }, { type: i1.HttpClient }] });
|
|
300
|
+
|
|
301
|
+
/*
|
|
302
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
303
|
+
*
|
|
304
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
305
|
+
* you may not use this file except in compliance with the License.
|
|
306
|
+
* You may obtain a copy of the License at
|
|
307
|
+
*
|
|
308
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
309
|
+
*
|
|
310
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
311
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
312
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
313
|
+
* See the License for the specific language governing permissions and
|
|
314
|
+
* limitations under the License.
|
|
315
|
+
*/
|
|
316
|
+
|
|
317
|
+
var ProcessLinkEditMode;
|
|
318
|
+
(function (ProcessLinkEditMode) {
|
|
319
|
+
ProcessLinkEditMode[ProcessLinkEditMode["SAVE_TO_BACKEND"] = 0] = "SAVE_TO_BACKEND";
|
|
320
|
+
ProcessLinkEditMode[ProcessLinkEditMode["EMIT_EVENTS"] = 1] = "EMIT_EVENTS";
|
|
321
|
+
})(ProcessLinkEditMode || (ProcessLinkEditMode = {}));
|
|
322
|
+
|
|
323
|
+
/*
|
|
324
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
325
|
+
*
|
|
326
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
327
|
+
* you may not use this file except in compliance with the License.
|
|
328
|
+
* You may obtain a copy of the License at
|
|
329
|
+
*
|
|
330
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
331
|
+
*
|
|
332
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
333
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
334
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
335
|
+
* See the License for the specific language governing permissions and
|
|
336
|
+
* limitations under the License.
|
|
337
|
+
*/
|
|
338
|
+
|
|
339
|
+
/*
|
|
340
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
341
|
+
*
|
|
342
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
343
|
+
* you may not use this file except in compliance with the License.
|
|
344
|
+
* You may obtain a copy of the License at
|
|
345
|
+
*
|
|
346
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
347
|
+
*
|
|
348
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
349
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
350
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
351
|
+
* See the License for the specific language governing permissions and
|
|
352
|
+
* limitations under the License.
|
|
353
|
+
*/
|
|
354
|
+
|
|
355
|
+
/*
|
|
356
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
357
|
+
*
|
|
358
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
359
|
+
* you may not use this file except in compliance with the License.
|
|
360
|
+
* You may obtain a copy of the License at
|
|
361
|
+
*
|
|
362
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
363
|
+
*
|
|
364
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
365
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
366
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
367
|
+
* See the License for the specific language governing permissions and
|
|
368
|
+
* limitations under the License.
|
|
369
|
+
*/
|
|
370
|
+
|
|
371
|
+
/*
|
|
372
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
373
|
+
*
|
|
374
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
375
|
+
* you may not use this file except in compliance with the License.
|
|
376
|
+
* You may obtain a copy of the License at
|
|
377
|
+
*
|
|
378
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
379
|
+
*
|
|
380
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
381
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
382
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
383
|
+
* See the License for the specific language governing permissions and
|
|
384
|
+
* limitations under the License.
|
|
385
|
+
*/
|
|
386
|
+
const FORM_FLOW_COMPONENT_TOKEN = new InjectionToken('Supported form-flow Angular components', { factory: () => [] });
|
|
387
|
+
const FORM_CUSTOM_COMPONENT_TOKEN = new InjectionToken('Custom component that can be used instead of FormIO or form-flow');
|
|
388
|
+
|
|
389
|
+
/*
|
|
390
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
391
|
+
*
|
|
392
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
393
|
+
* you may not use this file except in compliance with the License.
|
|
394
|
+
* You may obtain a copy of the License at
|
|
395
|
+
*
|
|
396
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
397
|
+
*
|
|
398
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
399
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
400
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
401
|
+
* See the License for the specific language governing permissions and
|
|
402
|
+
* limitations under the License.
|
|
403
|
+
*/
|
|
404
|
+
const formSizeToCarbonModalSizeMap = {
|
|
405
|
+
extraSmall: 'xs',
|
|
406
|
+
small: 'sm',
|
|
407
|
+
medium: 'md',
|
|
408
|
+
large: 'lg',
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
/*
|
|
412
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
413
|
+
*
|
|
414
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
415
|
+
* you may not use this file except in compliance with the License.
|
|
416
|
+
* You may obtain a copy of the License at
|
|
417
|
+
*
|
|
418
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
419
|
+
*
|
|
420
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
421
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
422
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
423
|
+
* See the License for the specific language governing permissions and
|
|
424
|
+
* limitations under the License.
|
|
425
|
+
*/
|
|
426
|
+
|
|
427
|
+
/*
|
|
428
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
429
|
+
*
|
|
430
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
431
|
+
* you may not use this file except in compliance with the License.
|
|
432
|
+
* You may obtain a copy of the License at
|
|
433
|
+
*
|
|
434
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
435
|
+
*
|
|
436
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
437
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
438
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
439
|
+
* See the License for the specific language governing permissions and
|
|
440
|
+
* limitations under the License.
|
|
441
|
+
*/
|
|
442
|
+
class ProcessLinkButtonService {
|
|
443
|
+
constructor() {
|
|
444
|
+
this._showSaveButton$ = new BehaviorSubject(false);
|
|
445
|
+
this._enableSaveButton$ = new BehaviorSubject(false);
|
|
446
|
+
this._enableNextButton$ = new BehaviorSubject(false);
|
|
447
|
+
this._showBackButton$ = new BehaviorSubject(false);
|
|
448
|
+
this._showNextButton$ = new BehaviorSubject(false);
|
|
449
|
+
this._backButtonClick$ = new Subject();
|
|
450
|
+
this._saveButtonClick$ = new Subject();
|
|
451
|
+
this._nextButtonClick$ = new Subject();
|
|
452
|
+
}
|
|
453
|
+
get showSaveButton$() {
|
|
454
|
+
return this._showSaveButton$.asObservable();
|
|
455
|
+
}
|
|
456
|
+
get enableSaveButton$() {
|
|
457
|
+
return this._enableSaveButton$.asObservable();
|
|
458
|
+
}
|
|
459
|
+
get showNextButton$() {
|
|
460
|
+
return this._showNextButton$.asObservable();
|
|
461
|
+
}
|
|
462
|
+
get enableNextButton$() {
|
|
463
|
+
return this._enableNextButton$.asObservable();
|
|
464
|
+
}
|
|
465
|
+
get showBackButton$() {
|
|
466
|
+
return this._showBackButton$.asObservable();
|
|
467
|
+
}
|
|
468
|
+
get backButtonClick$() {
|
|
469
|
+
return this._backButtonClick$.asObservable();
|
|
470
|
+
}
|
|
471
|
+
get saveButtonClick$() {
|
|
472
|
+
return this._saveButtonClick$.asObservable();
|
|
473
|
+
}
|
|
474
|
+
get nextButtonClick$() {
|
|
475
|
+
return this._nextButtonClick$.asObservable();
|
|
476
|
+
}
|
|
477
|
+
showSaveButton() {
|
|
478
|
+
this._showSaveButton$.next(true);
|
|
479
|
+
}
|
|
480
|
+
hideSaveButton() {
|
|
481
|
+
this._showSaveButton$.next(false);
|
|
482
|
+
}
|
|
483
|
+
showNextButton() {
|
|
484
|
+
this._showNextButton$.next(true);
|
|
485
|
+
}
|
|
486
|
+
hideNextButton() {
|
|
487
|
+
this._showNextButton$.next(false);
|
|
488
|
+
}
|
|
489
|
+
enableNextButton() {
|
|
490
|
+
this._enableNextButton$.next(true);
|
|
491
|
+
}
|
|
492
|
+
disableNextButton() {
|
|
493
|
+
this._enableNextButton$.next(false);
|
|
494
|
+
}
|
|
495
|
+
enableSaveButton() {
|
|
496
|
+
this._enableSaveButton$.next(true);
|
|
497
|
+
}
|
|
498
|
+
disableSaveButton() {
|
|
499
|
+
this._enableSaveButton$.next(false);
|
|
500
|
+
}
|
|
501
|
+
showBackButton() {
|
|
502
|
+
this._showBackButton$.next(true);
|
|
503
|
+
}
|
|
504
|
+
hideBackButton() {
|
|
505
|
+
this._showBackButton$.next(false);
|
|
506
|
+
}
|
|
507
|
+
clickBackButton() {
|
|
508
|
+
this._backButtonClick$.next(null);
|
|
509
|
+
}
|
|
510
|
+
clickSaveButton() {
|
|
511
|
+
this._saveButtonClick$.next(null);
|
|
512
|
+
}
|
|
513
|
+
clickNextButton() {
|
|
514
|
+
this._nextButtonClick$.next(null);
|
|
515
|
+
}
|
|
516
|
+
resetButtons() {
|
|
517
|
+
this.disableSaveButton();
|
|
518
|
+
this.hideBackButton();
|
|
519
|
+
this.hideSaveButton();
|
|
520
|
+
this.hideNextButton();
|
|
521
|
+
this.disableNextButton();
|
|
522
|
+
}
|
|
523
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkButtonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
524
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkButtonService, providedIn: 'root' }); }
|
|
525
|
+
}
|
|
526
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkButtonService, decorators: [{
|
|
527
|
+
type: Injectable,
|
|
528
|
+
args: [{
|
|
529
|
+
providedIn: 'root',
|
|
530
|
+
}]
|
|
531
|
+
}] });
|
|
532
|
+
|
|
533
|
+
/*
|
|
534
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
535
|
+
*
|
|
536
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
537
|
+
* you may not use this file except in compliance with the License.
|
|
538
|
+
* You may obtain a copy of the License at
|
|
539
|
+
*
|
|
540
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
541
|
+
*
|
|
542
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
543
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
544
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
545
|
+
* See the License for the specific language governing permissions and
|
|
546
|
+
* limitations under the License.
|
|
547
|
+
*/
|
|
548
|
+
class ProcessLinkStepService {
|
|
549
|
+
get steps$() {
|
|
550
|
+
return combineLatest([
|
|
551
|
+
this._steps$,
|
|
552
|
+
this._disableSteps$,
|
|
553
|
+
this.translateService.stream('key'),
|
|
554
|
+
]).pipe(filter(([steps]) => !!steps), map$1(([steps, disableSteps]) => steps.map(step => ({
|
|
555
|
+
...step,
|
|
556
|
+
disabled: disableSteps,
|
|
557
|
+
label: this.translateService.instant(`processLinkSteps.${step.label}`),
|
|
558
|
+
...(step.secondaryLabel && {
|
|
559
|
+
secondaryLabel: this.translateService.instant(step.secondaryLabel),
|
|
560
|
+
}),
|
|
561
|
+
}))));
|
|
562
|
+
}
|
|
563
|
+
get currentStepIndex$() {
|
|
564
|
+
return this._currentStepIndex$.asObservable();
|
|
565
|
+
}
|
|
566
|
+
get currentStepId$() {
|
|
567
|
+
return combineLatest([this._steps$, this.currentStepIndex$]).pipe(filter(([steps, currentStepIndex]) => !!steps && typeof currentStepIndex === 'number'), map$1(([steps, currentStepIndex]) => steps.length > 0 ? steps[currentStepIndex]?.label : ''));
|
|
568
|
+
}
|
|
569
|
+
get hasOneProcessLinkType$() {
|
|
570
|
+
return this._hasOneProcessLinkType$.asObservable();
|
|
571
|
+
}
|
|
572
|
+
constructor(translateService, buttonService, pluginStateService, pluginTranslateService) {
|
|
573
|
+
this.translateService = translateService;
|
|
574
|
+
this.buttonService = buttonService;
|
|
575
|
+
this.pluginStateService = pluginStateService;
|
|
576
|
+
this.pluginTranslateService = pluginTranslateService;
|
|
577
|
+
this._steps$ = new BehaviorSubject(undefined);
|
|
578
|
+
this._currentStepIndex$ = new BehaviorSubject(0);
|
|
579
|
+
this._disableSteps$ = new BehaviorSubject(false);
|
|
580
|
+
this._hasOneProcessLinkType$ = new BehaviorSubject(false);
|
|
581
|
+
}
|
|
582
|
+
reset() {
|
|
583
|
+
this._currentStepIndex$.next(0);
|
|
584
|
+
this._steps$.next([]);
|
|
585
|
+
}
|
|
586
|
+
setInitialSteps(availableProcessLinkTypes) {
|
|
587
|
+
if (availableProcessLinkTypes.length > 1) {
|
|
588
|
+
this.setChoiceSteps();
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
setFormSteps() {
|
|
592
|
+
this._steps$.next([
|
|
593
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form' },
|
|
594
|
+
{ label: 'selectForm' },
|
|
595
|
+
]);
|
|
596
|
+
this._currentStepIndex$.next(1);
|
|
597
|
+
}
|
|
598
|
+
setSingleFormStep() {
|
|
599
|
+
this._steps$.next([{ label: 'selectForm' }]);
|
|
600
|
+
this._currentStepIndex$.next(0);
|
|
601
|
+
}
|
|
602
|
+
setUIComponentStep() {
|
|
603
|
+
this._steps$.next([
|
|
604
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.ui-component' },
|
|
605
|
+
{ label: 'uiComponent' },
|
|
606
|
+
]);
|
|
607
|
+
this._currentStepIndex$.next(1);
|
|
608
|
+
}
|
|
609
|
+
setFormFlowSteps() {
|
|
610
|
+
this._steps$.next([
|
|
611
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form-flow' },
|
|
612
|
+
{ label: 'selectFormFlow' },
|
|
613
|
+
]);
|
|
614
|
+
this._currentStepIndex$.next(1);
|
|
615
|
+
}
|
|
616
|
+
setSingleFormFlowStep() {
|
|
617
|
+
this._steps$.next([{ label: 'selectFormFlow' }]);
|
|
618
|
+
this._currentStepIndex$.next(0);
|
|
619
|
+
}
|
|
620
|
+
setChoosePluginConfigurationSteps() {
|
|
621
|
+
this._steps$.next([
|
|
622
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin' },
|
|
623
|
+
{ label: 'choosePluginConfiguration' },
|
|
624
|
+
{ label: 'choosePluginAction', disabled: true },
|
|
625
|
+
{ label: 'configurePluginAction', disabled: true },
|
|
626
|
+
]);
|
|
627
|
+
this._currentStepIndex$.next(1);
|
|
628
|
+
}
|
|
629
|
+
setSingleChoosePluginConfigurationSteps() {
|
|
630
|
+
this._steps$.next([
|
|
631
|
+
{ label: 'choosePluginConfiguration' },
|
|
632
|
+
{ label: 'choosePluginAction', disabled: true },
|
|
633
|
+
{ label: 'configurePluginAction', disabled: true },
|
|
634
|
+
]);
|
|
635
|
+
this._currentStepIndex$.next(0);
|
|
636
|
+
}
|
|
637
|
+
setChoosePluginActionSteps() {
|
|
638
|
+
combineLatest([
|
|
639
|
+
this._hasOneProcessLinkType$,
|
|
640
|
+
this.pluginStateService.selectedPluginConfiguration$,
|
|
641
|
+
])
|
|
642
|
+
.pipe(take(1))
|
|
643
|
+
.subscribe(([hasOneType, selectedConfiguration]) => {
|
|
644
|
+
if (hasOneType) {
|
|
645
|
+
this._steps$.next([
|
|
646
|
+
{ label: 'choosePluginConfiguration', secondaryLabel: selectedConfiguration.title },
|
|
647
|
+
{ label: 'choosePluginAction' },
|
|
648
|
+
{ label: 'configurePluginAction', disabled: true },
|
|
649
|
+
]);
|
|
650
|
+
this._currentStepIndex$.next(1);
|
|
651
|
+
this.buttonService.showNextButton();
|
|
652
|
+
this.buttonService.showBackButton();
|
|
653
|
+
this.buttonService.hideSaveButton();
|
|
654
|
+
this.buttonService.disableNextButton();
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
this._steps$.next([
|
|
658
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin' },
|
|
659
|
+
{ label: 'choosePluginConfiguration', secondaryLabel: selectedConfiguration.title },
|
|
660
|
+
{ label: 'choosePluginAction' },
|
|
661
|
+
{ label: 'configurePluginAction', disabled: true },
|
|
662
|
+
]);
|
|
663
|
+
this._currentStepIndex$.next(2);
|
|
664
|
+
this.buttonService.showNextButton();
|
|
665
|
+
this.buttonService.showBackButton();
|
|
666
|
+
this.buttonService.hideSaveButton();
|
|
667
|
+
this.buttonService.disableNextButton();
|
|
668
|
+
}
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
setConfigurePluginActionSteps() {
|
|
672
|
+
combineLatest([
|
|
673
|
+
this._hasOneProcessLinkType$,
|
|
674
|
+
this.pluginStateService.selectedPluginConfiguration$,
|
|
675
|
+
this.pluginStateService.selectedPluginFunction$,
|
|
676
|
+
])
|
|
677
|
+
.pipe(take(1))
|
|
678
|
+
.subscribe(([hasOneType, selectedConfiguration, selectedFunction]) => {
|
|
679
|
+
const selectedFunctionTranslation = this.pluginTranslateService.instant(selectedFunction.key, selectedConfiguration.pluginDefinition.key);
|
|
680
|
+
if (hasOneType) {
|
|
681
|
+
this._steps$.next([
|
|
682
|
+
{ label: 'choosePluginConfiguration', secondaryLabel: selectedConfiguration.title },
|
|
683
|
+
{ label: 'choosePluginAction', secondaryLabel: selectedFunctionTranslation },
|
|
684
|
+
{ label: 'configurePluginAction' },
|
|
685
|
+
]);
|
|
686
|
+
this._currentStepIndex$.next(2);
|
|
687
|
+
this.buttonService.hideNextButton();
|
|
688
|
+
this.buttonService.showSaveButton();
|
|
689
|
+
}
|
|
690
|
+
else {
|
|
691
|
+
this._steps$.next([
|
|
692
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin' },
|
|
693
|
+
{ label: 'choosePluginConfiguration', secondaryLabel: selectedConfiguration.title },
|
|
694
|
+
{ label: 'choosePluginAction', secondaryLabel: selectedFunctionTranslation },
|
|
695
|
+
{ label: 'configurePluginAction' },
|
|
696
|
+
]);
|
|
697
|
+
this._currentStepIndex$.next(3);
|
|
698
|
+
this.buttonService.hideNextButton();
|
|
699
|
+
this.buttonService.showSaveButton();
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
setURLSteps() {
|
|
704
|
+
this._steps$.next([
|
|
705
|
+
{ label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.url' },
|
|
706
|
+
{ label: 'selectURL' },
|
|
707
|
+
]);
|
|
708
|
+
this._currentStepIndex$.next(1);
|
|
709
|
+
}
|
|
710
|
+
setSingleURLStep() {
|
|
711
|
+
this._steps$.next([{ label: 'selectURL' }]);
|
|
712
|
+
this._currentStepIndex$.next(0);
|
|
713
|
+
}
|
|
714
|
+
disableSteps() {
|
|
715
|
+
this._disableSteps$.next(true);
|
|
716
|
+
}
|
|
717
|
+
enableSteps() {
|
|
718
|
+
this._disableSteps$.next(false);
|
|
719
|
+
}
|
|
720
|
+
setHasOneProcessLinkType(hasOne) {
|
|
721
|
+
this._hasOneProcessLinkType$.next(hasOne);
|
|
722
|
+
}
|
|
723
|
+
setProcessLinkTypeSteps(processLinkTypeId, hasOneOption) {
|
|
724
|
+
switch (processLinkTypeId) {
|
|
725
|
+
case 'form':
|
|
726
|
+
if (hasOneOption) {
|
|
727
|
+
this.setSingleFormStep();
|
|
728
|
+
this.buttonService.hideBackButton();
|
|
729
|
+
}
|
|
730
|
+
else {
|
|
731
|
+
this.setFormSteps();
|
|
732
|
+
this.buttonService.showBackButton();
|
|
733
|
+
}
|
|
734
|
+
this.buttonService.showSaveButton();
|
|
735
|
+
break;
|
|
736
|
+
case 'form-flow':
|
|
737
|
+
if (hasOneOption) {
|
|
738
|
+
this.setSingleFormFlowStep();
|
|
739
|
+
this.buttonService.hideSaveButton();
|
|
740
|
+
this.buttonService.hideBackButton();
|
|
741
|
+
}
|
|
742
|
+
else {
|
|
743
|
+
this.setFormFlowSteps();
|
|
744
|
+
this.buttonService.showSaveButton();
|
|
745
|
+
this.buttonService.showBackButton();
|
|
746
|
+
}
|
|
747
|
+
break;
|
|
748
|
+
case 'plugin':
|
|
749
|
+
if (hasOneOption) {
|
|
750
|
+
this.setSingleChoosePluginConfigurationSteps();
|
|
751
|
+
this.buttonService.hideBackButton();
|
|
752
|
+
this.buttonService.showNextButton();
|
|
753
|
+
}
|
|
754
|
+
else {
|
|
755
|
+
this.setChoosePluginConfigurationSteps();
|
|
756
|
+
this.buttonService.showBackButton();
|
|
757
|
+
this.buttonService.showNextButton();
|
|
758
|
+
}
|
|
759
|
+
break;
|
|
760
|
+
case 'url':
|
|
761
|
+
if (hasOneOption) {
|
|
762
|
+
this.setSingleURLStep();
|
|
763
|
+
this.buttonService.hideBackButton();
|
|
764
|
+
this.buttonService.showSaveButton();
|
|
765
|
+
}
|
|
766
|
+
else {
|
|
767
|
+
this.setURLSteps();
|
|
768
|
+
this.buttonService.showBackButton();
|
|
769
|
+
this.buttonService.showSaveButton();
|
|
770
|
+
}
|
|
771
|
+
break;
|
|
772
|
+
case 'ui-component':
|
|
773
|
+
this.setUIComponentStep();
|
|
774
|
+
this.buttonService.showBackButton();
|
|
775
|
+
this.buttonService.showSaveButton();
|
|
776
|
+
break;
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
setChoiceSteps() {
|
|
780
|
+
this._steps$.next([
|
|
781
|
+
{ label: 'chooseProcessLinkType' },
|
|
782
|
+
{ label: 'empty', disabled: true },
|
|
783
|
+
{ label: 'empty', disabled: true },
|
|
784
|
+
]);
|
|
785
|
+
this._currentStepIndex$.next(0);
|
|
786
|
+
}
|
|
787
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkStepService, deps: [{ token: i2$1.TranslateService }, { token: ProcessLinkButtonService }, { token: PluginStateService }, { token: i1$1.PluginTranslationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
788
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkStepService, providedIn: 'root' }); }
|
|
789
|
+
}
|
|
790
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkStepService, decorators: [{
|
|
791
|
+
type: Injectable,
|
|
792
|
+
args: [{
|
|
793
|
+
providedIn: 'root',
|
|
794
|
+
}]
|
|
795
|
+
}], ctorParameters: () => [{ type: i2$1.TranslateService }, { type: ProcessLinkButtonService }, { type: PluginStateService }, { type: i1$1.PluginTranslationService }] });
|
|
796
|
+
|
|
797
|
+
/*
|
|
798
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
799
|
+
*
|
|
800
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
801
|
+
* you may not use this file except in compliance with the License.
|
|
802
|
+
* You may obtain a copy of the License at
|
|
803
|
+
*
|
|
804
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
805
|
+
*
|
|
806
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
807
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
808
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
809
|
+
* See the License for the specific language governing permissions and
|
|
810
|
+
* limitations under the License.
|
|
811
|
+
*/
|
|
812
|
+
class ProcessLinkStateService {
|
|
813
|
+
get processLinkUpdateEvents$() {
|
|
814
|
+
return this._processLinkUpdateEvents$.asObservable();
|
|
815
|
+
}
|
|
816
|
+
get processLinkCreateEvents$() {
|
|
817
|
+
return this._processLinkCreateEvents$.asObservable();
|
|
818
|
+
}
|
|
819
|
+
get processLinkDeleteEvents$() {
|
|
820
|
+
return this._processLinkDeleteEvents$.asObservable();
|
|
821
|
+
}
|
|
822
|
+
get showModal$() {
|
|
823
|
+
return this._showModal$.asObservable();
|
|
824
|
+
}
|
|
825
|
+
get elementName$() {
|
|
826
|
+
return this._elementName$.asObservable();
|
|
827
|
+
}
|
|
828
|
+
get availableProcessLinkTypes$() {
|
|
829
|
+
return this._availableProcessLinkTypes$.pipe(map$1(types => (!this.formCustomComponentConfig
|
|
830
|
+
? types.map(type => ({
|
|
831
|
+
...type,
|
|
832
|
+
enabled: type.processLinkType === 'ui-component' ? false : type.enabled,
|
|
833
|
+
}))
|
|
834
|
+
: types).filter(type => type.processLinkType !== 'url')));
|
|
835
|
+
}
|
|
836
|
+
get hideProgressIndicator$() {
|
|
837
|
+
return this._availableProcessLinkTypes$
|
|
838
|
+
.asObservable()
|
|
839
|
+
.pipe(map$1(availableTypes => Array.isArray(availableTypes) &&
|
|
840
|
+
availableTypes.length === 1 &&
|
|
841
|
+
(availableTypes[0]?.processLinkType === 'form' ||
|
|
842
|
+
availableTypes[0]?.processLinkType === 'form-flow')));
|
|
843
|
+
}
|
|
844
|
+
get selectedProcessLinkTypeId$() {
|
|
845
|
+
return this._selectedProcessLinkTypeId$.asObservable();
|
|
846
|
+
}
|
|
847
|
+
get saving$() {
|
|
848
|
+
return this._saving$.asObservable();
|
|
849
|
+
}
|
|
850
|
+
get modalParams$() {
|
|
851
|
+
return this._modalParams$.asObservable();
|
|
852
|
+
}
|
|
853
|
+
get selectedProcessLink$() {
|
|
854
|
+
return this._selectedProcessLink$.asObservable();
|
|
855
|
+
}
|
|
856
|
+
get typeOfSelectedProcessLink$() {
|
|
857
|
+
return this.selectedProcessLink$.pipe(map$1(processLink => processLink?.processLinkType || ''));
|
|
858
|
+
}
|
|
859
|
+
get processLinkEditMode() {
|
|
860
|
+
return this._processLinkEditMode$.getValue();
|
|
861
|
+
}
|
|
862
|
+
get viewModelEnabled$() {
|
|
863
|
+
return this._viewModelEnabled$.asObservable();
|
|
864
|
+
}
|
|
865
|
+
get url$() {
|
|
866
|
+
return this._url$.asObservable();
|
|
867
|
+
}
|
|
868
|
+
constructor(processLinkStepService, buttonService, pluginStateService, formCustomComponentConfig) {
|
|
869
|
+
this.processLinkStepService = processLinkStepService;
|
|
870
|
+
this.buttonService = buttonService;
|
|
871
|
+
this.pluginStateService = pluginStateService;
|
|
872
|
+
this.formCustomComponentConfig = formCustomComponentConfig;
|
|
873
|
+
this._showModal$ = new BehaviorSubject(false);
|
|
874
|
+
this._availableProcessLinkTypes$ = new BehaviorSubject([]);
|
|
875
|
+
this._elementName$ = new BehaviorSubject('');
|
|
876
|
+
this._selectedProcessLinkTypeId$ = new BehaviorSubject('');
|
|
877
|
+
this._viewModelEnabled$ = new BehaviorSubject(false);
|
|
878
|
+
this._url$ = new BehaviorSubject('');
|
|
879
|
+
this._saving$ = new BehaviorSubject(false);
|
|
880
|
+
this._modalParams$ = new BehaviorSubject(undefined);
|
|
881
|
+
this._selectedProcessLink$ = new BehaviorSubject(undefined);
|
|
882
|
+
this._processLinkEditMode$ = new BehaviorSubject(ProcessLinkEditMode.SAVE_TO_BACKEND);
|
|
883
|
+
this._processLinkUpdateEvents$ = new Subject();
|
|
884
|
+
this._processLinkCreateEvents$ = new Subject();
|
|
885
|
+
this._processLinkDeleteEvents$ = new Subject();
|
|
886
|
+
this.openAvailableProcessLinkTypesSubscription();
|
|
887
|
+
}
|
|
888
|
+
ngOnDestroy() {
|
|
889
|
+
this._availableProcessLinkTypesSubscription?.unsubscribe();
|
|
890
|
+
}
|
|
891
|
+
setAvailableProcessLinkTypes(processLinkTypes) {
|
|
892
|
+
const hasOneOption = processLinkTypes.length === 1;
|
|
893
|
+
this._availableProcessLinkTypes$.next(processLinkTypes);
|
|
894
|
+
this.processLinkStepService.setHasOneProcessLinkType(hasOneOption);
|
|
895
|
+
if (hasOneOption) {
|
|
896
|
+
this.selectProcessLinkType(processLinkTypes[0].processLinkType, hasOneOption);
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
setElementName(name) {
|
|
900
|
+
this._elementName$.next(name);
|
|
901
|
+
}
|
|
902
|
+
showModal() {
|
|
903
|
+
this._showModal$.next(true);
|
|
904
|
+
}
|
|
905
|
+
closeModal() {
|
|
906
|
+
this._showModal$.next(false);
|
|
907
|
+
setTimeout(() => {
|
|
908
|
+
this.reset();
|
|
909
|
+
}, 240);
|
|
910
|
+
}
|
|
911
|
+
selectProcessLinkType(processLinkTypeId, hasOneOption) {
|
|
912
|
+
this._selectedProcessLinkTypeId$.next(processLinkTypeId);
|
|
913
|
+
this.processLinkStepService.setProcessLinkTypeSteps(processLinkTypeId, hasOneOption);
|
|
914
|
+
}
|
|
915
|
+
setViewModelEnabled(viewModelEnabled) {
|
|
916
|
+
this._viewModelEnabled$.next(viewModelEnabled);
|
|
917
|
+
}
|
|
918
|
+
clearSelectedProcessLinkType() {
|
|
919
|
+
this._selectedProcessLinkTypeId$.next('');
|
|
920
|
+
}
|
|
921
|
+
startSaving() {
|
|
922
|
+
this._saving$.next(true);
|
|
923
|
+
this.processLinkStepService.disableSteps();
|
|
924
|
+
}
|
|
925
|
+
stopSaving() {
|
|
926
|
+
this._saving$.next(false);
|
|
927
|
+
this.processLinkStepService.enableSteps();
|
|
928
|
+
}
|
|
929
|
+
setInitial() {
|
|
930
|
+
const availableTypes = this._availableProcessLinkTypes$.getValue();
|
|
931
|
+
this.buttonService.resetButtons();
|
|
932
|
+
this.processLinkStepService.setInitialSteps(availableTypes);
|
|
933
|
+
}
|
|
934
|
+
setModalParams(params) {
|
|
935
|
+
this._modalParams$.next(params);
|
|
936
|
+
}
|
|
937
|
+
selectProcessLink(processLink) {
|
|
938
|
+
if (!processLink)
|
|
939
|
+
return;
|
|
940
|
+
this._selectedProcessLink$.next(processLink);
|
|
941
|
+
this.pluginStateService.selectProcessLink(processLink);
|
|
942
|
+
this.setViewModelEnabled(processLink.viewModelEnabled ?? false);
|
|
943
|
+
this._url$.next(processLink.url ?? '');
|
|
944
|
+
}
|
|
945
|
+
deselectProcessLink() {
|
|
946
|
+
this._selectedProcessLink$.next(undefined);
|
|
947
|
+
this.pluginStateService.deselectProcessLink();
|
|
948
|
+
}
|
|
949
|
+
setEditMode(editMode) {
|
|
950
|
+
this._processLinkEditMode$.next(editMode);
|
|
951
|
+
}
|
|
952
|
+
sendProcessLinkUpdateEvent(event) {
|
|
953
|
+
this._processLinkUpdateEvents$.next(event);
|
|
954
|
+
}
|
|
955
|
+
sendProcessLinkCreateEvent(event) {
|
|
956
|
+
this._processLinkCreateEvents$.next(event);
|
|
957
|
+
}
|
|
958
|
+
sendProcessLinkDeleteEvent(event) {
|
|
959
|
+
this._processLinkDeleteEvents$.next(event);
|
|
960
|
+
}
|
|
961
|
+
openAvailableProcessLinkTypesSubscription() {
|
|
962
|
+
this._availableProcessLinkTypesSubscription = this._availableProcessLinkTypes$.subscribe(availableProcessLinkTypes => {
|
|
963
|
+
if (availableProcessLinkTypes.length > 1) {
|
|
964
|
+
this.setInitial();
|
|
965
|
+
}
|
|
966
|
+
});
|
|
967
|
+
}
|
|
968
|
+
reset() {
|
|
969
|
+
this.setAvailableProcessLinkTypes([]);
|
|
970
|
+
this.processLinkStepService.reset();
|
|
971
|
+
this.stopSaving();
|
|
972
|
+
this.buttonService.resetButtons();
|
|
973
|
+
this.clearSelectedProcessLinkType();
|
|
974
|
+
this.deselectProcessLink();
|
|
975
|
+
}
|
|
976
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkStateService, deps: [{ token: ProcessLinkStepService }, { token: ProcessLinkButtonService }, { token: PluginStateService }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
977
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkStateService, providedIn: 'root' }); }
|
|
978
|
+
}
|
|
979
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkStateService, decorators: [{
|
|
980
|
+
type: Injectable,
|
|
981
|
+
args: [{
|
|
982
|
+
providedIn: 'root',
|
|
983
|
+
}]
|
|
984
|
+
}], ctorParameters: () => [{ type: ProcessLinkStepService }, { type: ProcessLinkButtonService }, { type: PluginStateService }, { type: undefined, decorators: [{
|
|
985
|
+
type: Optional
|
|
986
|
+
}, {
|
|
987
|
+
type: Inject,
|
|
988
|
+
args: [FORM_CUSTOM_COMPONENT_TOKEN]
|
|
989
|
+
}] }] });
|
|
990
|
+
|
|
991
|
+
/*
|
|
992
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
993
|
+
*
|
|
994
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
995
|
+
* you may not use this file except in compliance with the License.
|
|
996
|
+
* You may obtain a copy of the License at
|
|
997
|
+
*
|
|
998
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
999
|
+
*
|
|
1000
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1001
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1002
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1003
|
+
* See the License for the specific language governing permissions and
|
|
1004
|
+
* limitations under the License.
|
|
1005
|
+
*/
|
|
1006
|
+
class FormFlowComponentService {
|
|
1007
|
+
get supportedComponents$() {
|
|
1008
|
+
return this._supportedComponents$.pipe(filter(components => !!components));
|
|
1009
|
+
}
|
|
1010
|
+
constructor(supportedCustomComponents) {
|
|
1011
|
+
this.supportedCustomComponents = supportedCustomComponents;
|
|
1012
|
+
this._supportedComponents$ = new BehaviorSubject(null);
|
|
1013
|
+
this.setSupportedComponents(supportedCustomComponents);
|
|
1014
|
+
}
|
|
1015
|
+
setSupportedComponents(supportedComponents) {
|
|
1016
|
+
this._supportedComponents$.next(supportedComponents);
|
|
1017
|
+
}
|
|
1018
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowComponentService, deps: [{ token: FORM_FLOW_COMPONENT_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1019
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowComponentService, providedIn: 'root' }); }
|
|
1020
|
+
}
|
|
1021
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowComponentService, decorators: [{
|
|
1022
|
+
type: Injectable,
|
|
1023
|
+
args: [{
|
|
1024
|
+
providedIn: 'root',
|
|
1025
|
+
}]
|
|
1026
|
+
}], ctorParameters: () => [{ type: Array, decorators: [{
|
|
1027
|
+
type: Inject,
|
|
1028
|
+
args: [FORM_FLOW_COMPONENT_TOKEN]
|
|
1029
|
+
}] }] });
|
|
1030
|
+
|
|
1031
|
+
/*
|
|
1032
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1033
|
+
*
|
|
1034
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1035
|
+
* you may not use this file except in compliance with the License.
|
|
1036
|
+
* You may obtain a copy of the License at
|
|
1037
|
+
*
|
|
1038
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1039
|
+
*
|
|
1040
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1041
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1042
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1043
|
+
* See the License for the specific language governing permissions and
|
|
1044
|
+
* limitations under the License.
|
|
1045
|
+
*/
|
|
1046
|
+
class UrlResolverService {
|
|
1047
|
+
resolveUrlVariables(url, variables) {
|
|
1048
|
+
let resolvingUrl = url;
|
|
1049
|
+
Object.keys(variables).forEach(key => {
|
|
1050
|
+
let value = variables[key];
|
|
1051
|
+
resolvingUrl = resolvingUrl.replace('<' + key + '>', value);
|
|
1052
|
+
});
|
|
1053
|
+
return resolvingUrl;
|
|
1054
|
+
}
|
|
1055
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: UrlResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1056
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: UrlResolverService }); }
|
|
1057
|
+
}
|
|
1058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: UrlResolverService, decorators: [{
|
|
1059
|
+
type: Injectable
|
|
1060
|
+
}] });
|
|
1061
|
+
|
|
1062
|
+
class UrlValidatorService {
|
|
1063
|
+
constructor(urlResolverService) {
|
|
1064
|
+
this.urlResolverService = urlResolverService;
|
|
1065
|
+
}
|
|
1066
|
+
urlValidator(variables) {
|
|
1067
|
+
return (control) => {
|
|
1068
|
+
const url = this.urlResolverService.resolveUrlVariables(control.value, variables);
|
|
1069
|
+
try {
|
|
1070
|
+
new URL(url);
|
|
1071
|
+
return null;
|
|
1072
|
+
}
|
|
1073
|
+
catch (_) {
|
|
1074
|
+
return { invalidUrl: url };
|
|
1075
|
+
}
|
|
1076
|
+
};
|
|
1077
|
+
}
|
|
1078
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: UrlValidatorService, deps: [{ token: UrlResolverService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1079
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: UrlValidatorService }); }
|
|
1080
|
+
}
|
|
1081
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: UrlValidatorService, decorators: [{
|
|
1082
|
+
type: Injectable
|
|
1083
|
+
}], ctorParameters: () => [{ type: UrlResolverService }] });
|
|
1084
|
+
|
|
1085
|
+
/*
|
|
1086
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1087
|
+
*
|
|
1088
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1089
|
+
* you may not use this file except in compliance with the License.
|
|
1090
|
+
* You may obtain a copy of the License at
|
|
1091
|
+
*
|
|
1092
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1093
|
+
*
|
|
1094
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1095
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1096
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1097
|
+
* See the License for the specific language governing permissions and
|
|
1098
|
+
* limitations under the License.
|
|
1099
|
+
*/
|
|
1100
|
+
|
|
1101
|
+
/*
|
|
1102
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1103
|
+
*
|
|
1104
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1105
|
+
* you may not use this file except in compliance with the License.
|
|
1106
|
+
* You may obtain a copy of the License at
|
|
1107
|
+
*
|
|
1108
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1109
|
+
*
|
|
1110
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1111
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1112
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1113
|
+
* See the License for the specific language governing permissions and
|
|
1114
|
+
* limitations under the License.
|
|
1115
|
+
*/
|
|
1116
|
+
class SelectPluginConfigurationComponent {
|
|
1117
|
+
constructor(pluginManagementService, pluginStateService, pluginService, stateService, buttonService, stepService) {
|
|
1118
|
+
this.pluginManagementService = pluginManagementService;
|
|
1119
|
+
this.pluginStateService = pluginStateService;
|
|
1120
|
+
this.pluginService = pluginService;
|
|
1121
|
+
this.stateService = stateService;
|
|
1122
|
+
this.buttonService = buttonService;
|
|
1123
|
+
this.stepService = stepService;
|
|
1124
|
+
this.pluginConfigurations$ = this.stateService.modalParams$.pipe(switchMap$1(modalData => combineLatest([
|
|
1125
|
+
modalData?.element?.type
|
|
1126
|
+
? this.pluginManagementService.getAllPluginConfigurationsWithLogos(modalData?.element?.activityListenerType)
|
|
1127
|
+
: of(undefined),
|
|
1128
|
+
this.pluginService.availablePluginIds$,
|
|
1129
|
+
]).pipe(map(([pluginConfigurations, availablePluginIds]) => pluginConfigurations?.filter(configuration => availablePluginIds.includes(configuration.pluginDefinition.key))))));
|
|
1130
|
+
this.selectedPluginConfiguration$ = this.pluginStateService.selectedPluginConfiguration$;
|
|
1131
|
+
this._subscriptions = new Subscription();
|
|
1132
|
+
}
|
|
1133
|
+
ngOnInit() {
|
|
1134
|
+
this.openBackButtonSubscription();
|
|
1135
|
+
this.openNextButtonSubscription();
|
|
1136
|
+
}
|
|
1137
|
+
ngOnDestroy() {
|
|
1138
|
+
this._subscriptions.unsubscribe();
|
|
1139
|
+
}
|
|
1140
|
+
selected(event) {
|
|
1141
|
+
this.selectConfiguration(event.value);
|
|
1142
|
+
this.buttonService.enableNextButton();
|
|
1143
|
+
}
|
|
1144
|
+
selectConfiguration(configuration) {
|
|
1145
|
+
this.pluginStateService.selectPluginDefinition({ key: configuration.pluginDefinition.key });
|
|
1146
|
+
this.pluginStateService.selectPluginConfiguration(configuration);
|
|
1147
|
+
}
|
|
1148
|
+
openBackButtonSubscription() {
|
|
1149
|
+
this._subscriptions.add(this.buttonService.backButtonClick$.subscribe(() => {
|
|
1150
|
+
this.stateService.setInitial();
|
|
1151
|
+
}));
|
|
1152
|
+
}
|
|
1153
|
+
openNextButtonSubscription() {
|
|
1154
|
+
this._subscriptions.add(this.buttonService.nextButtonClick$.subscribe(() => {
|
|
1155
|
+
this.stepService.setChoosePluginActionSteps();
|
|
1156
|
+
}));
|
|
1157
|
+
}
|
|
1158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectPluginConfigurationComponent, deps: [{ token: i1$1.PluginManagementService }, { token: PluginStateService }, { token: i1$1.PluginService }, { token: ProcessLinkStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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=\"pluginConfigurations$ | async as pluginConfigurations; else loading\">\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.choosePluginConfigurationDescription' | 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 'pluginManagement.labels.configurationName' | 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 pluginConfiguration of pluginConfigurations\"\n [value]=\"pluginConfiguration\"\n >\n <cds-list-column>\n <div *ngIf=\"pluginConfiguration.pluginLogoBase64\">\n <img\n [src]=\"pluginConfiguration.pluginLogoBase64\"\n [title]=\"'title' | pluginTranslate: pluginConfiguration.pluginDefinition.key | async\"\n class=\"plugin-configuration-logo\"\n /></div\n ></cds-list-column>\n <cds-list-column>{{ pluginConfiguration.title }}</cds-list-column>\n <cds-list-column>\n {{ 'description' | pluginTranslate: pluginConfiguration.pluginDefinition.key | async }}\n </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}.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}.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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.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.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1$1.PluginTranslatePipe, name: "pluginTranslate" }] }); }
|
|
1160
|
+
}
|
|
1161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectPluginConfigurationComponent, decorators: [{
|
|
1162
|
+
type: Component,
|
|
1163
|
+
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=\"pluginConfigurations$ | async as pluginConfigurations; else loading\">\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.choosePluginConfigurationDescription' | 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 'pluginManagement.labels.configurationName' | 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 pluginConfiguration of pluginConfigurations\"\n [value]=\"pluginConfiguration\"\n >\n <cds-list-column>\n <div *ngIf=\"pluginConfiguration.pluginLogoBase64\">\n <img\n [src]=\"pluginConfiguration.pluginLogoBase64\"\n [title]=\"'title' | pluginTranslate: pluginConfiguration.pluginDefinition.key | async\"\n class=\"plugin-configuration-logo\"\n /></div\n ></cds-list-column>\n <cds-list-column>{{ pluginConfiguration.title }}</cds-list-column>\n <cds-list-column>\n {{ 'description' | pluginTranslate: pluginConfiguration.pluginDefinition.key | async }}\n </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}.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}.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"] }]
|
|
1164
|
+
}], ctorParameters: () => [{ type: i1$1.PluginManagementService }, { type: PluginStateService }, { type: i1$1.PluginService }, { type: ProcessLinkStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }] });
|
|
1165
|
+
|
|
1166
|
+
/*
|
|
1167
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1168
|
+
*
|
|
1169
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1170
|
+
* you may not use this file except in compliance with the License.
|
|
1171
|
+
* You may obtain a copy of the License at
|
|
1172
|
+
*
|
|
1173
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1174
|
+
*
|
|
1175
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1176
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1177
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1178
|
+
* See the License for the specific language governing permissions and
|
|
1179
|
+
* limitations under the License.
|
|
1180
|
+
*/
|
|
1181
|
+
class SelectPluginActionComponent {
|
|
1182
|
+
constructor(buttonService, pluginManagementService, stateService, stepService, processLinkStateService) {
|
|
1183
|
+
this.buttonService = buttonService;
|
|
1184
|
+
this.pluginManagementService = pluginManagementService;
|
|
1185
|
+
this.stateService = stateService;
|
|
1186
|
+
this.stepService = stepService;
|
|
1187
|
+
this.processLinkStateService = processLinkStateService;
|
|
1188
|
+
this.pluginFunctions$ = combineLatest([
|
|
1189
|
+
this.stateService.selectedPluginDefinition$,
|
|
1190
|
+
this.processLinkStateService.modalParams$,
|
|
1191
|
+
]).pipe(switchMap$1(([selectedDefinition, modalParams]) => selectedDefinition
|
|
1192
|
+
? this.pluginManagementService.getPluginFunctions(selectedDefinition.key, modalParams.element.activityListenerType)
|
|
1193
|
+
: of(undefined)));
|
|
1194
|
+
this.selectedPluginDefinition$ = this.stateService.selectedPluginDefinition$;
|
|
1195
|
+
this.selectedPluginFunction$ = this.stateService.selectedPluginFunction$;
|
|
1196
|
+
this._subscriptions = new Subscription();
|
|
1197
|
+
}
|
|
1198
|
+
ngOnInit() {
|
|
1199
|
+
this.openBackButtonSubscription();
|
|
1200
|
+
this.openNextButtonSubscription();
|
|
1201
|
+
}
|
|
1202
|
+
ngOnDestroy() {
|
|
1203
|
+
this._subscriptions.unsubscribe();
|
|
1204
|
+
}
|
|
1205
|
+
selectFunction(pluginFunction) {
|
|
1206
|
+
this.stateService.selectPluginFunction(pluginFunction);
|
|
1207
|
+
}
|
|
1208
|
+
selected(event) {
|
|
1209
|
+
this.selectFunction(JSON.parse(event.value));
|
|
1210
|
+
this.buttonService.enableNextButton();
|
|
1211
|
+
}
|
|
1212
|
+
stringify(object) {
|
|
1213
|
+
return JSON.stringify(object);
|
|
1214
|
+
}
|
|
1215
|
+
openBackButtonSubscription() {
|
|
1216
|
+
this.buttonService.backButtonClick$
|
|
1217
|
+
.pipe(switchMap$1(() => this.stepService.hasOneProcessLinkType$), take(1))
|
|
1218
|
+
.subscribe((hasOneOption) => {
|
|
1219
|
+
this.stepService.setProcessLinkTypeSteps('plugin', hasOneOption);
|
|
1220
|
+
});
|
|
1221
|
+
}
|
|
1222
|
+
openNextButtonSubscription() {
|
|
1223
|
+
this._subscriptions.add(this.buttonService.nextButtonClick$.subscribe(() => {
|
|
1224
|
+
this.stepService.setConfigurePluginActionSteps();
|
|
1225
|
+
}));
|
|
1226
|
+
}
|
|
1227
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectPluginActionComponent, deps: [{ token: ProcessLinkButtonService }, { token: i1$1.PluginManagementService }, { token: PluginStateService }, { token: ProcessLinkStepService }, { token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1228
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1$1.PluginTranslatePipe, name: "pluginTranslate" }] }); }
|
|
1229
|
+
}
|
|
1230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectPluginActionComponent, decorators: [{
|
|
1231
|
+
type: Component,
|
|
1232
|
+
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"] }]
|
|
1233
|
+
}], ctorParameters: () => [{ type: ProcessLinkButtonService }, { type: i1$1.PluginManagementService }, { type: PluginStateService }, { type: ProcessLinkStepService }, { type: ProcessLinkStateService }] });
|
|
1234
|
+
|
|
1235
|
+
/*
|
|
1236
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1237
|
+
*
|
|
1238
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1239
|
+
* you may not use this file except in compliance with the License.
|
|
1240
|
+
* You may obtain a copy of the License at
|
|
1241
|
+
*
|
|
1242
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1243
|
+
*
|
|
1244
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1245
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1246
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1247
|
+
* See the License for the specific language governing permissions and
|
|
1248
|
+
* limitations under the License.
|
|
1249
|
+
*/
|
|
1250
|
+
class ImportPluginConfigurationComponent {
|
|
1251
|
+
set pluginActionKey(value) {
|
|
1252
|
+
this.importPluginForm.reset();
|
|
1253
|
+
this.fetchCompatiblePluginProcessLinks(value);
|
|
1254
|
+
}
|
|
1255
|
+
get process() {
|
|
1256
|
+
return this.importPluginForm.get('process');
|
|
1257
|
+
}
|
|
1258
|
+
get version() {
|
|
1259
|
+
return this.importPluginForm.get('version');
|
|
1260
|
+
}
|
|
1261
|
+
get activity() {
|
|
1262
|
+
return this.importPluginForm.get('activity');
|
|
1263
|
+
}
|
|
1264
|
+
constructor(formBuilder, processLinkService, iconService, cdsThemeService) {
|
|
1265
|
+
this.formBuilder = formBuilder;
|
|
1266
|
+
this.processLinkService = processLinkService;
|
|
1267
|
+
this.iconService = iconService;
|
|
1268
|
+
this.cdsThemeService = cdsThemeService;
|
|
1269
|
+
this.configurationEvent = new EventEmitter();
|
|
1270
|
+
this.open$ = new Subject();
|
|
1271
|
+
this._compatiblePluginProcessLinksSubject$ = new BehaviorSubject([]);
|
|
1272
|
+
this.compatiblePluginProcessLinks$ = this._compatiblePluginProcessLinksSubject$.asObservable();
|
|
1273
|
+
this.importPluginForm = this.formBuilder.group({
|
|
1274
|
+
process: new FormControl('', Validators.required),
|
|
1275
|
+
version: new FormControl('', Validators.required),
|
|
1276
|
+
activity: new FormControl('', Validators.required),
|
|
1277
|
+
});
|
|
1278
|
+
this.processListItems$ = combineLatest([
|
|
1279
|
+
this._compatiblePluginProcessLinksSubject$,
|
|
1280
|
+
this.process.valueChanges.pipe(startWith('')),
|
|
1281
|
+
]).pipe(map$1(([compatibleProcessLinks, processValue]) => compatibleProcessLinks?.map(compatibleProcessLink => ({
|
|
1282
|
+
content: compatibleProcessLink.processDefinitionKey,
|
|
1283
|
+
selected: processValue === compatibleProcessLink.processDefinitionKey,
|
|
1284
|
+
})) || []));
|
|
1285
|
+
this.versionListItems$ = combineLatest([
|
|
1286
|
+
this._compatiblePluginProcessLinksSubject$,
|
|
1287
|
+
this.process.valueChanges.pipe(startWith('')),
|
|
1288
|
+
this.version.valueChanges.pipe(startWith('')),
|
|
1289
|
+
]).pipe(map$1(([compatibleProcessLinks, processValue, versionValue]) => !processValue
|
|
1290
|
+
? []
|
|
1291
|
+
: compatibleProcessLinks
|
|
1292
|
+
.find(compatibleLinks => compatibleLinks.processDefinitionKey === processValue)
|
|
1293
|
+
?.versions.sort((a, b) => Number(b.version) - Number(a.version))
|
|
1294
|
+
.map(versionItem => ({
|
|
1295
|
+
content: versionItem.version,
|
|
1296
|
+
selected: versionItem.version === versionValue,
|
|
1297
|
+
})) || []));
|
|
1298
|
+
this.activityListItems$ = combineLatest([
|
|
1299
|
+
this._compatiblePluginProcessLinksSubject$,
|
|
1300
|
+
this.process.valueChanges.pipe(startWith('')),
|
|
1301
|
+
this.version.valueChanges.pipe(startWith('')),
|
|
1302
|
+
this.activity.valueChanges.pipe(startWith('')),
|
|
1303
|
+
]).pipe(map$1(([compatibleProcessLinks, processValue, versionValue, activityValue]) => !processValue || !versionValue
|
|
1304
|
+
? []
|
|
1305
|
+
: compatibleProcessLinks
|
|
1306
|
+
.find(compatibleLinks => compatibleLinks.processDefinitionKey === processValue)
|
|
1307
|
+
.versions.find(versionItem => versionItem.version === versionValue)
|
|
1308
|
+
.processLinks.map(processLinkItem => ({
|
|
1309
|
+
content: processLinkItem.activityId,
|
|
1310
|
+
selected: processLinkItem.activityId === activityValue,
|
|
1311
|
+
}))));
|
|
1312
|
+
this.toggletipTheme$ = this.cdsThemeService.toggletipTheme$;
|
|
1313
|
+
this.iconService.register(Upload16);
|
|
1314
|
+
}
|
|
1315
|
+
onSubmit() {
|
|
1316
|
+
this.configurationEvent.emit(this._compatiblePluginProcessLinksSubject$
|
|
1317
|
+
.getValue()
|
|
1318
|
+
.find(compatiblePluginProcessLinks => compatiblePluginProcessLinks.processDefinitionKey === this.process.value)
|
|
1319
|
+
.versions.find(versionItem => versionItem.version === this.version.value)
|
|
1320
|
+
.processLinks.find(processLinkItem => processLinkItem.activityId === this.activity.value)
|
|
1321
|
+
.actionProperties);
|
|
1322
|
+
// needed to reliably trigger toggle tip closure
|
|
1323
|
+
this.open$.next(true);
|
|
1324
|
+
setTimeout(() => this.open$.next(false));
|
|
1325
|
+
this.importPluginForm.reset();
|
|
1326
|
+
}
|
|
1327
|
+
fetchCompatiblePluginProcessLinks(pluginActionKey) {
|
|
1328
|
+
this.processLinkService
|
|
1329
|
+
.getCompatiblePluginProcessLinks(pluginActionKey)
|
|
1330
|
+
.subscribe(res => this._compatiblePluginProcessLinksSubject$.next(res));
|
|
1331
|
+
}
|
|
1332
|
+
processSelected(event) {
|
|
1333
|
+
this.process.setValue(event?.item?.content);
|
|
1334
|
+
this.version.setValue('');
|
|
1335
|
+
this.activity.setValue('');
|
|
1336
|
+
}
|
|
1337
|
+
versionSelected(event) {
|
|
1338
|
+
this.version.setValue(event?.item?.content);
|
|
1339
|
+
this.activity.setValue('');
|
|
1340
|
+
}
|
|
1341
|
+
activitySelected(event) {
|
|
1342
|
+
this.activity.setValue(event?.item?.content);
|
|
1343
|
+
}
|
|
1344
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ImportPluginConfigurationComponent, deps: [{ token: i1$2.FormBuilder }, { token: ProcessLinkService }, { token: i4.IconService }, { token: i2$2.CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1345
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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 [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"process-link-configuration-select\"\n >\n <cds-dropdown\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 [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 [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 [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$2.RemoveClassnamesDirective, selector: "[removeClassnames]", inputs: ["removeClassnames"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
1346
|
+
}
|
|
1347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ImportPluginConfigurationComponent, decorators: [{
|
|
1348
|
+
type: Component,
|
|
1349
|
+
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 [attr.data-carbon-theme]=\"toggletipTheme$ | async\"\n class=\"process-link-configuration-select\"\n >\n <cds-dropdown\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 [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 [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 [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"] }]
|
|
1350
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: ProcessLinkService }, { type: i4.IconService }, { type: i2$2.CdsThemeService }], propDecorators: { pluginActionKey: [{
|
|
1351
|
+
type: Input
|
|
1352
|
+
}], configurationEvent: [{
|
|
1353
|
+
type: Output
|
|
1354
|
+
}] } });
|
|
1355
|
+
|
|
1356
|
+
/*
|
|
1357
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1358
|
+
*
|
|
1359
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1360
|
+
* you may not use this file except in compliance with the License.
|
|
1361
|
+
* You may obtain a copy of the License at
|
|
1362
|
+
*
|
|
1363
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1364
|
+
*
|
|
1365
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1366
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1367
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1368
|
+
* See the License for the specific language governing permissions and
|
|
1369
|
+
* limitations under the License.
|
|
1370
|
+
*/
|
|
1371
|
+
class PluginActionConfigurationComponent {
|
|
1372
|
+
constructor(stateService, pluginStateService, buttonService, stepService, processLinkService) {
|
|
1373
|
+
this.stateService = stateService;
|
|
1374
|
+
this.pluginStateService = pluginStateService;
|
|
1375
|
+
this.buttonService = buttonService;
|
|
1376
|
+
this.stepService = stepService;
|
|
1377
|
+
this.processLinkService = processLinkService;
|
|
1378
|
+
this.valid = new EventEmitter();
|
|
1379
|
+
this.configuration = new EventEmitter();
|
|
1380
|
+
this.pluginDefinitionKey$ = this.pluginStateService.pluginDefinitionKey$;
|
|
1381
|
+
this.functionKey$ = this.pluginStateService.functionKey$;
|
|
1382
|
+
this.save$ = this.pluginStateService.save$;
|
|
1383
|
+
this.saving$ = this.stateService.saving$;
|
|
1384
|
+
this._prefillConfigurationSubject$ = new BehaviorSubject(null);
|
|
1385
|
+
this._prefillConfiguration$ = this.stateService.selectedProcessLink$.pipe(map(processLink => (processLink ? processLink?.actionProperties : undefined)));
|
|
1386
|
+
this.prefillConfiguration$ = combineLatest([
|
|
1387
|
+
this._prefillConfigurationSubject$,
|
|
1388
|
+
this._prefillConfiguration$,
|
|
1389
|
+
]).pipe(map(([prefillConfigurationSubjectValue, prefillConfiguration]) => prefillConfigurationSubjectValue || prefillConfiguration));
|
|
1390
|
+
this._subscriptions = new Subscription();
|
|
1391
|
+
}
|
|
1392
|
+
ngOnInit() {
|
|
1393
|
+
this.openBackButtonSubscription();
|
|
1394
|
+
this.openSaveButtonSubscription();
|
|
1395
|
+
}
|
|
1396
|
+
ngOnDestroy() {
|
|
1397
|
+
this._subscriptions.unsubscribe();
|
|
1398
|
+
}
|
|
1399
|
+
onValid(valid) {
|
|
1400
|
+
if (valid)
|
|
1401
|
+
this.buttonService.enableSaveButton();
|
|
1402
|
+
else
|
|
1403
|
+
this.buttonService.disableSaveButton();
|
|
1404
|
+
}
|
|
1405
|
+
onConfiguration(configuration) {
|
|
1406
|
+
this.stateService.startSaving();
|
|
1407
|
+
this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {
|
|
1408
|
+
if (selectedProcessLink) {
|
|
1409
|
+
this.updateProcessLink(configuration);
|
|
1410
|
+
}
|
|
1411
|
+
else {
|
|
1412
|
+
this.saveNewProcessLink(configuration);
|
|
1413
|
+
}
|
|
1414
|
+
});
|
|
1415
|
+
}
|
|
1416
|
+
onImportConfiguration(configuration) {
|
|
1417
|
+
this._prefillConfigurationSubject$.next(configuration);
|
|
1418
|
+
}
|
|
1419
|
+
updateProcessLink(configuration) {
|
|
1420
|
+
this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {
|
|
1421
|
+
const updateProcessLinkRequest = {
|
|
1422
|
+
id: selectedProcessLink.id,
|
|
1423
|
+
pluginConfigurationId: selectedProcessLink.pluginConfigurationId ?? '',
|
|
1424
|
+
pluginActionDefinitionKey: selectedProcessLink.pluginActionDefinitionKey ?? '',
|
|
1425
|
+
actionProperties: configuration,
|
|
1426
|
+
activityId: selectedProcessLink.activityId,
|
|
1427
|
+
};
|
|
1428
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
1429
|
+
this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);
|
|
1430
|
+
return;
|
|
1431
|
+
}
|
|
1432
|
+
this.processLinkService.updateProcessLink(updateProcessLinkRequest).subscribe(() => {
|
|
1433
|
+
this.stateService.closeModal();
|
|
1434
|
+
}, () => {
|
|
1435
|
+
this.stateService.stopSaving();
|
|
1436
|
+
});
|
|
1437
|
+
});
|
|
1438
|
+
}
|
|
1439
|
+
saveNewProcessLink(configuration) {
|
|
1440
|
+
combineLatest([
|
|
1441
|
+
this.stateService.modalParams$,
|
|
1442
|
+
this.pluginStateService.selectedPluginConfiguration$,
|
|
1443
|
+
this.pluginStateService.selectedPluginFunction$,
|
|
1444
|
+
this.stateService.selectedProcessLinkTypeId$,
|
|
1445
|
+
])
|
|
1446
|
+
.pipe(take(1))
|
|
1447
|
+
.subscribe(([modalData, selectedConfiguration, selectedFunction, selectedProcessLinkTypeId]) => {
|
|
1448
|
+
const processLinkRequest = {
|
|
1449
|
+
actionProperties: configuration,
|
|
1450
|
+
activityId: modalData?.element?.id,
|
|
1451
|
+
activityType: modalData?.element?.activityListenerType ?? '',
|
|
1452
|
+
pluginConfigurationId: selectedConfiguration.id,
|
|
1453
|
+
processDefinitionId: modalData?.processDefinitionId,
|
|
1454
|
+
pluginActionDefinitionKey: selectedFunction.key,
|
|
1455
|
+
processLinkType: selectedProcessLinkTypeId,
|
|
1456
|
+
};
|
|
1457
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
1458
|
+
this.stateService.sendProcessLinkCreateEvent(processLinkRequest);
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1461
|
+
this.processLinkService.saveProcessLink(processLinkRequest).subscribe(() => {
|
|
1462
|
+
this.stateService.closeModal();
|
|
1463
|
+
}, () => {
|
|
1464
|
+
this.stateService.stopSaving();
|
|
1465
|
+
});
|
|
1466
|
+
});
|
|
1467
|
+
}
|
|
1468
|
+
openBackButtonSubscription() {
|
|
1469
|
+
this._subscriptions.add(this.buttonService.backButtonClick$.subscribe(() => {
|
|
1470
|
+
this.stepService.setChoosePluginActionSteps();
|
|
1471
|
+
}));
|
|
1472
|
+
}
|
|
1473
|
+
openSaveButtonSubscription() {
|
|
1474
|
+
this._subscriptions.add(this.buttonService.saveButtonClick$.subscribe(() => {
|
|
1475
|
+
this.pluginStateService.save();
|
|
1476
|
+
}));
|
|
1477
|
+
}
|
|
1478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PluginActionConfigurationComponent, deps: [{ token: ProcessLinkStateService }, { token: PluginStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkStepService }, { token: ProcessLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1479
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.AsyncPipe, name: "async" }] }); }
|
|
1480
|
+
}
|
|
1481
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PluginActionConfigurationComponent, decorators: [{
|
|
1482
|
+
type: Component,
|
|
1483
|
+
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"] }]
|
|
1484
|
+
}], ctorParameters: () => [{ type: ProcessLinkStateService }, { type: PluginStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkStepService }, { type: ProcessLinkService }], propDecorators: { selectedPluginConfiguration$: [{
|
|
1485
|
+
type: Input
|
|
1486
|
+
}], valid: [{
|
|
1487
|
+
type: Output
|
|
1488
|
+
}], configuration: [{
|
|
1489
|
+
type: Output
|
|
1490
|
+
}] } });
|
|
1491
|
+
|
|
1492
|
+
/*
|
|
1493
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1494
|
+
*
|
|
1495
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1496
|
+
* you may not use this file except in compliance with the License.
|
|
1497
|
+
* You may obtain a copy of the License at
|
|
1498
|
+
*
|
|
1499
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1500
|
+
*
|
|
1501
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1502
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1503
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1504
|
+
* See the License for the specific language governing permissions and
|
|
1505
|
+
* limitations under the License.
|
|
1506
|
+
*/
|
|
1507
|
+
class FormLinkProcessDiagramComponent {
|
|
1508
|
+
constructor(processService, route, pageTitleService) {
|
|
1509
|
+
this.processService = processService;
|
|
1510
|
+
this.route = route;
|
|
1511
|
+
this.pageTitleService = pageTitleService;
|
|
1512
|
+
this.bpmnElementModalOpen = new EventEmitter();
|
|
1513
|
+
this.bpmnElementModalClose = new EventEmitter();
|
|
1514
|
+
this.callbacksAdded = false;
|
|
1515
|
+
}
|
|
1516
|
+
ngOnInit() {
|
|
1517
|
+
this.pageTitleService.disableReset();
|
|
1518
|
+
combineLatest([this.route.queryParams, this.processService.getProcessDefinitions()])
|
|
1519
|
+
.pipe(map(([queryParams, processDefinitions]) => ({ queryParams, processDefinitions })))
|
|
1520
|
+
.subscribe(response => {
|
|
1521
|
+
this.processDefinitions = response.processDefinitions;
|
|
1522
|
+
if (response.queryParams.process) {
|
|
1523
|
+
this.processDefinitionKey = response.queryParams.process;
|
|
1524
|
+
this.loadProcessDefinitionFromKey(this.processDefinitionKey);
|
|
1525
|
+
this.bpmnElementModalOpen.emit({
|
|
1526
|
+
element: {
|
|
1527
|
+
id: 'start-event',
|
|
1528
|
+
type: 'bpmn:StartEvent',
|
|
1529
|
+
},
|
|
1530
|
+
processDefinitionKey: this.processDefinitionKey,
|
|
1531
|
+
processDefinitionId: this.processDefinitionId,
|
|
1532
|
+
});
|
|
1533
|
+
}
|
|
1534
|
+
if (!this.processDefinitionKey && response.processDefinitions.length !== 0) {
|
|
1535
|
+
this.processDefinitionKey = response.processDefinitions[0].key;
|
|
1536
|
+
this.loadProcessDefinitionFromKey(this.processDefinitionKey);
|
|
1537
|
+
}
|
|
1538
|
+
});
|
|
1539
|
+
this.bpmnViewer = new BpmnViewer({});
|
|
1540
|
+
this.bpmnViewer.on('import.done', ({ error }) => {
|
|
1541
|
+
if (!error) {
|
|
1542
|
+
const canvas = this.bpmnViewer.get('canvas');
|
|
1543
|
+
const eventBus = this.bpmnViewer.get('eventBus');
|
|
1544
|
+
canvas.zoom('fit-viewport', 'auto');
|
|
1545
|
+
if (this.processDefinitionVersions && !this.callbacksAdded) {
|
|
1546
|
+
eventBus.on('element.click', e => {
|
|
1547
|
+
let activityListenerType = e.element.businessObject.$type;
|
|
1548
|
+
if (activityListenerType === 'bpmn:UserTask') {
|
|
1549
|
+
activityListenerType += ':create';
|
|
1550
|
+
}
|
|
1551
|
+
else {
|
|
1552
|
+
activityListenerType += ':start';
|
|
1553
|
+
}
|
|
1554
|
+
this.bpmnElementModalOpen.emit({
|
|
1555
|
+
element: {
|
|
1556
|
+
id: e.element.businessObject.id,
|
|
1557
|
+
type: e.element.businessObject.$type,
|
|
1558
|
+
activityListenerType,
|
|
1559
|
+
name: e.element?.businessObject?.name,
|
|
1560
|
+
},
|
|
1561
|
+
processDefinitionKey: this.processDefinitionKey,
|
|
1562
|
+
processDefinitionId: this.processDefinitionId,
|
|
1563
|
+
});
|
|
1564
|
+
});
|
|
1565
|
+
this.callbacksAdded = true;
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
});
|
|
1569
|
+
}
|
|
1570
|
+
ngOnDestroy() {
|
|
1571
|
+
this.bpmnElementModalClose.emit();
|
|
1572
|
+
if (this.bpmnViewer) {
|
|
1573
|
+
this.bpmnViewer.destroy();
|
|
1574
|
+
}
|
|
1575
|
+
this.pageTitleService.enableReset();
|
|
1576
|
+
}
|
|
1577
|
+
loadProcessDefinition(processDefinitionKey) {
|
|
1578
|
+
this.processService
|
|
1579
|
+
.getProcessDefinition(processDefinitionKey)
|
|
1580
|
+
.subscribe((processDefinition) => {
|
|
1581
|
+
this.processDefinitionId = processDefinition.id;
|
|
1582
|
+
this.version = processDefinition.version;
|
|
1583
|
+
this.loadProcessDefinitionXml(processDefinition.id);
|
|
1584
|
+
});
|
|
1585
|
+
}
|
|
1586
|
+
loadProcessDefinitionVersions(processDefinitionKey) {
|
|
1587
|
+
this.processService
|
|
1588
|
+
.getProcessDefinitionVersions(processDefinitionKey)
|
|
1589
|
+
.subscribe((processDefinitionVersions) => {
|
|
1590
|
+
this.processDefinitionVersions = processDefinitionVersions;
|
|
1591
|
+
});
|
|
1592
|
+
}
|
|
1593
|
+
loadProcessDefinitionFromKey(processDefinitionKey) {
|
|
1594
|
+
this.loadProcessDefinitionVersions(processDefinitionKey);
|
|
1595
|
+
this.loadProcessDefinition(processDefinitionKey);
|
|
1596
|
+
}
|
|
1597
|
+
loadProcessDefinitionXml(processDefinitionId) {
|
|
1598
|
+
this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {
|
|
1599
|
+
this.processDiagram = response;
|
|
1600
|
+
this.bpmnViewer.importXML(this.processDiagram.bpmn20Xml);
|
|
1601
|
+
this.bpmnViewer.attachTo(this.el.nativeElement);
|
|
1602
|
+
});
|
|
1603
|
+
}
|
|
1604
|
+
setProcessDefinitionKey(processDefinitionKey) {
|
|
1605
|
+
this.processDefinitionKey = processDefinitionKey;
|
|
1606
|
+
this.loadProcessDefinitionFromKey(this.processDefinitionKey);
|
|
1607
|
+
}
|
|
1608
|
+
setProcessDefinitionVersion(version) {
|
|
1609
|
+
const processDefinitionId = this.processDefinitionVersions.find(definition => definition.version === +version)?.id;
|
|
1610
|
+
if (processDefinitionId) {
|
|
1611
|
+
this.processDefinitionId = processDefinitionId;
|
|
1612
|
+
this.loadProcessDefinitionXml(this.processDefinitionId);
|
|
1613
|
+
}
|
|
1614
|
+
this.version = +version;
|
|
1615
|
+
}
|
|
1616
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormLinkProcessDiagramComponent, deps: [{ token: i1$3.ProcessService }, { token: i3$1.ActivatedRoute }, { token: i2$2.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.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$2.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" }] }); }
|
|
1618
|
+
}
|
|
1619
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormLinkProcessDiagramComponent, decorators: [{
|
|
1620
|
+
type: Component,
|
|
1621
|
+
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"] }]
|
|
1622
|
+
}], ctorParameters: () => [{ type: i1$3.ProcessService }, { type: i3$1.ActivatedRoute }, { type: i2$2.PageTitleService }], propDecorators: { el: [{
|
|
1623
|
+
type: ViewChild,
|
|
1624
|
+
args: ['ref']
|
|
1625
|
+
}], bpmnElementModalOpen: [{
|
|
1626
|
+
type: Output
|
|
1627
|
+
}], bpmnElementModalClose: [{
|
|
1628
|
+
type: Output
|
|
1629
|
+
}] } });
|
|
1630
|
+
|
|
1631
|
+
/*
|
|
1632
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1633
|
+
*
|
|
1634
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1635
|
+
* you may not use this file except in compliance with the License.
|
|
1636
|
+
* You may obtain a copy of the License at
|
|
1637
|
+
*
|
|
1638
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1639
|
+
*
|
|
1640
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1641
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1642
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1643
|
+
* See the License for the specific language governing permissions and
|
|
1644
|
+
* limitations under the License.
|
|
1645
|
+
*/
|
|
1646
|
+
class ChooseProcessLinkTypeComponent {
|
|
1647
|
+
constructor(processLinkStateService) {
|
|
1648
|
+
this.processLinkStateService = processLinkStateService;
|
|
1649
|
+
this.availableProcessLinkTypes$ = this.processLinkStateService.availableProcessLinkTypes$;
|
|
1650
|
+
}
|
|
1651
|
+
selectProcessLinkType(processLinkTypeId) {
|
|
1652
|
+
this.processLinkStateService.selectProcessLinkType(processLinkTypeId);
|
|
1653
|
+
}
|
|
1654
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ChooseProcessLinkTypeComponent, deps: [{ token: ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1655
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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]=\"'processLinkTypeDisabledTooltip.' + 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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: "directive", type: i2$2.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
1656
|
+
}
|
|
1657
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ChooseProcessLinkTypeComponent, decorators: [{
|
|
1658
|
+
type: Component,
|
|
1659
|
+
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]=\"'processLinkTypeDisabledTooltip.' + 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"] }]
|
|
1660
|
+
}], ctorParameters: () => [{ type: ProcessLinkStateService }] });
|
|
1661
|
+
|
|
1662
|
+
/*
|
|
1663
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1664
|
+
*
|
|
1665
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1666
|
+
* you may not use this file except in compliance with the License.
|
|
1667
|
+
* You may obtain a copy of the License at
|
|
1668
|
+
*
|
|
1669
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1670
|
+
*
|
|
1671
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1672
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1673
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1674
|
+
* See the License for the specific language governing permissions and
|
|
1675
|
+
* limitations under the License.
|
|
1676
|
+
*/
|
|
1677
|
+
class FormDisplayConfigurationComponent {
|
|
1678
|
+
constructor(buttonService, stateService, translateService) {
|
|
1679
|
+
this.buttonService = buttonService;
|
|
1680
|
+
this.stateService = stateService;
|
|
1681
|
+
this.translateService = translateService;
|
|
1682
|
+
this.formDisplayValue = new EventEmitter();
|
|
1683
|
+
this.formSizeValue = new EventEmitter();
|
|
1684
|
+
this.subtitlesValue = new EventEmitter();
|
|
1685
|
+
this.formDisplayValue$ = new BehaviorSubject(null);
|
|
1686
|
+
this.formSizeValue$ = new BehaviorSubject(null);
|
|
1687
|
+
this._subtitles$ = new BehaviorSubject([]);
|
|
1688
|
+
this.subtitles$ = this._subtitles$.pipe(map(subtitles => subtitles.map(subtitle => ({ value: subtitle }))));
|
|
1689
|
+
this.disableFormSizeInput$ = new BehaviorSubject(true);
|
|
1690
|
+
this.saving$ = this.stateService.saving$;
|
|
1691
|
+
this.isUserTask$ = new BehaviorSubject(false);
|
|
1692
|
+
this._DISPLAY_TYPE_OPTIONS = ['modal', 'panel'];
|
|
1693
|
+
this._FORM_SIZE_OPTIONS = ['extraSmall', 'small', 'medium', 'large'];
|
|
1694
|
+
this._subscriptions = new Subscription();
|
|
1695
|
+
this.formDisplayTypeListItems$ = combineLatest([
|
|
1696
|
+
this.formDisplayValue$,
|
|
1697
|
+
this.translateService.stream('key'),
|
|
1698
|
+
]).pipe(map(([formDisplayValue]) => this._DISPLAY_TYPE_OPTIONS.map((key) => ({
|
|
1699
|
+
content: this.translateService.instant(`processLinkSteps.displayType.options.${key}`),
|
|
1700
|
+
key: key,
|
|
1701
|
+
selected: this.formDisplayValue$.getValue() === key,
|
|
1702
|
+
}))));
|
|
1703
|
+
this.formSizeListItems$ = combineLatest([
|
|
1704
|
+
this.formSizeValue$,
|
|
1705
|
+
this.translateService.stream('key'),
|
|
1706
|
+
]).pipe(map(([formSizeValue]) => this._FORM_SIZE_OPTIONS.map((key) => ({
|
|
1707
|
+
content: this.translateService.instant(`processLinkSteps.formSize.options.${key}`),
|
|
1708
|
+
key: key,
|
|
1709
|
+
selected: this.formSizeValue$.getValue() === key,
|
|
1710
|
+
}))));
|
|
1711
|
+
}
|
|
1712
|
+
ngOnInit() {
|
|
1713
|
+
this._subscriptions.add(combineLatest([
|
|
1714
|
+
this.stateService.modalParams$,
|
|
1715
|
+
this.stateService.selectedProcessLink$,
|
|
1716
|
+
]).subscribe(([modalParams, selectedProcessLink]) => {
|
|
1717
|
+
this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');
|
|
1718
|
+
if (selectedProcessLink) {
|
|
1719
|
+
if (selectedProcessLink.formDisplayType)
|
|
1720
|
+
this.disableFormSizeInput$.next(false);
|
|
1721
|
+
if (selectedProcessLink.activityType.includes('bpmn:UserTask'))
|
|
1722
|
+
this.isUserTask$.next(true);
|
|
1723
|
+
this.formDisplayValue$.next(selectedProcessLink.formDisplayType ?? null);
|
|
1724
|
+
this.formSizeValue$.next(selectedProcessLink.formSize ?? null);
|
|
1725
|
+
this._subtitles$.next(selectedProcessLink.subtitles ?? []);
|
|
1726
|
+
}
|
|
1727
|
+
}));
|
|
1728
|
+
}
|
|
1729
|
+
ngOnDestroy() {
|
|
1730
|
+
this._subscriptions.unsubscribe();
|
|
1731
|
+
}
|
|
1732
|
+
selectFormDisplayType(event) {
|
|
1733
|
+
this.updateFormDisplayType(event?.key);
|
|
1734
|
+
this.enableSaveButtonWhenValid();
|
|
1735
|
+
}
|
|
1736
|
+
selectFormSize(event) {
|
|
1737
|
+
this.updateFormSize(event?.key);
|
|
1738
|
+
this.enableSaveButtonWhenValid();
|
|
1739
|
+
}
|
|
1740
|
+
onSubtitlesChange(subtitles) {
|
|
1741
|
+
this.subtitlesValue.emit(subtitles);
|
|
1742
|
+
}
|
|
1743
|
+
updateFormDisplayType(formDisplayType) {
|
|
1744
|
+
formDisplayType ? this.disableFormSizeInput$.next(false) : this.resetFormSize();
|
|
1745
|
+
this.formDisplayValue$.next(formDisplayType);
|
|
1746
|
+
this.formDisplayValue.emit(formDisplayType);
|
|
1747
|
+
}
|
|
1748
|
+
updateFormSize(formSize) {
|
|
1749
|
+
this.formSizeValue$.next(formSize);
|
|
1750
|
+
this.formSizeValue.emit(formSize);
|
|
1751
|
+
}
|
|
1752
|
+
resetFormSize() {
|
|
1753
|
+
this.disableFormSizeInput$.next(true);
|
|
1754
|
+
this.updateFormSize(null);
|
|
1755
|
+
}
|
|
1756
|
+
enableSaveButtonWhenValid() {
|
|
1757
|
+
if (this.selectedFormDefinition &&
|
|
1758
|
+
this.formDisplayValue$.getValue() &&
|
|
1759
|
+
this.formSizeValue$.getValue())
|
|
1760
|
+
this.buttonService.enableSaveButton();
|
|
1761
|
+
else
|
|
1762
|
+
this.buttonService.disableSaveButton();
|
|
1763
|
+
}
|
|
1764
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormDisplayConfigurationComponent, deps: [{ token: ProcessLinkButtonService }, { token: ProcessLinkStateService }, { token: i2$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1765
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", 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 saving: saving$ | async,\n } as obs\"\n>\n @if (obs.isUserTask) {\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 <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 <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.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$2.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["addRowText", "addButtonType", "addRowTranslationKey", "arbitraryAmountTitles", "arbitraryValueAmount", "defaultValues", "deleteRowText", "deleteRowTranslationKey", "disabled", "dropdownColumnTitle", "dropdownItems", "dropdownWidth", "fullWidth", "hideAddButton", "hideDeleteButton", "initialAmountOfRows", "keyColumnTitle", "margin", "maxRows", "minimumAmountOfRows", "name", "required", "title", "titleTranslationKey", "tooltip", "type", "valueColumnTitle", "valuePathSelectorCaseDefinitionKey", "valuePathSelectorPrefixes", "valuePathSelectorShowCaseDefinitionSelector", "valuePathSelectorNotation", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
1766
|
+
}
|
|
1767
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormDisplayConfigurationComponent, decorators: [{
|
|
1768
|
+
type: Component,
|
|
1769
|
+
args: [{ standalone: false, selector: 'valtimo-form-display-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\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 saving: saving$ | async,\n } as obs\"\n>\n @if (obs.isUserTask) {\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 <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 <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" }]
|
|
1770
|
+
}], ctorParameters: () => [{ type: ProcessLinkButtonService }, { type: ProcessLinkStateService }, { type: i2$1.TranslateService }], propDecorators: { selectedFormDefinition: [{
|
|
1771
|
+
type: Input
|
|
1772
|
+
}], formDisplayValue: [{
|
|
1773
|
+
type: Output
|
|
1774
|
+
}], formSizeValue: [{
|
|
1775
|
+
type: Output
|
|
1776
|
+
}], subtitlesValue: [{
|
|
1777
|
+
type: Output
|
|
1778
|
+
}] } });
|
|
1779
|
+
|
|
1780
|
+
/*
|
|
1781
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1782
|
+
*
|
|
1783
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1784
|
+
* you may not use this file except in compliance with the License.
|
|
1785
|
+
* You may obtain a copy of the License at
|
|
1786
|
+
*
|
|
1787
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1788
|
+
*
|
|
1789
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1790
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1791
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1792
|
+
* See the License for the specific language governing permissions and
|
|
1793
|
+
* limitations under the License.
|
|
1794
|
+
*/
|
|
1795
|
+
class SelectFormComponent {
|
|
1796
|
+
constructor(formService, stateService, processLinkService, buttonService, route) {
|
|
1797
|
+
this.formService = formService;
|
|
1798
|
+
this.stateService = stateService;
|
|
1799
|
+
this.processLinkService = processLinkService;
|
|
1800
|
+
this.buttonService = buttonService;
|
|
1801
|
+
this.route = route;
|
|
1802
|
+
this.subtitlesValue = [];
|
|
1803
|
+
this.saving$ = this.stateService.saving$;
|
|
1804
|
+
this.caseDefinitionId$ = getCaseManagementRouteParams(this.route);
|
|
1805
|
+
this.formDefinitions$ = this.caseDefinitionId$.pipe(mergeMap(caseDefinitionId => {
|
|
1806
|
+
if (!!caseDefinitionId) {
|
|
1807
|
+
return this.formService.getAllFormDefinitionsForCaseDefinition(caseDefinitionId?.caseDefinitionKey ?? '', caseDefinitionId?.caseDefinitionVersionTag ?? '');
|
|
1808
|
+
}
|
|
1809
|
+
return this.formService.getAllUnlinkedFormDefinitions();
|
|
1810
|
+
}));
|
|
1811
|
+
this.formDefinitionListItems$ = combineLatest([this.stateService.selectedProcessLink$, this.formDefinitions$]).pipe(map$1(([selectedProcessLink, formDefinitions]) => formDefinitions.map(definition => ({
|
|
1812
|
+
content: definition.name,
|
|
1813
|
+
id: definition.id,
|
|
1814
|
+
selected: selectedProcessLink
|
|
1815
|
+
? selectedProcessLink.formDefinitionId === definition.id
|
|
1816
|
+
: false,
|
|
1817
|
+
}))), tap(formDefinitionListItems => {
|
|
1818
|
+
const selectedItem = formDefinitionListItems.find(item => item.selected);
|
|
1819
|
+
if (selectedItem) {
|
|
1820
|
+
this.selectFormDefinition(selectedItem);
|
|
1821
|
+
}
|
|
1822
|
+
}));
|
|
1823
|
+
this._subscriptions = new Subscription();
|
|
1824
|
+
this.isUserTask$ = new BehaviorSubject(false);
|
|
1825
|
+
this._DEFAULT_FORM_DISPLAY_TYPE = 'panel';
|
|
1826
|
+
this._DEFAULT_FORM_DISPLAY_SIZE = 'medium';
|
|
1827
|
+
}
|
|
1828
|
+
ngOnInit() {
|
|
1829
|
+
this.openBackButtonSubscription();
|
|
1830
|
+
this.openSaveButtonSubscription();
|
|
1831
|
+
this._subscriptions.add(combineLatest([
|
|
1832
|
+
this.stateService.selectedProcessLink$,
|
|
1833
|
+
this.stateService.modalParams$,
|
|
1834
|
+
]).subscribe(([selectedProcessLink, modalParams]) => {
|
|
1835
|
+
if (selectedProcessLink) {
|
|
1836
|
+
this.formDisplayValue = selectedProcessLink.formDisplayType;
|
|
1837
|
+
this.formSizeValue = selectedProcessLink.formSize;
|
|
1838
|
+
}
|
|
1839
|
+
this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');
|
|
1840
|
+
}));
|
|
1841
|
+
}
|
|
1842
|
+
ngOnDestroy() {
|
|
1843
|
+
this._subscriptions.unsubscribe();
|
|
1844
|
+
}
|
|
1845
|
+
selectFormDefinition(formDefinition) {
|
|
1846
|
+
this.selectedFormDefinition = formDefinition?.id ? formDefinition : null;
|
|
1847
|
+
if (this.selectedFormDefinition)
|
|
1848
|
+
this.buttonService.enableSaveButton();
|
|
1849
|
+
else
|
|
1850
|
+
this.buttonService.disableSaveButton();
|
|
1851
|
+
}
|
|
1852
|
+
selectedFormDisplayValue(formDisplay) {
|
|
1853
|
+
this.formDisplayValue = formDisplay;
|
|
1854
|
+
}
|
|
1855
|
+
selectedFormSizeValue(formSize) {
|
|
1856
|
+
this.formSizeValue = formSize;
|
|
1857
|
+
}
|
|
1858
|
+
selectedSubtitlesValue(subtitles) {
|
|
1859
|
+
this.subtitlesValue = subtitles;
|
|
1860
|
+
}
|
|
1861
|
+
openBackButtonSubscription() {
|
|
1862
|
+
this._subscriptions.add(this.buttonService.backButtonClick$.subscribe(() => {
|
|
1863
|
+
this.stateService.setInitial();
|
|
1864
|
+
}));
|
|
1865
|
+
}
|
|
1866
|
+
openSaveButtonSubscription() {
|
|
1867
|
+
this._subscriptions.add(this.buttonService.saveButtonClick$.subscribe(() => {
|
|
1868
|
+
this.stateService.startSaving();
|
|
1869
|
+
this.saveProcessLink();
|
|
1870
|
+
}));
|
|
1871
|
+
}
|
|
1872
|
+
saveProcessLink() {
|
|
1873
|
+
this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {
|
|
1874
|
+
if (selectedProcessLink) {
|
|
1875
|
+
this.updateProcessLink();
|
|
1876
|
+
}
|
|
1877
|
+
else {
|
|
1878
|
+
this.saveNewProcessLink();
|
|
1879
|
+
}
|
|
1880
|
+
});
|
|
1881
|
+
}
|
|
1882
|
+
updateProcessLink() {
|
|
1883
|
+
combineLatest([
|
|
1884
|
+
this.stateService.selectedProcessLink$,
|
|
1885
|
+
this.stateService.viewModelEnabled$,
|
|
1886
|
+
this.isUserTask$,
|
|
1887
|
+
])
|
|
1888
|
+
.pipe(take(1))
|
|
1889
|
+
.subscribe(([selectedProcessLink, viewModelEnabled, isUserTask]) => {
|
|
1890
|
+
const updateProcessLinkRequest = {
|
|
1891
|
+
id: selectedProcessLink.id,
|
|
1892
|
+
formDefinitionId: this.selectedFormDefinition.id,
|
|
1893
|
+
activityId: selectedProcessLink.activityId,
|
|
1894
|
+
viewModelEnabled,
|
|
1895
|
+
...(isUserTask && {
|
|
1896
|
+
formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,
|
|
1897
|
+
}),
|
|
1898
|
+
...(isUserTask && { formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_TYPE }),
|
|
1899
|
+
...(isUserTask && { subtitles: this.subtitlesValue }),
|
|
1900
|
+
};
|
|
1901
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
1902
|
+
this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);
|
|
1903
|
+
return;
|
|
1904
|
+
}
|
|
1905
|
+
this.processLinkService.updateProcessLink(updateProcessLinkRequest).subscribe({
|
|
1906
|
+
next: () => {
|
|
1907
|
+
this.stateService.closeModal();
|
|
1908
|
+
},
|
|
1909
|
+
error: () => {
|
|
1910
|
+
this.stateService.stopSaving();
|
|
1911
|
+
},
|
|
1912
|
+
});
|
|
1913
|
+
});
|
|
1914
|
+
}
|
|
1915
|
+
saveNewProcessLink() {
|
|
1916
|
+
combineLatest([
|
|
1917
|
+
this.stateService.modalParams$,
|
|
1918
|
+
this.stateService.selectedProcessLinkTypeId$,
|
|
1919
|
+
this.stateService.viewModelEnabled$,
|
|
1920
|
+
this.isUserTask$,
|
|
1921
|
+
])
|
|
1922
|
+
.pipe(take(1))
|
|
1923
|
+
.subscribe(([modalParams, processLinkTypeId, viewModelEnabled, isUserTask]) => {
|
|
1924
|
+
const createRequest = {
|
|
1925
|
+
formDefinitionId: this.selectedFormDefinition.id,
|
|
1926
|
+
activityType: modalParams.element.activityListenerType,
|
|
1927
|
+
processDefinitionId: modalParams.processDefinitionId,
|
|
1928
|
+
processLinkType: processLinkTypeId,
|
|
1929
|
+
activityId: modalParams.element.id,
|
|
1930
|
+
viewModelEnabled,
|
|
1931
|
+
...(isUserTask && {
|
|
1932
|
+
formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,
|
|
1933
|
+
}),
|
|
1934
|
+
...(isUserTask && {
|
|
1935
|
+
formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE,
|
|
1936
|
+
}),
|
|
1937
|
+
...(isUserTask && {
|
|
1938
|
+
subtitles: this.subtitlesValue,
|
|
1939
|
+
}),
|
|
1940
|
+
};
|
|
1941
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
1942
|
+
this.stateService.sendProcessLinkCreateEvent(createRequest);
|
|
1943
|
+
return;
|
|
1944
|
+
}
|
|
1945
|
+
this.processLinkService.saveProcessLink(createRequest).subscribe({
|
|
1946
|
+
next: () => {
|
|
1947
|
+
this.stateService.closeModal();
|
|
1948
|
+
},
|
|
1949
|
+
error: () => {
|
|
1950
|
+
this.stateService.stopSaving();
|
|
1951
|
+
},
|
|
1952
|
+
});
|
|
1953
|
+
});
|
|
1954
|
+
}
|
|
1955
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectFormComponent, deps: [{ token: i1$4.FormService }, { token: ProcessLinkStateService }, { token: ProcessLinkService }, { token: ProcessLinkButtonService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1956
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.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.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
1957
|
+
}
|
|
1958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectFormComponent, decorators: [{
|
|
1959
|
+
type: Component,
|
|
1960
|
+
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"] }]
|
|
1961
|
+
}], ctorParameters: () => [{ type: i1$4.FormService }, { type: ProcessLinkStateService }, { type: ProcessLinkService }, { type: ProcessLinkButtonService }, { type: i3$1.ActivatedRoute }] });
|
|
1962
|
+
|
|
1963
|
+
/*
|
|
1964
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1965
|
+
*
|
|
1966
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1967
|
+
* you may not use this file except in compliance with the License.
|
|
1968
|
+
* You may obtain a copy of the License at
|
|
1969
|
+
*
|
|
1970
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1971
|
+
*
|
|
1972
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1973
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1974
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1975
|
+
* See the License for the specific language governing permissions and
|
|
1976
|
+
* limitations under the License.
|
|
1977
|
+
*/
|
|
1978
|
+
class SelectFormFlowComponent {
|
|
1979
|
+
constructor(formFlowService, stateService, processLinkService, buttonService, route) {
|
|
1980
|
+
this.formFlowService = formFlowService;
|
|
1981
|
+
this.stateService = stateService;
|
|
1982
|
+
this.processLinkService = processLinkService;
|
|
1983
|
+
this.buttonService = buttonService;
|
|
1984
|
+
this.route = route;
|
|
1985
|
+
this.subtitlesValue = [];
|
|
1986
|
+
this.saving$ = this.stateService.saving$;
|
|
1987
|
+
this.formFlowDefinitions$ = getCaseManagementRouteParams(this.route).pipe(switchMap$1((params) => this.formFlowService.getFormFlowDefinitions(params?.caseDefinitionKey ?? '', params?.caseDefinitionVersionTag ?? '')), map$1((formFlowDefinitions) => formFlowDefinitions.content));
|
|
1988
|
+
this.formFlowDefinitionListItems$ = combineLatest([this.stateService.selectedProcessLink$, this.formFlowDefinitions$]).pipe(map$1(([selectedProcessLink, formFlowDefinitions]) => formFlowDefinitions.map(definition => ({
|
|
1989
|
+
content: definition.key,
|
|
1990
|
+
id: definition.key,
|
|
1991
|
+
selected: selectedProcessLink
|
|
1992
|
+
? selectedProcessLink.formFlowDefinitionKey === definition.key
|
|
1993
|
+
: false,
|
|
1994
|
+
}))), tap(formFlowDefinitionListItems => {
|
|
1995
|
+
const selectedItem = formFlowDefinitionListItems.find(item => item.selected);
|
|
1996
|
+
if (selectedItem) {
|
|
1997
|
+
this.selectFormFlowDefinition(selectedItem);
|
|
1998
|
+
}
|
|
1999
|
+
}));
|
|
2000
|
+
this._subscriptions = new Subscription();
|
|
2001
|
+
this.isUserTask$ = new BehaviorSubject(false);
|
|
2002
|
+
this._DEFAULT_FORM_DISPLAY_TYPE = 'panel';
|
|
2003
|
+
this._DEFAULT_FORM_DISPLAY_SIZE = 'medium';
|
|
2004
|
+
}
|
|
2005
|
+
ngOnInit() {
|
|
2006
|
+
this.openBackButtonSubscription();
|
|
2007
|
+
this.openSaveButtonSubscription();
|
|
2008
|
+
this._subscriptions.add(combineLatest([
|
|
2009
|
+
this.stateService.selectedProcessLink$,
|
|
2010
|
+
this.stateService.modalParams$,
|
|
2011
|
+
]).subscribe(([selectedProcessLink, modalParams]) => {
|
|
2012
|
+
if (selectedProcessLink) {
|
|
2013
|
+
this.formDisplayValue = selectedProcessLink.formDisplayType;
|
|
2014
|
+
this.formSizeValue = selectedProcessLink.formSize;
|
|
2015
|
+
}
|
|
2016
|
+
this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');
|
|
2017
|
+
}));
|
|
2018
|
+
}
|
|
2019
|
+
ngOnDestroy() {
|
|
2020
|
+
this._subscriptions.unsubscribe();
|
|
2021
|
+
}
|
|
2022
|
+
selectedFormDisplayValue(formDisplay) {
|
|
2023
|
+
this.formDisplayValue = formDisplay;
|
|
2024
|
+
}
|
|
2025
|
+
selectedFormSizeValue(formSize) {
|
|
2026
|
+
this.formSizeValue = formSize;
|
|
2027
|
+
}
|
|
2028
|
+
selectFormFlowDefinition(formFlowDefinition) {
|
|
2029
|
+
if (!formFlowDefinition)
|
|
2030
|
+
return;
|
|
2031
|
+
this.selectedFormFlowDefinitionId = formFlowDefinition.id;
|
|
2032
|
+
if (this.selectedFormFlowDefinitionId)
|
|
2033
|
+
this.buttonService.enableSaveButton();
|
|
2034
|
+
else
|
|
2035
|
+
this.buttonService.disableSaveButton();
|
|
2036
|
+
}
|
|
2037
|
+
selectedSubtitlesValue(subtitles) {
|
|
2038
|
+
this.subtitlesValue = subtitles;
|
|
2039
|
+
}
|
|
2040
|
+
openBackButtonSubscription() {
|
|
2041
|
+
this._subscriptions.add(this.buttonService.backButtonClick$.subscribe(() => {
|
|
2042
|
+
this.stateService.setInitial();
|
|
2043
|
+
}));
|
|
2044
|
+
}
|
|
2045
|
+
openSaveButtonSubscription() {
|
|
2046
|
+
this._subscriptions.add(this.buttonService.saveButtonClick$.subscribe(() => {
|
|
2047
|
+
this.stateService.startSaving();
|
|
2048
|
+
this.saveFormFlowLink();
|
|
2049
|
+
}));
|
|
2050
|
+
}
|
|
2051
|
+
saveFormFlowLink() {
|
|
2052
|
+
this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {
|
|
2053
|
+
if (selectedProcessLink)
|
|
2054
|
+
this.updateProcessLink();
|
|
2055
|
+
else
|
|
2056
|
+
this.saveNewProcessLink();
|
|
2057
|
+
});
|
|
2058
|
+
}
|
|
2059
|
+
updateProcessLink() {
|
|
2060
|
+
combineLatest([this.stateService.selectedProcessLink$, this.isUserTask$])
|
|
2061
|
+
.pipe(take(1))
|
|
2062
|
+
.subscribe(([selectedProcessLink, isUserTask]) => {
|
|
2063
|
+
const updateProcessLinkRequest = {
|
|
2064
|
+
id: selectedProcessLink.id,
|
|
2065
|
+
formFlowDefinitionId: this.selectedFormFlowDefinitionId,
|
|
2066
|
+
activityId: selectedProcessLink.activityId,
|
|
2067
|
+
...(isUserTask && {
|
|
2068
|
+
formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,
|
|
2069
|
+
}),
|
|
2070
|
+
...(isUserTask && { formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE }),
|
|
2071
|
+
...(isUserTask && { subtitles: this.subtitlesValue }),
|
|
2072
|
+
};
|
|
2073
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
2074
|
+
this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);
|
|
2075
|
+
return;
|
|
2076
|
+
}
|
|
2077
|
+
this.processLinkService.updateProcessLink(updateProcessLinkRequest).subscribe({
|
|
2078
|
+
next: () => {
|
|
2079
|
+
this.stateService.closeModal();
|
|
2080
|
+
},
|
|
2081
|
+
error: () => {
|
|
2082
|
+
this.stateService.stopSaving();
|
|
2083
|
+
},
|
|
2084
|
+
});
|
|
2085
|
+
});
|
|
2086
|
+
}
|
|
2087
|
+
saveNewProcessLink() {
|
|
2088
|
+
combineLatest([
|
|
2089
|
+
this.stateService.modalParams$,
|
|
2090
|
+
this.stateService.selectedProcessLinkTypeId$,
|
|
2091
|
+
this.isUserTask$,
|
|
2092
|
+
])
|
|
2093
|
+
.pipe(take(1))
|
|
2094
|
+
.subscribe(([modalParams, processLinkTypeId, isUserTask]) => {
|
|
2095
|
+
const createRequest = {
|
|
2096
|
+
formFlowDefinitionKey: this.selectedFormFlowDefinitionId,
|
|
2097
|
+
activityType: modalParams.element.activityListenerType,
|
|
2098
|
+
processDefinitionId: modalParams.processDefinitionId,
|
|
2099
|
+
processLinkType: processLinkTypeId,
|
|
2100
|
+
activityId: modalParams.element.id,
|
|
2101
|
+
...(isUserTask && {
|
|
2102
|
+
formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,
|
|
2103
|
+
}),
|
|
2104
|
+
...(isUserTask && { formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE }),
|
|
2105
|
+
...(isUserTask && { subtitles: this.subtitlesValue }),
|
|
2106
|
+
};
|
|
2107
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
2108
|
+
this.stateService.sendProcessLinkCreateEvent(createRequest);
|
|
2109
|
+
return;
|
|
2110
|
+
}
|
|
2111
|
+
this.processLinkService.saveProcessLink(createRequest).subscribe({
|
|
2112
|
+
next: () => {
|
|
2113
|
+
this.stateService.closeModal();
|
|
2114
|
+
},
|
|
2115
|
+
error: () => {
|
|
2116
|
+
this.stateService.stopSaving();
|
|
2117
|
+
},
|
|
2118
|
+
});
|
|
2119
|
+
});
|
|
2120
|
+
}
|
|
2121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectFormFlowComponent, deps: [{ token: i1$5.FormFlowService }, { token: ProcessLinkStateService }, { token: ProcessLinkService }, { token: ProcessLinkButtonService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.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.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
2123
|
+
}
|
|
2124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectFormFlowComponent, decorators: [{
|
|
2125
|
+
type: Component,
|
|
2126
|
+
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"] }]
|
|
2127
|
+
}], ctorParameters: () => [{ type: i1$5.FormFlowService }, { type: ProcessLinkStateService }, { type: ProcessLinkService }, { type: ProcessLinkButtonService }, { type: i3$1.ActivatedRoute }] });
|
|
2128
|
+
|
|
2129
|
+
/*
|
|
2130
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2131
|
+
*
|
|
2132
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2133
|
+
* you may not use this file except in compliance with the License.
|
|
2134
|
+
* You may obtain a copy of the License at
|
|
2135
|
+
*
|
|
2136
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2137
|
+
*
|
|
2138
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2139
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2140
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2141
|
+
* See the License for the specific language governing permissions and
|
|
2142
|
+
* limitations under the License.
|
|
2143
|
+
*/
|
|
2144
|
+
class SelectUIComponentComponent {
|
|
2145
|
+
constructor(stateService, buttonService, processLinkService, formCustomComponentConfig) {
|
|
2146
|
+
this.stateService = stateService;
|
|
2147
|
+
this.buttonService = buttonService;
|
|
2148
|
+
this.processLinkService = processLinkService;
|
|
2149
|
+
this.formCustomComponentConfig = formCustomComponentConfig;
|
|
2150
|
+
this._formCustomComponentConfig$ = new BehaviorSubject({});
|
|
2151
|
+
this.formCustomComponentListItems$ = combineLatest([
|
|
2152
|
+
this.stateService.selectedProcessLink$,
|
|
2153
|
+
this._formCustomComponentConfig$,
|
|
2154
|
+
]).pipe(map$1(([selectedProcessLink, formCustomComponentConfigs]) => Object.keys(formCustomComponentConfigs).map(key => ({
|
|
2155
|
+
content: key,
|
|
2156
|
+
selected: selectedProcessLink ? selectedProcessLink?.componentKey === key : false,
|
|
2157
|
+
}))), tap(formCustomComponentListItems => {
|
|
2158
|
+
const selectedItem = formCustomComponentListItems.find(item => item.selected);
|
|
2159
|
+
if (selectedItem) {
|
|
2160
|
+
this.selectCustomComponent(selectedItem);
|
|
2161
|
+
}
|
|
2162
|
+
}));
|
|
2163
|
+
this._subscriptions = new Subscription();
|
|
2164
|
+
this._formCustomComponentConfig$.next(this.formCustomComponentConfig);
|
|
2165
|
+
}
|
|
2166
|
+
ngOnInit() {
|
|
2167
|
+
this.openBackButtonSubscription();
|
|
2168
|
+
this.openSaveButtonSubscription();
|
|
2169
|
+
}
|
|
2170
|
+
ngOnDestroy() {
|
|
2171
|
+
this._subscriptions.unsubscribe();
|
|
2172
|
+
}
|
|
2173
|
+
selectCustomComponent(selectedCustomComponent) {
|
|
2174
|
+
this._selectedCustomComponent = selectedCustomComponent;
|
|
2175
|
+
this._selectedCustomComponent?.content
|
|
2176
|
+
? this.buttonService.enableSaveButton()
|
|
2177
|
+
: this.buttonService.disableSaveButton();
|
|
2178
|
+
}
|
|
2179
|
+
openBackButtonSubscription() {
|
|
2180
|
+
this._subscriptions.add(this.buttonService.backButtonClick$.subscribe(() => {
|
|
2181
|
+
this.stateService.setInitial();
|
|
2182
|
+
}));
|
|
2183
|
+
}
|
|
2184
|
+
openSaveButtonSubscription() {
|
|
2185
|
+
this._subscriptions.add(this.buttonService.saveButtonClick$.subscribe(() => {
|
|
2186
|
+
this.stateService.startSaving();
|
|
2187
|
+
this.saveProcessLink();
|
|
2188
|
+
}));
|
|
2189
|
+
}
|
|
2190
|
+
saveProcessLink() {
|
|
2191
|
+
this.stateService.selectedProcessLink$.pipe(take$1(1)).subscribe(selectedProcessLink => {
|
|
2192
|
+
selectedProcessLink ? this.updateProcessLink() : this.saveNewProcessLink();
|
|
2193
|
+
});
|
|
2194
|
+
}
|
|
2195
|
+
updateProcessLink() {
|
|
2196
|
+
this.stateService.selectedProcessLink$.pipe(take$1(1)).subscribe(selectedProcessLink => {
|
|
2197
|
+
const updateRequest = {
|
|
2198
|
+
id: selectedProcessLink.id,
|
|
2199
|
+
componentKey: this._selectedCustomComponent.content,
|
|
2200
|
+
activityId: selectedProcessLink.activityId,
|
|
2201
|
+
};
|
|
2202
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
2203
|
+
this.stateService.sendProcessLinkUpdateEvent(updateRequest);
|
|
2204
|
+
return;
|
|
2205
|
+
}
|
|
2206
|
+
this.processLinkService.updateProcessLink(updateRequest).subscribe({
|
|
2207
|
+
next: () => this.stateService.closeModal(),
|
|
2208
|
+
error: () => this.stateService.stopSaving(),
|
|
2209
|
+
});
|
|
2210
|
+
});
|
|
2211
|
+
}
|
|
2212
|
+
saveNewProcessLink() {
|
|
2213
|
+
combineLatest([this.stateService.modalParams$, this.stateService.selectedProcessLinkTypeId$])
|
|
2214
|
+
.pipe(take$1(1), switchMap(([modalParams, processLinkTypeId]) => {
|
|
2215
|
+
const createRequest = {
|
|
2216
|
+
componentKey: this._selectedCustomComponent.content,
|
|
2217
|
+
activityType: modalParams.element.activityListenerType || '',
|
|
2218
|
+
processDefinitionId: modalParams.processDefinitionId,
|
|
2219
|
+
processLinkType: processLinkTypeId,
|
|
2220
|
+
activityId: modalParams.element.id,
|
|
2221
|
+
};
|
|
2222
|
+
if (this.stateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
2223
|
+
this.stateService.sendProcessLinkCreateEvent(createRequest);
|
|
2224
|
+
return [];
|
|
2225
|
+
}
|
|
2226
|
+
return this.processLinkService.saveProcessLink(createRequest);
|
|
2227
|
+
}))
|
|
2228
|
+
.subscribe({
|
|
2229
|
+
next: () => this.stateService.closeModal(),
|
|
2230
|
+
error: () => this.stateService.stopSaving(),
|
|
2231
|
+
});
|
|
2232
|
+
}
|
|
2233
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectUIComponentComponent, deps: [{ token: ProcessLinkStateService }, { token: ProcessLinkButtonService }, { token: ProcessLinkService }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2235
|
+
}
|
|
2236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectUIComponentComponent, decorators: [{
|
|
2237
|
+
type: Component,
|
|
2238
|
+
args: [{ standalone: false, selector: 'valtimo-select-ui-component', 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<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"] }]
|
|
2239
|
+
}], ctorParameters: () => [{ type: ProcessLinkStateService }, { type: ProcessLinkButtonService }, { type: ProcessLinkService }, { type: undefined, decorators: [{
|
|
2240
|
+
type: Optional
|
|
2241
|
+
}, {
|
|
2242
|
+
type: Inject,
|
|
2243
|
+
args: [FORM_CUSTOM_COMPONENT_TOKEN]
|
|
2244
|
+
}] }] });
|
|
2245
|
+
|
|
2246
|
+
/*
|
|
2247
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2248
|
+
*
|
|
2249
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2250
|
+
* you may not use this file except in compliance with the License.
|
|
2251
|
+
* You may obtain a copy of the License at
|
|
2252
|
+
*
|
|
2253
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2254
|
+
*
|
|
2255
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2256
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2257
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2258
|
+
* See the License for the specific language governing permissions and
|
|
2259
|
+
* limitations under the License.
|
|
2260
|
+
*/
|
|
2261
|
+
class ProcessLinkModalComponent {
|
|
2262
|
+
constructor(stateService, stepService, buttonService, pluginStateService, processLinkService, processLinkStateService, configService) {
|
|
2263
|
+
this.stateService = stateService;
|
|
2264
|
+
this.stepService = stepService;
|
|
2265
|
+
this.buttonService = buttonService;
|
|
2266
|
+
this.pluginStateService = pluginStateService;
|
|
2267
|
+
this.processLinkService = processLinkService;
|
|
2268
|
+
this.processLinkStateService = processLinkStateService;
|
|
2269
|
+
this.configService = configService;
|
|
2270
|
+
this.showModal$ = this.stateService.showModal$;
|
|
2271
|
+
this.processStepName$ = this.stateService.elementName$;
|
|
2272
|
+
this.steps$ = this.stepService.steps$;
|
|
2273
|
+
this.currentStepIndex$ = this.stepService.currentStepIndex$;
|
|
2274
|
+
this.currentStepId$ = this.stepService.currentStepId$;
|
|
2275
|
+
this.showSaveButton$ = this.buttonService.showSaveButton$;
|
|
2276
|
+
this.enableSaveButton$ = this.buttonService.enableSaveButton$;
|
|
2277
|
+
this.showBackButton$ = this.buttonService.showBackButton$;
|
|
2278
|
+
this.showNextButton$ = this.buttonService.showNextButton$;
|
|
2279
|
+
this.enableNextButton$ = this.buttonService.enableNextButton$;
|
|
2280
|
+
this.hideProgressIndicator$ = this.stateService.hideProgressIndicator$;
|
|
2281
|
+
this.saving$ = this.stateService.saving$;
|
|
2282
|
+
this.typeOfSelectedProcessLink$ = this.stateService.typeOfSelectedProcessLink$;
|
|
2283
|
+
this.viewModelEnabled$ = this.stateService.viewModelEnabled$;
|
|
2284
|
+
this.selectedPluginConfiguration$ = this.pluginStateService.selectedPluginConfiguration$;
|
|
2285
|
+
this.showViewModelToggle = this.configService.config.featureToggles.enableFormViewModel;
|
|
2286
|
+
}
|
|
2287
|
+
closeModal() {
|
|
2288
|
+
this.stateService.closeModal();
|
|
2289
|
+
}
|
|
2290
|
+
backButtonClick() {
|
|
2291
|
+
this.buttonService.clickBackButton();
|
|
2292
|
+
}
|
|
2293
|
+
saveButtonClick() {
|
|
2294
|
+
this.buttonService.clickSaveButton();
|
|
2295
|
+
}
|
|
2296
|
+
nextButtonClick() {
|
|
2297
|
+
this.buttonService.clickNextButton();
|
|
2298
|
+
}
|
|
2299
|
+
unlinkButtonClick() {
|
|
2300
|
+
this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {
|
|
2301
|
+
if (this.processLinkStateService.processLinkEditMode === ProcessLinkEditMode.EMIT_EVENTS) {
|
|
2302
|
+
this.processLinkStateService.sendProcessLinkDeleteEvent({
|
|
2303
|
+
activityId: selectedProcessLink.activityId,
|
|
2304
|
+
});
|
|
2305
|
+
return;
|
|
2306
|
+
}
|
|
2307
|
+
this.stateService.startSaving();
|
|
2308
|
+
this.processLinkService.deleteProcessLink(selectedProcessLink.id).subscribe(() => {
|
|
2309
|
+
this.stateService.closeModal();
|
|
2310
|
+
}, () => {
|
|
2311
|
+
this.stateService.stopSaving();
|
|
2312
|
+
});
|
|
2313
|
+
});
|
|
2314
|
+
}
|
|
2315
|
+
toggleCheckedChange(value) {
|
|
2316
|
+
this.processLinkStateService.setViewModelEnabled(value);
|
|
2317
|
+
}
|
|
2318
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkModalComponent, deps: [{ token: ProcessLinkStateService }, { token: ProcessLinkStepService }, { token: ProcessLinkButtonService }, { token: PluginStateService }, { token: ProcessLinkService }, { token: ProcessLinkStateService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2319
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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 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 } as obs\"\n>\n <cds-modal valtimoCdsModal [open]=\"obs.showModal\" size=\"lg\" (close)=\"closeModal()\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <h2 cdsModalHeaderLabel>{{ 'processLinkConfiguration.configureStep' | translate }}</h2>\n <h3 cdsModalHeaderHeading>\n {{\n 'processLinkConfiguration.modalTitle'\n | translate: {processStepName: obs.processStepName || '-'}\n }}\n </h3>\n <div class=\"process-link-progress\" *ngIf=\"!obs.typeOfSelectedProgressLink\">\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\n *ngIf=\"obs.currentStepId === 'selectForm' || obs.typeOfSelectedProgressLink === 'form'\"\n >\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle\"\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\n *ngIf=\"\n obs.currentStepId === 'selectFormFlow' || obs.typeOfSelectedProgressLink === 'form-flow'\n \"\n >\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginConfiguration'\">\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\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\n *ngIf=\"\n obs.currentStepId === 'configurePluginAction' ||\n obs.typeOfSelectedProgressLink === 'plugin'\n \"\n >\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'uiComponent' || obs.typeOfSelectedProgressLink === 'ui-component'\n \"\n >\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 <div class=\"cancel-button\">\n <button cdsButton=\"ghost\" (click)=\"closeModal()\" [disabled]=\"obs.disabled\">\n {{ 'processLinkConfiguration.cancel' | translate }}\n </button>\n </div>\n <div class=\"navigation-buttons\">\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=\"danger--primary\"\n *ngIf=\"obs.typeOfSelectedProgressLink\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"(obs.showSaveButton && !obs.saving) || obs.typeOfSelectedProgressLink\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </div>\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{justify-content:space-between}.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}.navigation-buttons{justify-content:flex-end}.navigation-buttons,.cancel-button{max-width:50%;display:flex;flex-direction:row;flex-grow:1}.navigation-buttons button,.cancel-button button{min-width:50%}.cancel-button{max-width:25%}.cancel-button button{min-width:100%}.process-link-progress{width:100%;margin-top:32px;margin-bottom:40px}.hidden{visibility:hidden}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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$2.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: 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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
2320
|
+
}
|
|
2321
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkModalComponent, decorators: [{
|
|
2322
|
+
type: Component,
|
|
2323
|
+
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 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 } as obs\"\n>\n <cds-modal valtimoCdsModal [open]=\"obs.showModal\" size=\"lg\" (close)=\"closeModal()\">\n <cds-modal-header (closeSelect)=\"closeModal()\">\n <h2 cdsModalHeaderLabel>{{ 'processLinkConfiguration.configureStep' | translate }}</h2>\n <h3 cdsModalHeaderHeading>\n {{\n 'processLinkConfiguration.modalTitle'\n | translate: {processStepName: obs.processStepName || '-'}\n }}\n </h3>\n <div class=\"process-link-progress\" *ngIf=\"!obs.typeOfSelectedProgressLink\">\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\n *ngIf=\"obs.currentStepId === 'selectForm' || obs.typeOfSelectedProgressLink === 'form'\"\n >\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle\"\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\n *ngIf=\"\n obs.currentStepId === 'selectFormFlow' || obs.typeOfSelectedProgressLink === 'form-flow'\n \"\n >\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginConfiguration'\">\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\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\n *ngIf=\"\n obs.currentStepId === 'configurePluginAction' ||\n obs.typeOfSelectedProgressLink === 'plugin'\n \"\n >\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'uiComponent' || obs.typeOfSelectedProgressLink === 'ui-component'\n \"\n >\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 <div class=\"cancel-button\">\n <button cdsButton=\"ghost\" (click)=\"closeModal()\" [disabled]=\"obs.disabled\">\n {{ 'processLinkConfiguration.cancel' | translate }}\n </button>\n </div>\n <div class=\"navigation-buttons\">\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=\"danger--primary\"\n *ngIf=\"obs.typeOfSelectedProgressLink\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"(obs.showSaveButton && !obs.saving) || obs.typeOfSelectedProgressLink\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </div>\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{justify-content:space-between}.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}.navigation-buttons{justify-content:flex-end}.navigation-buttons,.cancel-button{max-width:50%;display:flex;flex-direction:row;flex-grow:1}.navigation-buttons button,.cancel-button button{min-width:50%}.cancel-button{max-width:25%}.cancel-button button{min-width:100%}.process-link-progress{width:100%;margin-top:32px;margin-bottom:40px}.hidden{visibility:hidden}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2324
|
+
}], ctorParameters: () => [{ type: ProcessLinkStateService }, { type: ProcessLinkStepService }, { type: ProcessLinkButtonService }, { type: PluginStateService }, { type: ProcessLinkService }, { type: ProcessLinkStateService }, { type: i2.ConfigService }] });
|
|
2325
|
+
|
|
2326
|
+
/*
|
|
2327
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2328
|
+
*
|
|
2329
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2330
|
+
* you may not use this file except in compliance with the License.
|
|
2331
|
+
* You may obtain a copy of the License at
|
|
2332
|
+
*
|
|
2333
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2334
|
+
*
|
|
2335
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2336
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2337
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2338
|
+
* See the License for the specific language governing permissions and
|
|
2339
|
+
* limitations under the License.
|
|
2340
|
+
*/
|
|
2341
|
+
class ProcessLinkComponent {
|
|
2342
|
+
constructor(processLinkService, stateService, modalService) {
|
|
2343
|
+
this.processLinkService = processLinkService;
|
|
2344
|
+
this.stateService = stateService;
|
|
2345
|
+
this.modalService = modalService;
|
|
2346
|
+
}
|
|
2347
|
+
openModal(params) {
|
|
2348
|
+
const activityType = params?.element?.activityListenerType;
|
|
2349
|
+
this.modalService.setModalData(params);
|
|
2350
|
+
if (activityType) {
|
|
2351
|
+
this.processLinkService
|
|
2352
|
+
.getProcessLink({
|
|
2353
|
+
activityId: params.element.id,
|
|
2354
|
+
processDefinitionId: params.processDefinitionId,
|
|
2355
|
+
})
|
|
2356
|
+
.pipe(switchMap(processLinks => {
|
|
2357
|
+
if (processLinks.length > 0) {
|
|
2358
|
+
return of({ processLink: processLinks[0] });
|
|
2359
|
+
}
|
|
2360
|
+
return this.processLinkService.getProcessLinkCandidates(activityType);
|
|
2361
|
+
}), tap(res => {
|
|
2362
|
+
const result = res;
|
|
2363
|
+
const processLink = result.processLink;
|
|
2364
|
+
this.stateService.setModalParams(params);
|
|
2365
|
+
this.stateService.setElementName(params?.element?.name);
|
|
2366
|
+
if (processLink) {
|
|
2367
|
+
this.stateService.selectProcessLink(processLink);
|
|
2368
|
+
}
|
|
2369
|
+
else {
|
|
2370
|
+
this.stateService.setAvailableProcessLinkTypes(result);
|
|
2371
|
+
}
|
|
2372
|
+
if (result?.length > 0 || processLink) {
|
|
2373
|
+
this.stateService.showModal();
|
|
2374
|
+
}
|
|
2375
|
+
}))
|
|
2376
|
+
.subscribe();
|
|
2377
|
+
}
|
|
2378
|
+
}
|
|
2379
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkComponent, deps: [{ token: ProcessLinkService }, { token: ProcessLinkStateService }, { token: i2$2.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2380
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: ProcessLinkComponent, isStandalone: false, selector: "valtimo-process-link", providers: [ProcessLinkStateService, ProcessLinkStepService, ProcessLinkButtonService], 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=\"main-content\">\n <div class=\"container-fluid\">\n <valtimo-form-link-process-diagram\n (bpmnElementModalOpen)=\"openModal($event)\"\n ></valtimo-form-link-process-diagram>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\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: FormLinkProcessDiagramComponent, selector: "valtimo-form-link-process-diagram", outputs: ["bpmnElementModalOpen", "bpmnElementModalClose"] }, { kind: "component", type: ProcessLinkModalComponent, selector: "valtimo-process-link-modal" }] }); }
|
|
2381
|
+
}
|
|
2382
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkComponent, decorators: [{
|
|
2383
|
+
type: Component,
|
|
2384
|
+
args: [{ standalone: false, selector: 'valtimo-process-link', providers: [ProcessLinkStateService, ProcessLinkStepService, ProcessLinkButtonService], 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=\"main-content\">\n <div class=\"container-fluid\">\n <valtimo-form-link-process-diagram\n (bpmnElementModalOpen)=\"openModal($event)\"\n ></valtimo-form-link-process-diagram>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\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"] }]
|
|
2385
|
+
}], ctorParameters: () => [{ type: ProcessLinkService }, { type: ProcessLinkStateService }, { type: i2$2.ModalService }] });
|
|
2386
|
+
|
|
2387
|
+
/*
|
|
2388
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2389
|
+
*
|
|
2390
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2391
|
+
* you may not use this file except in compliance with the License.
|
|
2392
|
+
* You may obtain a copy of the License at
|
|
2393
|
+
*
|
|
2394
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2395
|
+
*
|
|
2396
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2397
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2398
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2399
|
+
* See the License for the specific language governing permissions and
|
|
2400
|
+
* limitations under the License.
|
|
2401
|
+
*/
|
|
2402
|
+
const routes = [
|
|
2403
|
+
{
|
|
2404
|
+
path: 'process-links',
|
|
2405
|
+
component: ProcessLinkComponent,
|
|
2406
|
+
canActivate: [AuthGuardService],
|
|
2407
|
+
data: { title: 'Process links', roles: [ROLE_ADMIN] },
|
|
2408
|
+
},
|
|
2409
|
+
];
|
|
2410
|
+
class ProcessLinkRoutingModule {
|
|
2411
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2412
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkRoutingModule, imports: [i3$1.RouterModule], exports: [RouterModule] }); }
|
|
2413
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
|
|
2414
|
+
}
|
|
2415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkRoutingModule, decorators: [{
|
|
2416
|
+
type: NgModule,
|
|
2417
|
+
args: [{
|
|
2418
|
+
imports: [RouterModule.forChild(routes)],
|
|
2419
|
+
exports: [RouterModule],
|
|
2420
|
+
declarations: [],
|
|
2421
|
+
}]
|
|
2422
|
+
}] });
|
|
2423
|
+
|
|
2424
|
+
/*
|
|
2425
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2426
|
+
*
|
|
2427
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2428
|
+
* you may not use this file except in compliance with the License.
|
|
2429
|
+
* You may obtain a copy of the License at
|
|
2430
|
+
*
|
|
2431
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2432
|
+
*
|
|
2433
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2434
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2435
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2436
|
+
* See the License for the specific language governing permissions and
|
|
2437
|
+
* limitations under the License.
|
|
2438
|
+
*/
|
|
2439
|
+
|
|
2440
|
+
/*
|
|
2441
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2442
|
+
*
|
|
2443
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2444
|
+
* you may not use this file except in compliance with the License.
|
|
2445
|
+
* You may obtain a copy of the License at
|
|
2446
|
+
*
|
|
2447
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2448
|
+
*
|
|
2449
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2450
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2451
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2452
|
+
* See the License for the specific language governing permissions and
|
|
2453
|
+
* limitations under the License.
|
|
2454
|
+
*/
|
|
2455
|
+
|
|
2456
|
+
/*
|
|
2457
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2458
|
+
*
|
|
2459
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2460
|
+
* you may not use this file except in compliance with the License.
|
|
2461
|
+
* You may obtain a copy of the License at
|
|
2462
|
+
*
|
|
2463
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2464
|
+
*
|
|
2465
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2466
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2467
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2468
|
+
* See the License for the specific language governing permissions and
|
|
2469
|
+
* limitations under the License.
|
|
2470
|
+
*/
|
|
2471
|
+
class FormFlowConfigurationContainerComponent {
|
|
2472
|
+
set disabled(disabledValue) {
|
|
2473
|
+
this._disabled$.next(disabledValue);
|
|
2474
|
+
}
|
|
2475
|
+
set componentId(value) {
|
|
2476
|
+
this._componentId$.next(value);
|
|
2477
|
+
}
|
|
2478
|
+
set formFlowInstanceId(value) {
|
|
2479
|
+
this._formFlowInstanceId$.next(value);
|
|
2480
|
+
}
|
|
2481
|
+
constructor(formFlowComponentService) {
|
|
2482
|
+
this.formFlowComponentService = formFlowComponentService;
|
|
2483
|
+
this.changeEvent = new EventEmitter();
|
|
2484
|
+
this.submitEvent = new EventEmitter();
|
|
2485
|
+
this._subscriptions = new Subscription();
|
|
2486
|
+
this._componentRef$ = new BehaviorSubject(undefined);
|
|
2487
|
+
this._disabled$ = new BehaviorSubject(false);
|
|
2488
|
+
this._componentId$ = new BehaviorSubject('');
|
|
2489
|
+
this._formFlowInstanceId$ = new BehaviorSubject('');
|
|
2490
|
+
}
|
|
2491
|
+
ngOnInit() {
|
|
2492
|
+
this.openConfigurationComponentSubscription();
|
|
2493
|
+
this.openComponentInstanceSubscription();
|
|
2494
|
+
this.openDisabledSubscription();
|
|
2495
|
+
}
|
|
2496
|
+
ngOnDestroy() {
|
|
2497
|
+
this._subscriptions.unsubscribe();
|
|
2498
|
+
}
|
|
2499
|
+
openConfigurationComponentSubscription() {
|
|
2500
|
+
this._subscriptions.add(combineLatest([this.formFlowComponentService.supportedComponents$, this._componentId$])
|
|
2501
|
+
.pipe(tap$1(([supportedComponents, componentId]) => {
|
|
2502
|
+
const configurationComponent = supportedComponents.find(component => component.id === componentId);
|
|
2503
|
+
this._dynamicContainer.clear();
|
|
2504
|
+
if (configurationComponent) {
|
|
2505
|
+
const componentRef = this._dynamicContainer.createComponent(configurationComponent.component);
|
|
2506
|
+
this._componentRef$.next(componentRef);
|
|
2507
|
+
}
|
|
2508
|
+
}))
|
|
2509
|
+
.subscribe());
|
|
2510
|
+
}
|
|
2511
|
+
openComponentInstanceSubscription() {
|
|
2512
|
+
this._subscriptions.add(combineLatest([this._componentRef$, this._formFlowInstanceId$]).subscribe(([ref, formFlowInstanceId]) => {
|
|
2513
|
+
const instance = ref?.instance;
|
|
2514
|
+
this._submitSubscription?.unsubscribe();
|
|
2515
|
+
this._changeSubscription?.unsubscribe();
|
|
2516
|
+
if (instance) {
|
|
2517
|
+
if (formFlowInstanceId) {
|
|
2518
|
+
instance.formFlowInstanceId = formFlowInstanceId;
|
|
2519
|
+
}
|
|
2520
|
+
this._changeSubscription = instance.changeEvent.subscribe(change => {
|
|
2521
|
+
this.changeEvent.emit(change);
|
|
2522
|
+
});
|
|
2523
|
+
this._submitSubscription = instance.submitEvent.subscribe(submit => {
|
|
2524
|
+
this.submitEvent.emit(submit);
|
|
2525
|
+
});
|
|
2526
|
+
}
|
|
2527
|
+
}));
|
|
2528
|
+
}
|
|
2529
|
+
openDisabledSubscription() {
|
|
2530
|
+
this._subscriptions.add(combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {
|
|
2531
|
+
const instance = ref?.instance;
|
|
2532
|
+
if (instance) {
|
|
2533
|
+
instance.disabled = disabled;
|
|
2534
|
+
}
|
|
2535
|
+
}));
|
|
2536
|
+
}
|
|
2537
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowConfigurationContainerComponent, deps: [{ token: FormFlowComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: FormFlowConfigurationContainerComponent, isStandalone: false, selector: "valtimo-form-flow-configuration-container", inputs: { disabled: "disabled", componentId: "componentId", formFlowInstanceId: "formFlowInstanceId" }, outputs: { changeEvent: "changeEvent", submitEvent: "submitEvent" }, viewQueries: [{ propertyName: "_dynamicContainer", first: true, predicate: ["formFlowConfigurationComponent"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-template #formFlowConfigurationComponent></ng-template>\n" }); }
|
|
2539
|
+
}
|
|
2540
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowConfigurationContainerComponent, decorators: [{
|
|
2541
|
+
type: Component,
|
|
2542
|
+
args: [{ standalone: false, selector: 'valtimo-form-flow-configuration-container', 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-template #formFlowConfigurationComponent></ng-template>\n" }]
|
|
2543
|
+
}], ctorParameters: () => [{ type: FormFlowComponentService }], propDecorators: { _dynamicContainer: [{
|
|
2544
|
+
type: ViewChild,
|
|
2545
|
+
args: ['formFlowConfigurationComponent', { static: true, read: ViewContainerRef }]
|
|
2546
|
+
}], disabled: [{
|
|
2547
|
+
type: Input
|
|
2548
|
+
}], componentId: [{
|
|
2549
|
+
type: Input
|
|
2550
|
+
}], formFlowInstanceId: [{
|
|
2551
|
+
type: Input
|
|
2552
|
+
}], changeEvent: [{
|
|
2553
|
+
type: Output
|
|
2554
|
+
}], submitEvent: [{
|
|
2555
|
+
type: Output
|
|
2556
|
+
}] } });
|
|
2557
|
+
|
|
2558
|
+
/*
|
|
2559
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2560
|
+
*
|
|
2561
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2562
|
+
* you may not use this file except in compliance with the License.
|
|
2563
|
+
* You may obtain a copy of the License at
|
|
2564
|
+
*
|
|
2565
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2566
|
+
*
|
|
2567
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2568
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2569
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2570
|
+
* See the License for the specific language governing permissions and
|
|
2571
|
+
* limitations under the License.
|
|
2572
|
+
*/
|
|
2573
|
+
class FormFlowComponent {
|
|
2574
|
+
set formFlowInstanceId(value) {
|
|
2575
|
+
this.formFlowInstanceId$.next(value);
|
|
2576
|
+
if (value)
|
|
2577
|
+
this.getBreadcrumbs();
|
|
2578
|
+
}
|
|
2579
|
+
constructor(formFlowService, modalService, translateService, configService) {
|
|
2580
|
+
this.formFlowService = formFlowService;
|
|
2581
|
+
this.modalService = modalService;
|
|
2582
|
+
this.translateService = translateService;
|
|
2583
|
+
this.configService = configService;
|
|
2584
|
+
this.formIoFormData = new BehaviorSubject(null);
|
|
2585
|
+
this.formFlowComplete = new EventEmitter();
|
|
2586
|
+
this.formFlowChange = new EventEmitter();
|
|
2587
|
+
this.breadcrumbs$ = new BehaviorSubject([]);
|
|
2588
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
2589
|
+
this.formFlowStepType$ = new BehaviorSubject(null);
|
|
2590
|
+
this.FormFlowCustomComponentId$ = new BehaviorSubject('');
|
|
2591
|
+
this.currentStepIndex$ = new BehaviorSubject(0);
|
|
2592
|
+
this.enableFormFlowBreadcrumbs$ = this.configService.getFeatureToggleObservable('enableFormFlowBreadcrumbs');
|
|
2593
|
+
this.formFlowInstanceId$ = new BehaviorSubject('');
|
|
2594
|
+
this.formFlowStepInstanceId = null;
|
|
2595
|
+
this.formioOptions = new FormioOptionsImpl();
|
|
2596
|
+
this.formioOptions.disableAlerts = true;
|
|
2597
|
+
}
|
|
2598
|
+
ngOnInit() {
|
|
2599
|
+
this.getFormFlowStep();
|
|
2600
|
+
}
|
|
2601
|
+
ngOnDestroy() {
|
|
2602
|
+
this._breadcrumbsSubscription?.unsubscribe();
|
|
2603
|
+
}
|
|
2604
|
+
onChange(event) {
|
|
2605
|
+
if (!event?.data)
|
|
2606
|
+
return;
|
|
2607
|
+
this.formIoFormData.next(event.data);
|
|
2608
|
+
this.formFlowChange.emit();
|
|
2609
|
+
}
|
|
2610
|
+
onSubmit(submission) {
|
|
2611
|
+
this.disable();
|
|
2612
|
+
if (submission.data) {
|
|
2613
|
+
this.formIoFormData.next(submission.data);
|
|
2614
|
+
}
|
|
2615
|
+
if (submission.data.submit &&
|
|
2616
|
+
this.formFlowInstanceId$.getValue() &&
|
|
2617
|
+
this.formFlowStepInstanceId) {
|
|
2618
|
+
this.formFlowService
|
|
2619
|
+
.submitStep(this.formFlowInstanceId$.getValue(), this.formFlowStepInstanceId, this.formIoFormData.getValue())
|
|
2620
|
+
.subscribe({
|
|
2621
|
+
next: (result) => {
|
|
2622
|
+
this.handleFormFlowStep(result);
|
|
2623
|
+
},
|
|
2624
|
+
error: errors => {
|
|
2625
|
+
this.form?.showErrors(errors);
|
|
2626
|
+
this.enable();
|
|
2627
|
+
},
|
|
2628
|
+
});
|
|
2629
|
+
}
|
|
2630
|
+
else if (submission.data['back']) {
|
|
2631
|
+
this.back(submission.data);
|
|
2632
|
+
}
|
|
2633
|
+
}
|
|
2634
|
+
onEvent(submission) {
|
|
2635
|
+
if (submission.data['back'] || submission.type == 'back') {
|
|
2636
|
+
this.back(submission.data);
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
saveData() {
|
|
2640
|
+
const formIoFormDataValue = this.formIoFormData.getValue();
|
|
2641
|
+
if (formIoFormDataValue && this.formFlowInstanceId$.getValue()) {
|
|
2642
|
+
this.formFlowService.save(this.formFlowInstanceId$.getValue(), formIoFormDataValue).subscribe(() => null, errors => this.form.showErrors(errors));
|
|
2643
|
+
}
|
|
2644
|
+
}
|
|
2645
|
+
onStepSelected(event) {
|
|
2646
|
+
const submissionData = this.formIoFormData.getValue().data;
|
|
2647
|
+
this.disable();
|
|
2648
|
+
this.currentStepIndex$.next(event.index);
|
|
2649
|
+
if (!this.formFlowInstanceId$.getValue() || !this.formFlowStepInstanceId)
|
|
2650
|
+
return;
|
|
2651
|
+
this.formFlowService
|
|
2652
|
+
.navigateToStep(this.formFlowInstanceId$.getValue(), this.formFlowStepInstanceId, event.step.stepInstanceId, submissionData)
|
|
2653
|
+
.subscribe({
|
|
2654
|
+
next: (result) => this.handleFormFlowStep(result),
|
|
2655
|
+
error: errors => {
|
|
2656
|
+
this.form?.showErrors(errors);
|
|
2657
|
+
this.enable();
|
|
2658
|
+
},
|
|
2659
|
+
});
|
|
2660
|
+
}
|
|
2661
|
+
getBreadcrumbs() {
|
|
2662
|
+
if (!this.formFlowInstanceId$.getValue() ||
|
|
2663
|
+
!this.configService.getFeatureToggle('enableFormFlowBreadcrumbs')) {
|
|
2664
|
+
return;
|
|
2665
|
+
}
|
|
2666
|
+
this._breadcrumbsSubscription?.unsubscribe();
|
|
2667
|
+
this._breadcrumbsSubscription = combineLatest([
|
|
2668
|
+
this.formFlowService.getBreadcrumbs(this.formFlowInstanceId$.getValue()),
|
|
2669
|
+
this.translateService.stream('key'),
|
|
2670
|
+
])
|
|
2671
|
+
.pipe(map(([breadcrumbs]) => breadcrumbs))
|
|
2672
|
+
.subscribe(breadcrumbs => {
|
|
2673
|
+
const classElement = document.getElementsByClassName('cds--progress-step--current');
|
|
2674
|
+
this.currentStepIndex$.next(breadcrumbs.currentStepIndex);
|
|
2675
|
+
this.breadcrumbs$.next(breadcrumbs.breadcrumbs.map(breadcrumb => ({
|
|
2676
|
+
label: breadcrumb.title ??
|
|
2677
|
+
this.translateService.instant(`formFlow.step.${breadcrumb.key}.title`) ??
|
|
2678
|
+
breadcrumb.key,
|
|
2679
|
+
disabled: breadcrumb.stepInstanceId === null,
|
|
2680
|
+
complete: breadcrumb.completed,
|
|
2681
|
+
stepInstanceId: breadcrumb.stepInstanceId,
|
|
2682
|
+
})));
|
|
2683
|
+
if (classElement.length > 0) {
|
|
2684
|
+
classElement[0].scrollIntoView({ behavior: 'smooth', inline: 'center' });
|
|
2685
|
+
}
|
|
2686
|
+
});
|
|
2687
|
+
}
|
|
2688
|
+
getFormFlowStep() {
|
|
2689
|
+
if (!this.formFlowInstanceId$.getValue())
|
|
2690
|
+
return;
|
|
2691
|
+
this.formFlowService
|
|
2692
|
+
.getFormFlowStep(this.formFlowInstanceId$.getValue())
|
|
2693
|
+
.subscribe((result) => {
|
|
2694
|
+
this.handleFormFlowStep(result);
|
|
2695
|
+
});
|
|
2696
|
+
}
|
|
2697
|
+
back(submissionData) {
|
|
2698
|
+
if (!this.formFlowInstanceId$.getValue())
|
|
2699
|
+
return;
|
|
2700
|
+
this.formFlowService.back(this.formFlowInstanceId$.getValue(), submissionData).subscribe({
|
|
2701
|
+
next: (result) => this.handleFormFlowStep(result),
|
|
2702
|
+
error: errors => {
|
|
2703
|
+
this.form?.showErrors(errors);
|
|
2704
|
+
this.enable();
|
|
2705
|
+
},
|
|
2706
|
+
});
|
|
2707
|
+
}
|
|
2708
|
+
handleFormFlowStep(formFlowInstance) {
|
|
2709
|
+
if (formFlowInstance.step === null) {
|
|
2710
|
+
this.formFlowStepType$.next(null);
|
|
2711
|
+
this.FormFlowCustomComponentId$.next('');
|
|
2712
|
+
this.formFlowInstanceId$.next(null);
|
|
2713
|
+
this.formFlowStepInstanceId = null;
|
|
2714
|
+
this.formFlowComplete.emit(null);
|
|
2715
|
+
}
|
|
2716
|
+
else {
|
|
2717
|
+
this.getBreadcrumbs();
|
|
2718
|
+
this.modalService.scrollToTop();
|
|
2719
|
+
this.formFlowStepType$.next(formFlowInstance.step?.type ?? null);
|
|
2720
|
+
this.FormFlowCustomComponentId$.next(formFlowInstance?.step?.typeProperties?.id || '');
|
|
2721
|
+
this.formFlowInstanceId$.next(formFlowInstance.id);
|
|
2722
|
+
this.formFlowStepInstanceId = formFlowInstance.step?.id ?? null;
|
|
2723
|
+
this.formDefinition = formFlowInstance.step?.typeProperties.definition;
|
|
2724
|
+
}
|
|
2725
|
+
this.enable();
|
|
2726
|
+
}
|
|
2727
|
+
disable() {
|
|
2728
|
+
this.disabled$.next(true);
|
|
2729
|
+
}
|
|
2730
|
+
enable() {
|
|
2731
|
+
this.disabled$.next(false);
|
|
2732
|
+
}
|
|
2733
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowComponent, deps: [{ token: FormFlowService }, { token: i2$2.ValtimoModalService }, { token: i2$1.TranslateService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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.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$2.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "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.AsyncPipe, name: "async" }] }); }
|
|
2735
|
+
}
|
|
2736
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FormFlowComponent, decorators: [{
|
|
2737
|
+
type: Component,
|
|
2738
|
+
args: [{ standalone: false, selector: 'valtimo-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<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"] }]
|
|
2739
|
+
}], ctorParameters: () => [{ type: FormFlowService }, { type: i2$2.ValtimoModalService }, { type: i2$1.TranslateService }, { type: i2.ConfigService }], propDecorators: { form: [{
|
|
2740
|
+
type: ViewChild,
|
|
2741
|
+
args: ['form']
|
|
2742
|
+
}], formIoFormData: [{
|
|
2743
|
+
type: Input
|
|
2744
|
+
}], formFlowInstanceId: [{
|
|
2745
|
+
type: Input
|
|
2746
|
+
}], formFlowComplete: [{
|
|
2747
|
+
type: Output
|
|
2748
|
+
}], formFlowChange: [{
|
|
2749
|
+
type: Output
|
|
2750
|
+
}] } });
|
|
2751
|
+
|
|
2752
|
+
/*
|
|
2753
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2754
|
+
*
|
|
2755
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2756
|
+
* you may not use this file except in compliance with the License.
|
|
2757
|
+
* You may obtain a copy of the License at
|
|
2758
|
+
*
|
|
2759
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2760
|
+
*
|
|
2761
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2762
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2763
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2764
|
+
* See the License for the specific language governing permissions and
|
|
2765
|
+
* limitations under the License.
|
|
2766
|
+
*/
|
|
2767
|
+
|
|
2768
|
+
/*
|
|
2769
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2770
|
+
*
|
|
2771
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2772
|
+
* you may not use this file except in compliance with the License.
|
|
2773
|
+
* You may obtain a copy of the License at
|
|
2774
|
+
*
|
|
2775
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2776
|
+
*
|
|
2777
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2778
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2779
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2780
|
+
* See the License for the specific language governing permissions and
|
|
2781
|
+
* limitations under the License.
|
|
2782
|
+
*/
|
|
2783
|
+
|
|
2784
|
+
/*
|
|
2785
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2786
|
+
*
|
|
2787
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2788
|
+
* you may not use this file except in compliance with the License.
|
|
2789
|
+
* You may obtain a copy of the License at
|
|
2790
|
+
*
|
|
2791
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2792
|
+
*
|
|
2793
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2794
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2795
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2796
|
+
* See the License for the specific language governing permissions and
|
|
2797
|
+
* limitations under the License.
|
|
2798
|
+
*/
|
|
2799
|
+
class ProcessLinkModule {
|
|
2800
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2801
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkModule, declarations: [ProcessLinkComponent,
|
|
2802
|
+
FormLinkProcessDiagramComponent,
|
|
2803
|
+
SelectPluginConfigurationComponent,
|
|
2804
|
+
SelectPluginActionComponent,
|
|
2805
|
+
PluginActionConfigurationComponent,
|
|
2806
|
+
ProcessLinkModalComponent,
|
|
2807
|
+
ChooseProcessLinkTypeComponent,
|
|
2808
|
+
SelectFormComponent,
|
|
2809
|
+
FormFlowComponent,
|
|
2810
|
+
SelectFormFlowComponent,
|
|
2811
|
+
FormFlowConfigurationContainerComponent,
|
|
2812
|
+
FormDisplayConfigurationComponent,
|
|
2813
|
+
SelectUIComponentComponent,
|
|
2814
|
+
ImportPluginConfigurationComponent], imports: [CommonModule,
|
|
2815
|
+
ProcessLinkRoutingModule,
|
|
2816
|
+
FormsModule,
|
|
2817
|
+
ReactiveFormsModule,
|
|
2818
|
+
ModalModule,
|
|
2819
|
+
SearchableDropdownSelectModule,
|
|
2820
|
+
TranslateModule,
|
|
2821
|
+
StepperModule,
|
|
2822
|
+
VModalModule,
|
|
2823
|
+
PluginTranslatePipeModule,
|
|
2824
|
+
ParagraphModule,
|
|
2825
|
+
PluginConfigurationContainerModule,
|
|
2826
|
+
ModalModule$1,
|
|
2827
|
+
ProgressIndicatorModule,
|
|
2828
|
+
ButtonModule,
|
|
2829
|
+
IconModule,
|
|
2830
|
+
TooltipModule,
|
|
2831
|
+
ComboBoxModule,
|
|
2832
|
+
InputModule,
|
|
2833
|
+
TooltipIconModule,
|
|
2834
|
+
LoadingModule,
|
|
2835
|
+
FormIoModule,
|
|
2836
|
+
ValtimoCdsModalDirective,
|
|
2837
|
+
StructuredListModule,
|
|
2838
|
+
TilesModule,
|
|
2839
|
+
RenderInPageHeaderDirective,
|
|
2840
|
+
SelectModule,
|
|
2841
|
+
ToggleModule,
|
|
2842
|
+
CarbonMultiInputModule,
|
|
2843
|
+
LayerModule,
|
|
2844
|
+
ToggletipModule,
|
|
2845
|
+
ComboBoxModule,
|
|
2846
|
+
TranslateModule,
|
|
2847
|
+
LayerModule,
|
|
2848
|
+
ToggletipModule,
|
|
2849
|
+
RemoveClassnamesDirective,
|
|
2850
|
+
ReactiveFormsModule], exports: [ProcessLinkComponent,
|
|
2851
|
+
SelectPluginConfigurationComponent,
|
|
2852
|
+
SelectPluginActionComponent,
|
|
2853
|
+
PluginActionConfigurationComponent,
|
|
2854
|
+
ProcessLinkModalComponent,
|
|
2855
|
+
FormFlowComponent] }); }
|
|
2856
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkModule, providers: [UrlValidatorService, UrlResolverService], imports: [CommonModule,
|
|
2857
|
+
ProcessLinkRoutingModule,
|
|
2858
|
+
FormsModule,
|
|
2859
|
+
ReactiveFormsModule,
|
|
2860
|
+
ModalModule,
|
|
2861
|
+
SearchableDropdownSelectModule,
|
|
2862
|
+
TranslateModule,
|
|
2863
|
+
StepperModule,
|
|
2864
|
+
VModalModule,
|
|
2865
|
+
PluginTranslatePipeModule,
|
|
2866
|
+
ParagraphModule,
|
|
2867
|
+
PluginConfigurationContainerModule,
|
|
2868
|
+
ModalModule$1,
|
|
2869
|
+
ProgressIndicatorModule,
|
|
2870
|
+
ButtonModule,
|
|
2871
|
+
IconModule,
|
|
2872
|
+
TooltipModule,
|
|
2873
|
+
ComboBoxModule,
|
|
2874
|
+
InputModule,
|
|
2875
|
+
TooltipIconModule,
|
|
2876
|
+
LoadingModule,
|
|
2877
|
+
FormIoModule,
|
|
2878
|
+
StructuredListModule,
|
|
2879
|
+
TilesModule,
|
|
2880
|
+
SelectModule,
|
|
2881
|
+
ToggleModule,
|
|
2882
|
+
CarbonMultiInputModule,
|
|
2883
|
+
LayerModule,
|
|
2884
|
+
ToggletipModule,
|
|
2885
|
+
ComboBoxModule,
|
|
2886
|
+
TranslateModule,
|
|
2887
|
+
LayerModule,
|
|
2888
|
+
ToggletipModule,
|
|
2889
|
+
ReactiveFormsModule] }); }
|
|
2890
|
+
}
|
|
2891
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessLinkModule, decorators: [{
|
|
2892
|
+
type: NgModule,
|
|
2893
|
+
args: [{
|
|
2894
|
+
declarations: [
|
|
2895
|
+
ProcessLinkComponent,
|
|
2896
|
+
FormLinkProcessDiagramComponent,
|
|
2897
|
+
SelectPluginConfigurationComponent,
|
|
2898
|
+
SelectPluginActionComponent,
|
|
2899
|
+
PluginActionConfigurationComponent,
|
|
2900
|
+
ProcessLinkModalComponent,
|
|
2901
|
+
ChooseProcessLinkTypeComponent,
|
|
2902
|
+
SelectFormComponent,
|
|
2903
|
+
FormFlowComponent,
|
|
2904
|
+
SelectFormFlowComponent,
|
|
2905
|
+
FormFlowConfigurationContainerComponent,
|
|
2906
|
+
FormDisplayConfigurationComponent,
|
|
2907
|
+
SelectUIComponentComponent,
|
|
2908
|
+
ImportPluginConfigurationComponent,
|
|
2909
|
+
],
|
|
2910
|
+
imports: [
|
|
2911
|
+
CommonModule,
|
|
2912
|
+
ProcessLinkRoutingModule,
|
|
2913
|
+
FormsModule,
|
|
2914
|
+
ReactiveFormsModule,
|
|
2915
|
+
ModalModule,
|
|
2916
|
+
SearchableDropdownSelectModule,
|
|
2917
|
+
TranslateModule,
|
|
2918
|
+
StepperModule,
|
|
2919
|
+
VModalModule,
|
|
2920
|
+
PluginTranslatePipeModule,
|
|
2921
|
+
ParagraphModule,
|
|
2922
|
+
PluginConfigurationContainerModule,
|
|
2923
|
+
ModalModule$1,
|
|
2924
|
+
ProgressIndicatorModule,
|
|
2925
|
+
ButtonModule,
|
|
2926
|
+
IconModule,
|
|
2927
|
+
TooltipModule,
|
|
2928
|
+
ComboBoxModule,
|
|
2929
|
+
InputModule,
|
|
2930
|
+
TooltipIconModule,
|
|
2931
|
+
LoadingModule,
|
|
2932
|
+
FormIoModule,
|
|
2933
|
+
ValtimoCdsModalDirective,
|
|
2934
|
+
StructuredListModule,
|
|
2935
|
+
TilesModule,
|
|
2936
|
+
RenderInPageHeaderDirective,
|
|
2937
|
+
SelectModule,
|
|
2938
|
+
ToggleModule,
|
|
2939
|
+
CarbonMultiInputModule,
|
|
2940
|
+
LayerModule,
|
|
2941
|
+
ToggletipModule,
|
|
2942
|
+
ComboBoxModule,
|
|
2943
|
+
TranslateModule,
|
|
2944
|
+
LayerModule,
|
|
2945
|
+
ToggletipModule,
|
|
2946
|
+
RemoveClassnamesDirective,
|
|
2947
|
+
ReactiveFormsModule,
|
|
2948
|
+
],
|
|
2949
|
+
exports: [
|
|
2950
|
+
ProcessLinkComponent,
|
|
2951
|
+
SelectPluginConfigurationComponent,
|
|
2952
|
+
SelectPluginActionComponent,
|
|
2953
|
+
PluginActionConfigurationComponent,
|
|
2954
|
+
ProcessLinkModalComponent,
|
|
2955
|
+
FormFlowComponent,
|
|
2956
|
+
],
|
|
2957
|
+
providers: [UrlValidatorService, UrlResolverService],
|
|
2958
|
+
}]
|
|
2959
|
+
}] });
|
|
2960
|
+
|
|
2961
|
+
/*
|
|
2962
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2963
|
+
*
|
|
2964
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2965
|
+
* you may not use this file except in compliance with the License.
|
|
2966
|
+
* You may obtain a copy of the License at
|
|
2967
|
+
*
|
|
2968
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2969
|
+
*
|
|
2970
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2971
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2972
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2973
|
+
* See the License for the specific language governing permissions and
|
|
2974
|
+
* limitations under the License.
|
|
2975
|
+
*/
|
|
2976
|
+
/*
|
|
2977
|
+
* Public API Surface of process-link
|
|
2978
|
+
*/
|
|
2979
|
+
|
|
2980
|
+
/**
|
|
2981
|
+
* Generated bundle index. Do not edit.
|
|
2982
|
+
*/
|
|
2983
|
+
|
|
2984
|
+
export { ChooseProcessLinkTypeComponent, FORM_CUSTOM_COMPONENT_TOKEN, FORM_FLOW_COMPONENT_TOKEN, FormFlowComponent, FormFlowComponentService, FormFlowService, PluginActionConfigurationComponent, PluginStateService, ProcessLinkButtonService, ProcessLinkComponent, ProcessLinkEditMode, ProcessLinkModalComponent, ProcessLinkModule, ProcessLinkService, ProcessLinkStateService, ProcessLinkStepService, SelectPluginActionComponent, SelectPluginConfigurationComponent, UrlResolverService, UrlValidatorService, formSizeToCarbonModalSizeMap };
|
|
2985
|
+
//# sourceMappingURL=valtimo-process-link.mjs.map
|