@valtimo/process-link 13.15.0 → 13.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/valtimo-process-link.mjs +10 -3
- package/fesm2022/valtimo-process-link.mjs.map +1 -1
- package/lib/components/select-form/select-form.component.d.ts +2 -1
- package/lib/components/select-form/select-form.component.d.ts.map +1 -1
- package/lib/constants/process.link.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-process-link.mjs","sources":["../../../../projects/valtimo/process-link/src/lib/services/process-link-building-block-api.service.ts","../../../../projects/valtimo/process-link/src/lib/services/building-block-state.service.ts","../../../../projects/valtimo/process-link/src/lib/services/form-flow.service.ts","../../../../projects/valtimo/process-link/src/lib/services/plugin-state.service.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link.service.ts","../../../../projects/valtimo/process-link/src/lib/constants/injection-tokens.ts","../../../../projects/valtimo/process-link/src/lib/constants/process.link.ts","../../../../projects/valtimo/process-link/src/lib/constants/index.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link-button.service.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link-step.service.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link-state.service.ts","../../../../projects/valtimo/process-link/src/lib/services/form-flow-component.service.ts","../../../../projects/valtimo/process-link/src/lib/services/url-resolver.service.ts","../../../../projects/valtimo/process-link/src/lib/services/url-validator.service.ts","../../../../projects/valtimo/process-link/src/lib/services/index.ts","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-configuration/select-plugin-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-configuration/select-plugin-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-action/select-plugin-action.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-action/select-plugin-action.component.html","../../../../projects/valtimo/process-link/src/lib/components/import-plugin-configuration/import-plugin-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/import-plugin-configuration/import-plugin-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/plugin-action-configuration/plugin-action-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/plugin-action-configuration/plugin-action-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/form-link-process-diagram/form-link-process-diagram.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-link-process-diagram/form-link-process-diagram.component.html","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-mappings/configure-building-block-mappings.component.ts","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-mappings/configure-building-block-mappings.component.html","../../../../projects/valtimo/process-link/src/lib/components/choose-process-link-type/choose-process-link-type.component.ts","../../../../projects/valtimo/process-link/src/lib/components/choose-process-link-type/choose-process-link-type.component.html","../../../../projects/valtimo/process-link/src/lib/components/form-display-configuration/form-display-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-display-configuration/form-display-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-form/select-form.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-form/select-form.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-form-flow/select-form-flow.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-form-flow/select-form-flow.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-ui-component/select-ui-component.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-ui-component/select-ui-component.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-building-block/select-building-block.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-building-block/select-building-block.component.html","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-plugins/configure-building-block-plugins.component.ts","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-plugins/configure-building-block-plugins.component.html","../../../../projects/valtimo/process-link/src/lib/components/process-link-modal/process-link-modal.component.ts","../../../../projects/valtimo/process-link/src/lib/components/process-link-modal/process-link-modal.component.html","../../../../projects/valtimo/process-link/src/lib/components/process-link/process-link.component.ts","../../../../projects/valtimo/process-link/src/lib/components/process-link/process-link.component.html","../../../../projects/valtimo/process-link/src/lib/process-link-routing.module.ts","../../../../projects/valtimo/process-link/src/lib/components/choose-process-link-type/index.ts","../../../../projects/valtimo/process-link/src/lib/components/select-form/index.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.html","../../../../projects/valtimo/process-link/src/lib/components/form-flow/form-flow.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow/form-flow.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-form-flow/index.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow-configuration-container/index.ts","../../../../projects/valtimo/process-link/src/lib/process-link.module.ts","../../../../projects/valtimo/process-link/src/lib/models/form-link.model.ts","../../../../projects/valtimo/process-link/src/lib/models/form-flow.model.ts","../../../../projects/valtimo/process-link/src/lib/models/form-custom-component.model.ts","../../../../projects/valtimo/process-link/src/lib/models/building-block-field.model.ts","../../../../projects/valtimo/process-link/src/lib/models/plugin.model.ts","../../../../projects/valtimo/process-link/src/lib/models/index.ts","../../../../projects/valtimo/process-link/src/public-api.ts","../../../../projects/valtimo/process-link/src/valtimo-process-link.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n BuildingBlockDefinitionDto,\n BuildingBlockVersionDto,\n ConfigService,\n InterceptorSkip,\n Page,\n} from '@valtimo/shared';\nimport {BuildingBlockField, PluginsWithDependencies} from '../models';\nimport {catchError, Observable, of} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkBuildingBlockApiService extends BaseApiService {\n constructor(\n protected readonly configService: ConfigService,\n protected readonly httpClient: HttpClient\n ) {\n super(httpClient, configService);\n }\n\n public getVersionsForBuildingBlock(\n key: string,\n page: number = 0,\n size: number = 5,\n all: boolean = false\n ): Observable<Page<BuildingBlockVersionDto>> {\n const allParam: string = all ? 'all=true' : '';\n return this.httpClient.get<Page<BuildingBlockVersionDto>>(\n this.getApiUrl(\n `management/v1/building-block/${key}/version?page=${page}&size=${size}${allParam}`\n )\n );\n }\n\n public getPluginDefinitionsForBuildingBlock(\n key: string,\n versionTag: string\n ): Observable<PluginsWithDependencies> {\n return this.httpClient.get<PluginsWithDependencies>(\n this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/plugin`)\n );\n }\n\n public getFieldsForBuildingBlock(\n key: string,\n versionTag: string\n ): Observable<Array<BuildingBlockField>> {\n return this.httpClient.get<Array<BuildingBlockField>>(\n this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/fields`)\n );\n }\n\n public getBuildingBlockDefinitions(options?: {\n includeArtwork: boolean;\n }): Observable<BuildingBlockDefinitionDto[]> {\n return this.httpClient\n .get<BuildingBlockDefinitionDto[]>(this.getApiUrl('management/v1/building-block'), {\n params: options,\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n })\n .pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) return of([]);\n throw error;\n })\n );\n }\n\n public getMainProcessDefinitionKeyForBuildingBlock(\n key: string,\n versionTag: string\n ): Observable<string> {\n return this.httpClient.get<string>(\n this.getApiUrl(\n `management/v1/building-block/${key}/version/${versionTag}/process-definition/main/key`\n ),\n {\n responseType: 'text' as 'json',\n }\n );\n }\n\n public isBuildingBlockProcess(processDefinitionId: string): Observable<boolean> {\n return this.httpClient\n .get<boolean>(\n this.getApiUrl(\n `management/v1/building-block/process-definition/${processDefinitionId}/is-building-block`\n )\n )\n .pipe(catchError(() => of(false)));\n }\n\n public getBuildingBlockDefinition(\n key: string,\n versionTag: string\n ): Observable<BuildingBlockDefinitionDto | null> {\n return this.httpClient\n .get<BuildingBlockDefinitionDto>(\n this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}`),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n )\n .pipe(catchError(() => of(null)));\n }\n\n public getCaseDefinition(\n key: string,\n versionTag: string\n ): Observable<{name: string} | null> {\n return this.httpClient\n .get<{name: string}>(\n this.getApiUrl(`management/v1/case-definition/${key}/version/${versionTag}`),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n )\n .pipe(catchError(() => of(null)));\n }\n}\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\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription} from 'rxjs';\nimport {\n BuildingBlockField,\n BuildingBlockInputMapping,\n BuildingBlockOutputMapping,\n ProcessLink,\n} from '../models';\nimport {ProcessLinkBuildingBlockApiService} from './process-link-building-block-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BuildingBlockStateService implements OnDestroy {\n private readonly _definitionKey$ = new BehaviorSubject<string | null>(null);\n private readonly _definitionVersionTag$ = new BehaviorSubject<string | null>(null);\n private readonly _versions$ = new BehaviorSubject<Array<string>>([]);\n private readonly _requiredPluginKeys$ = new BehaviorSubject<Array<string>>([]);\n private readonly _pluginMappings$ = new BehaviorSubject<Record<string, string | null>>({});\n private readonly _buildingBlockFields$ = new BehaviorSubject<Array<BuildingBlockField>>([]);\n private readonly _inputMappings$ = new BehaviorSubject<Array<BuildingBlockInputMapping>>([]);\n private readonly _outputMappings$ = new BehaviorSubject<Array<BuildingBlockOutputMapping>>([]);\n private readonly _loadingRequirements$ = new BehaviorSubject<boolean>(false);\n private readonly _loadingFields$ = new BehaviorSubject<boolean>(false);\n private readonly _pluginDependencies$ = new BehaviorSubject<Array<string>>([]);\n private readonly _isNestedBuildingBlock$ = new BehaviorSubject<boolean>(false);\n\n private _versionSubscription?: Subscription;\n private _requirementsSubscription?: Subscription;\n private _fieldsSubscription?: Subscription;\n\n constructor(\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService\n ) {}\n\n public get definitionKey$(): Observable<string | null> {\n return this._definitionKey$.asObservable();\n }\n\n public get definitionVersionTag$(): Observable<string | null> {\n return this._definitionVersionTag$.asObservable();\n }\n\n public get versions$(): Observable<Array<string>> {\n return this._versions$.asObservable();\n }\n\n public get requiredPluginKeys$(): Observable<Array<string>> {\n return this._requiredPluginKeys$.asObservable();\n }\n\n public get pluginMappings$(): Observable<Record<string, string | null>> {\n return this._pluginMappings$.asObservable();\n }\n\n public get buildingBlockFields$(): Observable<Array<BuildingBlockField>> {\n return this._buildingBlockFields$.asObservable();\n }\n\n public get inputMappings$(): Observable<Array<BuildingBlockInputMapping>> {\n return this._inputMappings$.asObservable();\n }\n\n public get outputMappings$(): Observable<Array<BuildingBlockOutputMapping>> {\n return this._outputMappings$.asObservable();\n }\n\n public get requirementsLoading$(): Observable<boolean> {\n return this._loadingRequirements$.asObservable();\n }\n\n public get fieldsLoading$(): Observable<boolean> {\n return this._loadingFields$.asObservable();\n }\n\n public get pluginDependencies$(): Observable<Array<string>> {\n return this._pluginDependencies$.asObservable();\n }\n\n public get isNestedBuildingBlock$(): Observable<boolean> {\n return this._isNestedBuildingBlock$.asObservable();\n }\n\n public setIsNestedBuildingBlock(isNested: boolean): void {\n this._isNestedBuildingBlock$.next(isNested);\n }\n\n public get mappingsComplete$(): Observable<boolean> {\n return combineLatest([\n this.requiredPluginKeys$,\n this.pluginMappings$,\n this.definitionVersionTag$,\n this.isNestedBuildingBlock$,\n ]).pipe(\n map(\n ([keys, mappings, version, isNested]) =>\n !!version && (isNested || keys.every(key => !!mappings[key]))\n )\n );\n }\n\n public setDefinitionKey(key: string | null, initialVersionTag?: string): void {\n this._definitionKey$.next(key);\n this._definitionVersionTag$.next(null);\n this._versions$.next([]);\n this.clearPluginRequirements();\n this.clearMappings();\n this.clearFields();\n\n this._versionSubscription?.unsubscribe();\n if (!key) return;\n\n this._versionSubscription = this.processLinkBuildingBlockApiService\n .getVersionsForBuildingBlock(key)\n .subscribe({\n next: versions => {\n this._versions$.next(\n versions.content.map(version => {\n return version.versionTag;\n }) ?? []\n );\n if (initialVersionTag) {\n this.setDefinitionVersionTag(initialVersionTag, true);\n }\n },\n error: () => {\n this._versions$.next([]);\n },\n });\n }\n\n public setProcessLink(processLink: ProcessLink | undefined): void {\n if (!processLink) {\n this.reset();\n return;\n }\n\n if (processLink.processLinkType === 'building-block') {\n this.setDefinitionKey(\n processLink.buildingBlockDefinitionKey ?? null,\n processLink.buildingBlockDefinitionVersionTag ?? undefined\n );\n this.setPluginConfigurationMappings(\n processLink.pluginConfigurationMappings as Record<string, string>\n );\n this.setInputMappings(processLink.inputMappings ?? []);\n this.setOutputMappings(processLink.outputMappings ?? []);\n } else {\n this.reset();\n }\n }\n\n public setDefinitionVersionTag(\n versionTag: string | null,\n preserveMappings: boolean = false\n ): void {\n this._definitionVersionTag$.next(versionTag);\n this.clearPluginRequirements({preserveMappings});\n this.clearFields();\n this.clearMappings({preserveMappings});\n\n const key = this._definitionKey$.getValue();\n if (key && versionTag) {\n this.loadPluginRequirements(key, versionTag);\n this.loadFields(key, versionTag);\n }\n }\n\n public setPluginConfigurationMapping(\n pluginDefinitionKey: string,\n configurationId: string | null\n ): void {\n const current = this._pluginMappings$.getValue();\n this._pluginMappings$.next({\n ...current,\n [pluginDefinitionKey]: configurationId,\n });\n }\n\n public setPluginConfigurationMappings(mappings: Record<string, string> | undefined): void {\n const normalized: Record<string, string | null> = {};\n Object.entries(mappings ?? {}).forEach(([key, value]) => {\n normalized[key] = value;\n });\n this._pluginMappings$.next(normalized);\n }\n\n public setInputMappings(mappings: Array<BuildingBlockInputMapping>): void {\n this._inputMappings$.next(mappings ?? []);\n }\n\n public setOutputMappings(mappings: Array<BuildingBlockOutputMapping>): void {\n this._outputMappings$.next(mappings ?? []);\n }\n\n public getInputMappingsSnapshot(): Array<BuildingBlockInputMapping> {\n return [...this._inputMappings$.getValue()];\n }\n\n public getOutputMappingsSnapshot(): Array<BuildingBlockOutputMapping> {\n return [...this._outputMappings$.getValue()];\n }\n\n public getPluginConfigurationMappingsSnapshot(): Record<string, string | null> {\n return {...this._pluginMappings$.getValue()};\n }\n\n public getDefinitionSnapshot(): {key: string | null; versionTag: string | null} {\n return {\n key: this._definitionKey$.getValue(),\n versionTag: this._definitionVersionTag$.getValue(),\n };\n }\n\n public getBuildingBlockFieldsSnapshot(): Array<BuildingBlockField> {\n return [...this._buildingBlockFields$.getValue()];\n }\n\n public reset(): void {\n this._definitionKey$.next(null);\n this._definitionVersionTag$.next(null);\n this._versions$.next([]);\n this._pluginMappings$.next({});\n this._isNestedBuildingBlock$.next(false);\n this.clearFields();\n this.clearMappings();\n this.clearPluginRequirements();\n }\n\n public ngOnDestroy(): void {\n this._versionSubscription?.unsubscribe();\n this._requirementsSubscription?.unsubscribe();\n this._fieldsSubscription?.unsubscribe();\n }\n\n private loadPluginRequirements(key: string, versionTag: string): void {\n this._loadingRequirements$.next(true);\n this._requirementsSubscription?.unsubscribe();\n this._requirementsSubscription = this.processLinkBuildingBlockApiService\n .getPluginDefinitionsForBuildingBlock(key, versionTag)\n .subscribe({\n next: res => {\n const plugins = res?.plugins ?? [];\n const pluginKeys = plugins.map(plugin => plugin.pluginDefinitionKey).filter(Boolean);\n const dependencies: string[] = Array.from(\n new Set(plugins.flatMap(p => p.dependencies ?? []).map(d => d.key))\n );\n\n this.applyPluginKeys(pluginKeys ?? []);\n this._pluginDependencies$.next(dependencies);\n this._loadingRequirements$.next(false);\n },\n error: () => {\n this.applyPluginKeys([]);\n this._pluginDependencies$.next([]);\n this._loadingRequirements$.next(false);\n },\n });\n }\n\n private applyPluginKeys(pluginKeys: Array<string>): void {\n const currentMappings = this._pluginMappings$.getValue();\n const normalized: Record<string, string | null> = {};\n pluginKeys.forEach(key => {\n normalized[key] = currentMappings[key] ?? null;\n });\n this._requiredPluginKeys$.next(pluginKeys);\n this._pluginMappings$.next(normalized);\n }\n\n private loadFields(key: string, versionTag: string): void {\n this._loadingFields$.next(true);\n this._fieldsSubscription?.unsubscribe();\n this._fieldsSubscription = this.processLinkBuildingBlockApiService\n .getFieldsForBuildingBlock(key, versionTag)\n .subscribe({\n next: fields => {\n this._buildingBlockFields$.next(fields ?? []);\n this._loadingFields$.next(false);\n },\n error: () => {\n this._buildingBlockFields$.next([]);\n this._loadingFields$.next(false);\n },\n });\n }\n\n private clearPluginRequirements(options: {preserveMappings?: boolean} = {}): void {\n this._requirementsSubscription?.unsubscribe();\n this._requiredPluginKeys$.next([]);\n if (!options.preserveMappings) {\n this._pluginMappings$.next({});\n }\n this._loadingRequirements$.next(false);\n }\n\n private clearFields(): void {\n this._fieldsSubscription?.unsubscribe();\n this._buildingBlockFields$.next([]);\n this._loadingFields$.next(false);\n }\n\n private clearMappings(options: {preserveMappings?: boolean} = {}): void {\n if (options.preserveMappings) {\n return;\n }\n this._inputMappings$.next([]);\n this._outputMappings$.next([]);\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n FormFlowBreadcrumbs,\n FormFlowCreateRequest,\n FormFlowCreateResult,\n FormFlowDefinition,\n FormFlowInstance,\n} from '../models';\nimport {ConfigService, BaseApiService} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormFlowService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public createInstanceForNewProcess(\n processDefinitionKey: string,\n request: FormFlowCreateRequest\n ): Observable<FormFlowCreateResult> {\n return this.httpClient.post<FormFlowCreateResult>(\n this.getApiUrl(`v1/process-definition/${processDefinitionKey}/form-flow`),\n request\n );\n }\n\n public getFormFlowStep(formFlowInstanceId: string): Observable<FormFlowInstance> {\n return this.httpClient.get<FormFlowInstance>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}`)\n );\n }\n\n public submitStep(\n formFlowInstanceId: string,\n stepInstanceId: string,\n submissionData: any\n ): Observable<FormFlowInstance> {\n return this.httpClient.post<FormFlowInstance>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/step/instance/${stepInstanceId}`),\n submissionData\n );\n }\n\n public back(formFlowInstanceId: string, submissionData: any): Observable<FormFlowInstance> {\n return this.httpClient.post<FormFlowInstance>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/back`),\n submissionData\n );\n }\n\n public save(formFlowInstanceId: string, submissionData: any): Observable<null> {\n return this.httpClient.post<null>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/save`),\n submissionData\n );\n }\n\n public getBreadcrumbs(formFlowInstanceId: string): Observable<FormFlowBreadcrumbs> {\n return this.httpClient.get<FormFlowBreadcrumbs>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/breadcrumbs`)\n );\n }\n\n public navigateToStep(\n instanceId: string,\n currentStepInstanceId: string,\n targetStepInstanceId,\n submissionData: any\n ): Observable<FormFlowInstance> {\n return this.httpClient.post<FormFlowInstance>(\n this.getApiUrl(\n `v1/form-flow/instance/${instanceId}/step/instance/${currentStepInstanceId}/to/step/instance/${targetStepInstanceId}`\n ),\n submissionData\n );\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, of, Subject, switchMap} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\nimport {\n PluginConfiguration,\n PluginDefinition,\n PluginFunction,\n PluginManagementService,\n PluginService,\n} from '@valtimo/plugin';\nimport {ProcessLink} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PluginStateService {\n private readonly _selectedPluginDefinition$ = new BehaviorSubject<PluginDefinition>(undefined);\n private readonly _selectedPluginConfiguration$ = new BehaviorSubject<PluginConfiguration>(\n undefined\n );\n private readonly _selectedPluginFunction$ = new BehaviorSubject<PluginFunction>(undefined);\n private readonly _save$ = new Subject<null>();\n private readonly _selectedProcessLink$ = new BehaviorSubject<ProcessLink>(undefined);\n\n constructor(\n private readonly pluginManagementService: PluginManagementService,\n private readonly pluginService: PluginService\n ) {}\n\n get selectedPluginDefinition$(): Observable<PluginDefinition> {\n return this._selectedPluginDefinition$.asObservable();\n }\n\n get selectedPluginConfiguration$(): Observable<PluginConfiguration> {\n return this._selectedPluginConfiguration$.asObservable();\n }\n\n get selectedPluginFunction$(): Observable<PluginFunction> {\n return this._selectedPluginFunction$.asObservable();\n }\n\n get save$(): Observable<any> {\n return this._save$.asObservable();\n }\n\n get functionKey$(): Observable<string> {\n // Prioritize user-selected function, fall back to process link's saved action\n return this._selectedPluginFunction$.pipe(\n map(pluginFunction => pluginFunction?.key)\n );\n }\n\n get pluginDefinitionKey$(): Observable<string> {\n return this._selectedProcessLink$.pipe(\n switchMap(selectedProcesLink =>\n !selectedProcesLink\n ? combineLatest([\n this._selectedPluginConfiguration$,\n this._selectedPluginDefinition$,\n ]).pipe(\n map(\n ([configuration, definition]) =>\n configuration?.pluginDefinition.key || definition?.key\n )\n )\n : combineLatest([\n this._selectedProcessLink$,\n this.pluginService.pluginSpecifications$,\n ]).pipe(\n map(([processLink, pluginSpecifications]) => {\n if (processLink?.pluginDefinitionKey) {\n return processLink.pluginDefinitionKey;\n }\n const pluginSpecification = pluginSpecifications.find(specification => {\n const functionKeys =\n specification?.functionConfigurationComponents &&\n Object.keys(specification.functionConfigurationComponents);\n return functionKeys?.includes(processLink?.pluginActionDefinitionKey);\n });\n\n return pluginSpecification?.pluginId;\n })\n )\n )\n );\n }\n\n selectPluginDefinition(definition: PluginDefinition): void {\n this._selectedPluginDefinition$.next(definition);\n }\n\n selectPluginConfiguration(configuration: PluginConfiguration | undefined): void {\n this._selectedPluginConfiguration$.next(configuration);\n }\n\n selectPluginFunction(pluginFunction: PluginFunction): void {\n this._selectedPluginFunction$.next(pluginFunction);\n }\n\n selectProcessLink(processLink: ProcessLink): void {\n this._selectedProcessLink$.next(processLink);\n\n // When editing a plugin process link, populate the plugin definition\n if (processLink?.processLinkType === 'plugin') {\n this.loadPluginDefinitionForProcessLink(processLink);\n }\n }\n\n private loadPluginDefinitionForProcessLink(processLink: ProcessLink): void {\n // Get the plugin definition key - either directly or from plugin specifications\n this.getPluginDefinitionKeyForProcessLink(processLink)\n .pipe(take(1))\n .subscribe(pluginDefinitionKey => {\n if (pluginDefinitionKey) {\n // Fetch all plugin definitions and find the one matching the key\n this.pluginManagementService\n .getPluginDefinitions()\n .pipe(\n take(1),\n map(definitions => definitions.find(d => d.key === pluginDefinitionKey))\n )\n .subscribe(definition => {\n if (definition) {\n this._selectedPluginDefinition$.next(definition);\n\n // Also set the selected function if available\n if (processLink.pluginActionDefinitionKey) {\n this._selectedPluginFunction$.next({\n key: processLink.pluginActionDefinitionKey,\n } as PluginFunction);\n }\n }\n });\n }\n });\n\n // Load and set the plugin configuration if available\n if (processLink.pluginConfigurationId) {\n this.pluginManagementService\n .getAllPluginConfigurations()\n .pipe(\n take(1),\n map(configs => configs.find(c => c.id === processLink.pluginConfigurationId))\n )\n .subscribe(configuration => {\n if (configuration) {\n this._selectedPluginConfiguration$.next(configuration);\n }\n });\n }\n }\n\n private getPluginDefinitionKeyForProcessLink(processLink: ProcessLink): Observable<string> {\n // If the key is directly available, use it\n if (processLink.pluginDefinitionKey) {\n return of(processLink.pluginDefinitionKey);\n }\n\n // Otherwise, derive it from plugin specifications using the action key\n return this.pluginService.pluginSpecifications$.pipe(\n map(pluginSpecifications => {\n const pluginSpecification = pluginSpecifications.find(specification => {\n const functionKeys =\n specification?.functionConfigurationComponents &&\n Object.keys(specification.functionConfigurationComponents);\n return functionKeys?.includes(processLink.pluginActionDefinitionKey);\n });\n return pluginSpecification?.pluginId;\n })\n );\n }\n\n deselectProcessLink(): void {\n this._selectedProcessLink$.next(undefined);\n }\n\n save(): void {\n this._save$.next(null);\n }\n}\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 */\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {map, Observable} from 'rxjs';\n\nimport {\n CompatiblePluginProcessLinks,\n FormSubmissionResult,\n GetProcessLinkRequest,\n GetProcessLinkResponse,\n ProcessLinkCreateEvent,\n ProcessLinkType,\n TaskWithProcessLink,\n} from '../models';\nimport {URLVariables} from '../models/process-link-url.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkService {\n private readonly VALTIMO_ENDPOINT_URI!: string;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this.VALTIMO_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;\n }\n\n public getTasksWithProcessLinks(processInstanceId: string): Observable<TaskWithProcessLink[]> {\n return this.http\n .get<\n TaskWithProcessLink[]\n >(`${this.VALTIMO_ENDPOINT_URI}v1/process/${processInstanceId}/tasks/process-link`, {})\n .pipe(map(res => res || []));\n }\n\n public getProcessLink(\n getProcessLinkRequest: GetProcessLinkRequest\n ): Observable<GetProcessLinkResponse> {\n var params = new HttpParams().set(\n 'processDefinitionId',\n getProcessLinkRequest.processDefinitionId\n );\n if (getProcessLinkRequest.activityId !== undefined)\n params = params.set('activityId', getProcessLinkRequest.activityId);\n\n return this.http.get<GetProcessLinkResponse>(`${this.VALTIMO_ENDPOINT_URI}v1/process-link`, {\n params,\n });\n }\n\n public getProcessLinkCandidates(activityType: string): Observable<Array<ProcessLinkType>> {\n return this.http.get<Array<ProcessLinkType>>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/types?activityType=${activityType}`\n );\n }\n\n public deployProcessWithProcessLinks(\n processLinks: ProcessLinkCreateEvent[] = [],\n processDefinitionId: string | null,\n processXml: string | null\n ) {\n const formData = new FormData();\n const processLinksBlob = new Blob(\n [JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))],\n {type: 'application/json'}\n );\n\n if (processXml) formData.append('file', new File([processXml], 'process.bpmn'));\n if (processDefinitionId) formData.append('processDefinitionId', processDefinitionId);\n formData.append('processLinks', processLinksBlob);\n\n return this.http.post(`${this.VALTIMO_ENDPOINT_URI}management/v1/process-definition`, formData);\n }\n\n public deployProcessWithProcessLinksForCase(\n processLinks: ProcessLinkCreateEvent[] = [],\n processDefinitionId: string | null,\n processXml: string | null,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n canInitializeDocument: boolean = false,\n startableByUser: boolean = false\n ) {\n const formData = new FormData();\n const processLinksBlob = new Blob(\n [JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))],\n {type: 'application/json'}\n );\n\n if (processXml) formData.append('file', new File([processXml], 'process.bpmn'));\n\n if (processDefinitionId) formData.append('processDefinitionId', processDefinitionId);\n\n formData.append('processLinks', processLinksBlob);\n formData.append('canInitializeDocument', String(canInitializeDocument));\n formData.append('startableByUser', String(startableByUser));\n\n return this.http.post(\n `${this.VALTIMO_ENDPOINT_URI}management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process-definition`,\n formData\n );\n }\n\n public deployProcessWithProcessLinksForBuildingBlock(\n processLinks: ProcessLinkCreateEvent[] = [],\n processDefinitionId: string | null,\n processXml: string | null,\n buildingBlockKey: string,\n buildingBlockVersionTag: string,\n replace: boolean = false\n ) {\n const formData = new FormData();\n const processLinksBlob = new Blob(\n [JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))],\n {type: 'application/json'}\n );\n\n if (processXml) {\n formData.append(\n 'file',\n new File([processXml], `${buildingBlockKey}-${buildingBlockVersionTag}.bpmn`)\n );\n }\n\n if (processDefinitionId) {\n formData.append('processDefinitionId', processDefinitionId);\n }\n\n formData.append('processLinks', processLinksBlob);\n\n return this.http.post(\n `${this.VALTIMO_ENDPOINT_URI}management/v1/building-block/${buildingBlockKey}/version/${buildingBlockVersionTag}/process-definition/${processDefinitionId}`,\n formData,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '409'),\n params: replace ? new HttpParams().set('replace', 'true') : undefined,\n }\n );\n }\n\n public submitForm(\n processLinkId: string,\n formData: object,\n documentId?: string,\n taskInstanceId?: string,\n documentDefinitionName?: string\n ): Observable<FormSubmissionResult> {\n let params = new HttpParams();\n\n if (documentId) {\n params = params.set('documentId', documentId);\n }\n if (taskInstanceId) {\n params = params.set('taskInstanceId', taskInstanceId);\n }\n if (documentDefinitionName) {\n params = params.set('documentDefinitionName', documentDefinitionName);\n }\n\n const httpOptions = {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n params,\n };\n return this.http.post<FormSubmissionResult>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/${processLinkId}/form/submission`,\n formData,\n httpOptions\n );\n }\n\n public submitURLProcessLink(\n processLinkId: string,\n documentId?: string,\n taskInstanceId?: string,\n documentDefinitionName?: string\n ): Observable<FormSubmissionResult> {\n let params = new HttpParams();\n\n if (documentId) {\n params = params.set('documentId', documentId);\n }\n if (taskInstanceId) {\n params = params.set('taskInstanceId', taskInstanceId);\n }\n if (documentDefinitionName) {\n params = params.set('documentDefinitionName', documentDefinitionName);\n }\n\n const httpOptions = {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n params,\n };\n return this.http.post<FormSubmissionResult>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/${processLinkId}`,\n {},\n httpOptions\n );\n }\n\n public getVariables(): Observable<URLVariables> {\n return this.http.get<URLVariables>(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/variables`);\n }\n\n public getCompatiblePluginProcessLinks(\n pluginActionDefinitionKey: string\n ): Observable<CompatiblePluginProcessLinks[]> {\n return this.http.get<CompatiblePluginProcessLinks[]>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/plugin?pluginActionDefinitionKey=${pluginActionDefinitionKey}`\n );\n }\n\n private emptyStringToNull<T extends Record<string, any>>(object: T): T {\n if (object && typeof object === 'object') {\n Object.keys(object).forEach(key => {\n const typedKey = key as keyof T;\n const value = object[typedKey];\n if (typeof value === 'object' && value !== null) {\n this.emptyStringToNull(value);\n } else if (value === '') {\n object[typedKey] = null as any;\n }\n });\n }\n return object;\n }\n}\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\nimport {InjectionToken} from '@angular/core';\nimport {FormCustomComponentConfig, FormFlowCustomComponentDefinition} from '../models';\n\nconst FORM_FLOW_COMPONENT_TOKEN = new InjectionToken<Array<FormFlowCustomComponentDefinition>>(\n 'Supported form-flow Angular components',\n {factory: () => []}\n);\n\nconst FORM_CUSTOM_COMPONENT_TOKEN = new InjectionToken<FormCustomComponentConfig>(\n 'Custom component that can be used instead of FormIO or form-flow'\n);\n\nexport {FORM_FLOW_COMPONENT_TOKEN, FORM_CUSTOM_COMPONENT_TOKEN};\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\nimport {FormSize} from '../models';\nimport {CarbonModalSize} from '@valtimo/components';\n\nconst formSizeToCarbonModalSizeMap: Record<FormSize, CarbonModalSize> = {\n extraSmall: 'xs',\n small: 'sm',\n medium: 'md',\n large: 'lg',\n};\n\nconst UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK = ['form', 'form-flow', 'ui-component'];\n\nexport {formSizeToCarbonModalSizeMap, UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK};\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\nexport * from './injection-tokens';\nexport * from './process.link';\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkButtonService {\n private readonly _showSaveButton$ = new BehaviorSubject<boolean>(false);\n private readonly _enableSaveButton$ = new BehaviorSubject<boolean>(false);\n private readonly _enableNextButton$ = new BehaviorSubject<boolean>(false);\n private readonly _showBackButton$ = new BehaviorSubject<boolean>(false);\n private readonly _showNextButton$ = new BehaviorSubject<boolean>(false);\n private readonly _backButtonClick$ = new Subject<null>();\n private readonly _saveButtonClick$ = new Subject<null>();\n private readonly _nextButtonClick$ = new Subject<null>();\n\n get showSaveButton$(): Observable<boolean> {\n return this._showSaveButton$.asObservable();\n }\n get enableSaveButton$(): Observable<boolean> {\n return this._enableSaveButton$.asObservable();\n }\n get showNextButton$(): Observable<boolean> {\n return this._showNextButton$.asObservable();\n }\n get enableNextButton$(): Observable<boolean> {\n return this._enableNextButton$.asObservable();\n }\n get showBackButton$(): Observable<boolean> {\n return this._showBackButton$.asObservable();\n }\n get backButtonClick$(): Observable<null> {\n return this._backButtonClick$.asObservable();\n }\n get saveButtonClick$(): Observable<null> {\n return this._saveButtonClick$.asObservable();\n }\n get nextButtonClick$(): Observable<null> {\n return this._nextButtonClick$.asObservable();\n }\n\n showSaveButton(): void {\n this._showSaveButton$.next(true);\n }\n\n hideSaveButton(): void {\n this._showSaveButton$.next(false);\n }\n\n showNextButton(): void {\n this._showNextButton$.next(true);\n }\n\n hideNextButton(): void {\n this._showNextButton$.next(false);\n }\n\n enableNextButton(): void {\n this._enableNextButton$.next(true);\n }\n\n disableNextButton(): void {\n this._enableNextButton$.next(false);\n }\n\n enableSaveButton(): void {\n this._enableSaveButton$.next(true);\n }\n\n disableSaveButton(): void {\n this._enableSaveButton$.next(false);\n }\n\n showBackButton(): void {\n this._showBackButton$.next(true);\n }\n\n hideBackButton(): void {\n this._showBackButton$.next(false);\n }\n\n clickBackButton(): void {\n this._backButtonClick$.next(null);\n }\n\n clickSaveButton(): void {\n this._saveButtonClick$.next(null);\n }\n\n clickNextButton(): void {\n this._nextButtonClick$.next(null);\n }\n\n resetButtons(): void {\n this.disableSaveButton();\n this.hideBackButton();\n this.hideSaveButton();\n this.hideNextButton();\n this.disableNextButton();\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {Step} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable} from 'rxjs';\nimport {ProcessLinkConfigurationStep, ProcessLinkType} from '../models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ProcessLinkButtonService} from './process-link-button.service';\nimport {take} from 'rxjs/operators';\nimport {PluginStateService} from './plugin-state.service';\nimport {PluginConfiguration, PluginDefinition, PluginTranslationService} from '@valtimo/plugin';\nimport {ManagementContext} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkStepService {\n private readonly _steps$ = new BehaviorSubject<Array<Step>>(undefined);\n private readonly _currentStepIndex$ = new BehaviorSubject<number>(0);\n private readonly _disableSteps$ = new BehaviorSubject<boolean>(false);\n private readonly _hasOneProcessLinkType$ = new BehaviorSubject<boolean>(false);\n private _context: ManagementContext = 'independent';\n\n get steps$(): Observable<Array<Step>> {\n return combineLatest([\n this._steps$,\n this._disableSteps$,\n this.translateService.stream('key'),\n ]).pipe(\n filter(([steps]) => !!steps),\n map(([steps, disableSteps]) =>\n steps.map(step => ({\n ...step,\n disabled: disableSteps,\n label: this.translateService.instant(`processLinkSteps.${step.label}`),\n ...(step.secondaryLabel && {\n secondaryLabel: this.translateService.instant(step.secondaryLabel),\n }),\n }))\n )\n );\n }\n\n get currentStepIndex$(): Observable<number> {\n return this._currentStepIndex$.asObservable();\n }\n\n get currentStepId$(): Observable<ProcessLinkConfigurationStep | ''> {\n return combineLatest([this._steps$, this.currentStepIndex$]).pipe(\n filter(([steps, currentStepIndex]) => !!steps && typeof currentStepIndex === 'number'),\n map(([steps, currentStepIndex]) =>\n steps.length > 0 ? (steps[currentStepIndex]?.label as ProcessLinkConfigurationStep) : ''\n )\n );\n }\n\n get hasOneProcessLinkType$(): Observable<boolean> {\n return this._hasOneProcessLinkType$.asObservable();\n }\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginStateService: PluginStateService,\n private readonly pluginTranslateService: PluginTranslationService\n ) {}\n\n reset(): void {\n this._currentStepIndex$.next(0);\n this._steps$.next([]);\n }\n\n setInitialSteps(availableProcessLinkTypes: Array<ProcessLinkType>): void {\n if (availableProcessLinkTypes.length > 1) {\n this.setChoiceSteps();\n }\n }\n\n setFormSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form'},\n {label: 'selectForm'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setSingleFormStep(): void {\n this._steps$.next([{label: 'selectForm'}]);\n this._currentStepIndex$.next(0);\n }\n\n setUIComponentStep(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.ui-component'},\n {label: 'uiComponent'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setFormFlowSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form-flow'},\n {label: 'selectFormFlow'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setSingleFormFlowStep(): void {\n this._steps$.next([{label: 'selectFormFlow'}]);\n this._currentStepIndex$.next(0);\n }\n\n setChoosePluginConfigurationSteps(): void {\n const selectionLabel =\n this._context === 'buildingBlock' ? 'choosePluginDefinition' : 'choosePluginConfiguration';\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin'},\n {label: selectionLabel},\n {label: 'choosePluginAction', disabled: true},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setSingleChoosePluginConfigurationSteps(): void {\n const selectionLabel =\n this._context === 'buildingBlock' ? 'choosePluginDefinition' : 'choosePluginConfiguration';\n this._steps$.next([\n {label: selectionLabel},\n {label: 'choosePluginAction', disabled: true},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(0);\n }\n\n setChoosePluginActionSteps(): void {\n combineLatest([\n this._hasOneProcessLinkType$,\n this.pluginStateService.selectedPluginConfiguration$,\n this.pluginStateService.selectedPluginDefinition$,\n ])\n .pipe(take(1))\n .subscribe(([hasOneType, selectedConfiguration, selectedDefinition]) => {\n const selectionLabel =\n this._context === 'buildingBlock'\n ? 'choosePluginDefinition'\n : 'choosePluginConfiguration';\n const selectedPluginLabel = this.getSelectedPluginLabel(\n selectedConfiguration,\n selectedDefinition\n );\n if (hasOneType) {\n this._steps$.next([\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction'},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(1);\n this.buttonService.showNextButton();\n this.buttonService.showBackButton();\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n } else {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin'},\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction'},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(2);\n this.buttonService.showNextButton();\n this.buttonService.showBackButton();\n\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n }\n });\n }\n\n setConfigurePluginActionSteps(): void {\n combineLatest([\n this._hasOneProcessLinkType$,\n this.pluginStateService.selectedPluginConfiguration$,\n this.pluginStateService.selectedPluginFunction$,\n this.pluginStateService.selectedPluginDefinition$,\n ])\n .pipe(take(1))\n .subscribe(([hasOneType, selectedConfiguration, selectedFunction, selectedDefinition]) => {\n const pluginKey =\n selectedDefinition?.key || selectedConfiguration?.pluginDefinition?.key || '';\n const selectedFunctionTranslation = pluginKey\n ? this.pluginTranslateService.instant(selectedFunction.key, pluginKey)\n : selectedFunction.key;\n const selectionLabel =\n this._context === 'buildingBlock'\n ? 'choosePluginDefinition'\n : 'choosePluginConfiguration';\n const selectedPluginLabel = this.getSelectedPluginLabel(\n selectedConfiguration,\n selectedDefinition\n );\n\n if (hasOneType) {\n this._steps$.next([\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction', secondaryLabel: selectedFunctionTranslation},\n {label: 'configurePluginAction'},\n ]);\n this._currentStepIndex$.next(2);\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n } else {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin'},\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction', secondaryLabel: selectedFunctionTranslation},\n {label: 'configurePluginAction'},\n ]);\n this._currentStepIndex$.next(3);\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n }\n });\n }\n\n setBuildingBlockSteps(): void {\n this._hasOneProcessLinkType$.pipe(take(1)).subscribe(hasOneType => {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.building-block'},\n {label: 'selectBuildingBlock'},\n {label: 'configureBuildingBlockPlugins', disabled: true},\n {label: 'configureBuildingBlockMappings', disabled: true},\n ]);\n this._currentStepIndex$.next(hasOneType ? 0 : 1);\n this.buttonService.showBackButton();\n this.buttonService.showNextButton();\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n });\n }\n\n setConfigureBuildingBlockPluginsStep(selectionLabel?: string): void {\n this._hasOneProcessLinkType$.pipe(take(1)).subscribe(hasOneType => {\n const steps = hasOneType\n ? [\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings', disabled: true},\n ]\n : [\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.building-block'},\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings', disabled: true},\n ];\n\n this._steps$.next(steps);\n this._currentStepIndex$.next(hasOneType ? 1 : 2);\n this.buttonService.showNextButton();\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n this.buttonService.showBackButton();\n });\n }\n\n setConfigureBuildingBlockMappingsStep(selectionLabel?: string): void {\n this._hasOneProcessLinkType$.pipe(take(1)).subscribe(hasOneType => {\n const steps = hasOneType\n ? [\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings'},\n ]\n : [\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.building-block'},\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings'},\n ];\n\n this._steps$.next(steps);\n this._currentStepIndex$.next(hasOneType ? 2 : 3);\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n this.buttonService.disableSaveButton();\n this.buttonService.showBackButton();\n });\n }\n\n updateBuildingBlockSelectionStepLabel(label: string): void {\n const steps = this._steps$.getValue();\n if (!steps?.length) return;\n const updatedSteps = steps.map(step =>\n step.label === 'selectBuildingBlock' ? {...step, secondaryLabel: label} : step\n );\n this._steps$.next(updatedSteps);\n }\n\n public setURLSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.url'},\n {label: 'selectURL'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n public setSingleURLStep(): void {\n this._steps$.next([{label: 'selectURL'}]);\n this._currentStepIndex$.next(0);\n }\n\n disableSteps(): void {\n this._disableSteps$.next(true);\n }\n\n enableSteps(): void {\n this._disableSteps$.next(false);\n }\n\n setHasOneProcessLinkType(hasOne: boolean): void {\n this._hasOneProcessLinkType$.next(hasOne);\n }\n\n setProcessLinkTypeSteps(processLinkTypeId: string, hasOneOption?: boolean): void {\n switch (processLinkTypeId) {\n case 'form':\n if (hasOneOption) {\n this.setSingleFormStep();\n this.buttonService.hideBackButton();\n } else {\n this.setFormSteps();\n this.buttonService.showBackButton();\n }\n this.buttonService.showSaveButton();\n break;\n case 'form-flow':\n if (hasOneOption) {\n this.setSingleFormFlowStep();\n this.buttonService.hideSaveButton();\n this.buttonService.hideBackButton();\n } else {\n this.setFormFlowSteps();\n this.buttonService.showSaveButton();\n this.buttonService.showBackButton();\n }\n break;\n case 'plugin':\n if (hasOneOption) {\n this.setSingleChoosePluginConfigurationSteps();\n this.buttonService.hideBackButton();\n this.buttonService.showNextButton();\n } else {\n this.setChoosePluginConfigurationSteps();\n this.buttonService.showBackButton();\n this.buttonService.showNextButton();\n }\n break;\n case 'building-block':\n this.setBuildingBlockSteps();\n break;\n case 'url':\n if (hasOneOption) {\n this.setSingleURLStep();\n this.buttonService.hideBackButton();\n this.buttonService.showSaveButton();\n } else {\n this.setURLSteps();\n this.buttonService.showBackButton();\n this.buttonService.showSaveButton();\n }\n break;\n case 'ui-component':\n this.setUIComponentStep();\n this.buttonService.showBackButton();\n this.buttonService.showSaveButton();\n break;\n }\n }\n\n private setChoiceSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType'},\n {label: 'empty', disabled: true},\n {label: 'empty', disabled: true},\n ]);\n this._currentStepIndex$.next(0);\n }\n\n private getSelectedPluginLabel(\n selectedConfiguration: PluginConfiguration | undefined,\n selectedDefinition: PluginDefinition | undefined\n ): string {\n if (this._context === 'buildingBlock') {\n const definitionKey = selectedDefinition?.key || selectedConfiguration?.pluginDefinition?.key;\n return definitionKey ? this.pluginTranslateService.instant('title', definitionKey) : '';\n }\n return selectedConfiguration?.title || '';\n }\n\n public setContext(context: ManagementContext): void {\n this._context = context;\n }\n\n /**\n * Initialize steps for editing an existing process link.\n * Sets up configuration steps only (skipping type selection since type can't be changed).\n * Navigates to the final step.\n */\n public initializeEditModeSteps(processLinkType: string): void {\n switch (processLinkType) {\n case 'form':\n // Single step for form - just the form selection\n this._steps$.next([{label: 'selectForm'}]);\n this._currentStepIndex$.next(0);\n break;\n case 'form-flow':\n // Single step for form-flow - just the form flow selection\n this._steps$.next([{label: 'selectFormFlow'}]);\n this._currentStepIndex$.next(0);\n break;\n case 'plugin':\n const selectionLabel =\n this._context === 'buildingBlock' ? 'choosePluginDefinition' : 'choosePluginConfiguration';\n // Plugin has 3 config steps: select config, select action, configure action\n this._steps$.next([\n {label: selectionLabel},\n {label: 'choosePluginAction'},\n {label: 'configurePluginAction'},\n ]);\n this._currentStepIndex$.next(2); // Start at last step\n break;\n case 'building-block':\n // Building block has 3 config steps: select BB, configure plugins, configure mappings\n this._steps$.next([\n {label: 'selectBuildingBlock'},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings'},\n ]);\n this._currentStepIndex$.next(2); // Start at last step\n break;\n case 'ui-component':\n // Single step for UI component\n this._steps$.next([{label: 'uiComponent'}]);\n this._currentStepIndex$.next(0);\n break;\n case 'url':\n // Single step for URL\n this._steps$.next([{label: 'selectURL'}]);\n this._currentStepIndex$.next(0);\n break;\n }\n }\n\n /**\n * Navigate to a specific step by index (for edit mode navigation)\n */\n public goToStep(stepIndex: number): void {\n const steps = this._steps$.getValue();\n if (steps && stepIndex >= 0 && stepIndex < steps.length) {\n this._currentStepIndex$.next(stepIndex);\n }\n }\n\n /**\n * Navigate to the previous step (for edit mode navigation)\n * Returns true if navigation was successful, false if already at first step\n */\n public goToPreviousStep(): boolean {\n const currentIndex = this._currentStepIndex$.getValue();\n if (currentIndex > 0) {\n this._currentStepIndex$.next(currentIndex - 1);\n return true;\n }\n return false;\n }\n\n /**\n * Navigate to the next step (for edit mode navigation)\n * Returns true if navigation was successful, false if already at last step\n */\n public goToNextStep(): boolean {\n const steps = this._steps$.getValue();\n const currentIndex = this._currentStepIndex$.getValue();\n if (steps && currentIndex < steps.length - 1) {\n this._currentStepIndex$.next(currentIndex + 1);\n return true;\n }\n return false;\n }\n\n /**\n * Check if currently at the first step\n */\n public isFirstStep(): boolean {\n return this._currentStepIndex$.getValue() === 0;\n }\n\n /**\n * Check if currently at the last step\n */\n public isLastStep(): boolean {\n const steps = this._steps$.getValue();\n const currentIndex = this._currentStepIndex$.getValue();\n return steps ? currentIndex === steps.length - 1 : false;\n }\n\n /**\n * Get the total number of steps\n */\n public getStepCount(): number {\n return this._steps$.getValue()?.length || 0;\n }\n\n /**\n * Get the current step index\n */\n public getCurrentStepIndex(): number {\n return this._currentStepIndex$.getValue();\n }\n}\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 */\nimport {Inject, Injectable, OnDestroy, Optional} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, Subscription} from 'rxjs';\nimport {\n FormCustomComponentConfig,\n ModalParams,\n ProcessLink,\n ProcessLinkCreateEvent,\n ProcessLinkDeleteEvent,\n ProcessLinkType,\n ProcessLinkUpdateEvent,\n} from '../models';\nimport {PluginStateService} from './plugin-state.service';\nimport {ProcessLinkButtonService} from './process-link-button.service';\nimport {ProcessLinkStepService} from './process-link-step.service';\nimport {FORM_CUSTOM_COMPONENT_TOKEN, UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK} from '../constants';\nimport {ManagementContext} from '@valtimo/shared';\nimport {BuildingBlockStateService} from './building-block-state.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkStateService implements OnDestroy {\n private readonly _showModal$ = new BehaviorSubject<boolean>(false);\n private readonly _availableProcessLinkTypes$ = new BehaviorSubject<Array<ProcessLinkType>>([]);\n private readonly _elementName$ = new BehaviorSubject<string>('');\n private readonly _selectedProcessLinkTypeId$ = new BehaviorSubject<string>('');\n private readonly _viewModelEnabled$ = new BehaviorSubject<boolean>(false);\n private readonly _url$ = new BehaviorSubject<string>('');\n private readonly _saving$ = new BehaviorSubject<boolean>(false);\n private readonly _modalParams$ = new BehaviorSubject<ModalParams>(undefined);\n private readonly _selectedProcessLink$ = new BehaviorSubject<ProcessLink>(undefined);\n private readonly _isEditing$ = new BehaviorSubject<boolean>(false);\n private readonly _processLinkUpdateEvents$ = new Subject<ProcessLinkUpdateEvent>();\n private readonly _processLinkCreateEvents$ = new Subject<ProcessLinkCreateEvent>();\n private readonly _processLinkDeleteEvents$ = new Subject<ProcessLinkDeleteEvent>();\n private readonly _context$ = new BehaviorSubject<ManagementContext>('independent');\n\n public get processLinkUpdateEvents$(): Observable<ProcessLinkUpdateEvent> {\n return this._processLinkUpdateEvents$.asObservable();\n }\n public get processLinkCreateEvents$(): Observable<ProcessLinkCreateEvent> {\n return this._processLinkCreateEvents$.asObservable();\n }\n public get processLinkDeleteEvents$(): Observable<ProcessLinkDeleteEvent> {\n return this._processLinkDeleteEvents$.asObservable();\n }\n public get showModal$(): Observable<boolean> {\n return this._showModal$.asObservable();\n }\n public get elementName$(): Observable<string> {\n return this._elementName$.asObservable();\n }\n\n public get availableProcessLinkTypes$(): Observable<ProcessLinkType[]> {\n return combineLatest([this._availableProcessLinkTypes$, this._context$]).pipe(\n map(([types, context]) =>\n (!this.formCustomComponentConfig\n ? types.map(type => ({\n ...type,\n enabled: type.processLinkType === 'ui-component' ? false : type.enabled,\n }))\n : types\n )\n .filter(type => type.processLinkType !== 'url')\n .map(type =>\n context === 'buildingBlock' &&\n UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK.includes(type.processLinkType)\n ? {...type, enabled: false}\n : type\n )\n )\n );\n }\n\n public get hideProgressIndicator$(): Observable<boolean> {\n return this._availableProcessLinkTypes$\n .asObservable()\n .pipe(\n map(\n availableTypes =>\n Array.isArray(availableTypes) &&\n availableTypes.length === 1 &&\n (availableTypes[0]?.processLinkType === 'form' ||\n availableTypes[0]?.processLinkType === 'form-flow')\n )\n );\n }\n public get selectedProcessLinkTypeId$(): Observable<string> {\n return this._selectedProcessLinkTypeId$.asObservable();\n }\n public get saving$(): Observable<boolean> {\n return this._saving$.asObservable();\n }\n public get modalParams$(): Observable<ModalParams> {\n return this._modalParams$.asObservable();\n }\n public get selectedProcessLink$(): Observable<ProcessLink> {\n return this._selectedProcessLink$.asObservable();\n }\n public get typeOfSelectedProcessLink$(): Observable<string> {\n return this.selectedProcessLink$.pipe(map(processLink => processLink?.processLinkType || ''));\n }\n public get viewModelEnabled$(): Observable<boolean> {\n return this._viewModelEnabled$.asObservable();\n }\n public get url$(): Observable<string> {\n return this._url$.asObservable();\n }\n public get context$(): Observable<ManagementContext> {\n return this._context$.asObservable();\n }\n public get isEditing$(): Observable<boolean> {\n return this._isEditing$.asObservable();\n }\n\n private _availableProcessLinkTypesSubscription!: Subscription;\n private _backButtonSubscription!: Subscription;\n private _nextButtonSubscription!: Subscription;\n\n constructor(\n private readonly processLinkStepService: ProcessLinkStepService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginStateService: PluginStateService,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig\n ) {\n this.openAvailableProcessLinkTypesSubscription();\n this.openEditModeNavigationSubscriptions();\n }\n\n public ngOnDestroy(): void {\n this._availableProcessLinkTypesSubscription?.unsubscribe();\n this._backButtonSubscription?.unsubscribe();\n this._nextButtonSubscription?.unsubscribe();\n }\n\n public setAvailableProcessLinkTypes(processLinkTypes: Array<ProcessLinkType>): void {\n const hasOneOption = processLinkTypes.length === 1;\n this._availableProcessLinkTypes$.next(processLinkTypes);\n this.processLinkStepService.setHasOneProcessLinkType(hasOneOption);\n\n if (hasOneOption) {\n this.selectProcessLinkType(processLinkTypes[0].processLinkType, hasOneOption);\n }\n }\n\n public setElementName(name: string): void {\n this._elementName$.next(name);\n }\n\n public showModal(): void {\n this._showModal$.next(true);\n }\n\n public closeModal(): void {\n this._showModal$.next(false);\n\n setTimeout(() => {\n this.reset();\n }, 240);\n }\n\n public selectProcessLinkType(processLinkTypeId: string, hasOneOption?: boolean): void {\n this._selectedProcessLinkTypeId$.next(processLinkTypeId);\n this.processLinkStepService.setProcessLinkTypeSteps(processLinkTypeId, hasOneOption);\n }\n\n public setViewModelEnabled(viewModelEnabled: boolean): void {\n this._viewModelEnabled$.next(viewModelEnabled);\n }\n\n public clearSelectedProcessLinkType(): void {\n this._selectedProcessLinkTypeId$.next('');\n }\n\n public startSaving(): void {\n this._saving$.next(true);\n this.processLinkStepService.disableSteps();\n }\n\n public stopSaving(): void {\n this._saving$.next(false);\n this.processLinkStepService.enableSteps();\n }\n\n public setInitial(): void {\n const availableTypes = this._availableProcessLinkTypes$.getValue();\n this.buttonService.resetButtons();\n this.processLinkStepService.setInitialSteps(availableTypes);\n }\n\n public setModalParams(params: ModalParams): void {\n this._modalParams$.next(params);\n }\n\n public setContext(context: ManagementContext): void {\n this._context$.next(context);\n this.processLinkStepService.setContext(context);\n }\n\n public selectProcessLink(processLink: ProcessLink | undefined): void {\n if (!processLink) return;\n this._selectedProcessLink$.next(processLink);\n this._isEditing$.next(true);\n this.pluginStateService.selectProcessLink(processLink);\n this.buildingBlockStateService.setProcessLink(processLink);\n this.setViewModelEnabled(processLink.viewModelEnabled ?? false);\n this._url$.next(processLink.url ?? '');\n\n // Initialize stepper for editing mode - navigate to last step\n this.processLinkStepService.initializeEditModeSteps(processLink.processLinkType);\n // Set button visibility based on current step position\n this.updateButtonsForCurrentStep();\n }\n\n public deselectProcessLink(): void {\n this._selectedProcessLink$.next(undefined);\n this.pluginStateService.deselectProcessLink();\n this.resetBuildingBlockState();\n }\n\n public sendProcessLinkUpdateEvent(event: ProcessLinkUpdateEvent): void {\n this._processLinkUpdateEvents$.next(event);\n }\n\n public sendProcessLinkCreateEvent(event: ProcessLinkCreateEvent): void {\n this._processLinkCreateEvents$.next(event);\n }\n\n public sendProcessLinkDeleteEvent(event: ProcessLinkDeleteEvent): void {\n this._processLinkDeleteEvents$.next(event);\n }\n\n private openAvailableProcessLinkTypesSubscription(): void {\n this._availableProcessLinkTypesSubscription = this._availableProcessLinkTypes$.subscribe(\n availableProcessLinkTypes => {\n if (availableProcessLinkTypes.length > 1) {\n this.setInitial();\n }\n }\n );\n }\n\n private openEditModeNavigationSubscriptions(): void {\n // Handle back button in edit mode\n this._backButtonSubscription = this.buttonService.backButtonClick$.subscribe(() => {\n if (this._isEditing$.getValue()) {\n this.navigateBackInEditMode();\n }\n });\n\n // Handle next button in edit mode\n this._nextButtonSubscription = this.buttonService.nextButtonClick$.subscribe(() => {\n if (this._isEditing$.getValue()) {\n this.navigateForwardInEditMode();\n }\n });\n }\n\n private navigateBackInEditMode(): void {\n const navigated = this.processLinkStepService.goToPreviousStep();\n if (navigated) {\n this.updateButtonsForCurrentStep();\n }\n }\n\n private navigateForwardInEditMode(): void {\n const navigated = this.processLinkStepService.goToNextStep();\n if (navigated) {\n this.updateButtonsForCurrentStep();\n }\n }\n\n private updateButtonsForCurrentStep(): void {\n const isFirstStep = this.processLinkStepService.isFirstStep();\n const isLastStep = this.processLinkStepService.isLastStep();\n\n // Back button visibility\n if (isFirstStep) {\n this.buttonService.hideBackButton();\n } else {\n this.buttonService.showBackButton();\n }\n\n // Next/Save button visibility\n if (isLastStep) {\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n } else {\n this.buttonService.showNextButton();\n this.buttonService.enableNextButton();\n this.buttonService.hideSaveButton();\n }\n }\n\n public isBuildingBlockContext(): boolean {\n return this._context$.getValue() === 'buildingBlock';\n }\n\n private resetBuildingBlockState(): void {\n this.buildingBlockStateService.reset();\n }\n\n private reset(): void {\n this.setAvailableProcessLinkTypes([]);\n this.processLinkStepService.reset();\n this.stopSaving();\n this.buttonService.resetButtons();\n this.clearSelectedProcessLinkType();\n this.deselectProcessLink();\n this.resetBuildingBlockState();\n this._isEditing$.next(false);\n }\n}\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\nimport {Inject, Injectable} from '@angular/core';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\nimport {FormFlowCustomComponentDefinition} from '../models';\nimport {FORM_FLOW_COMPONENT_TOKEN} from '../constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormFlowComponentService {\n private readonly _supportedComponents$ =\n new BehaviorSubject<Array<FormFlowCustomComponentDefinition> | null>(null);\n\n public get supportedComponents$(): Observable<Array<FormFlowCustomComponentDefinition>> {\n return this._supportedComponents$.pipe(filter(components => !!components));\n }\n\n constructor(\n @Inject(FORM_FLOW_COMPONENT_TOKEN)\n private readonly supportedCustomComponents: Array<FormFlowCustomComponentDefinition>\n ) {\n this.setSupportedComponents(supportedCustomComponents);\n }\n\n private setSupportedComponents(\n supportedComponents: Array<FormFlowCustomComponentDefinition>\n ): void {\n this._supportedComponents$.next(supportedComponents);\n }\n}\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\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class UrlResolverService {\n public resolveUrlVariables(url: string, variables: Map<string, string>): string {\n let resolvingUrl = url;\n Object.keys(variables).forEach(key => {\n let value = variables[key];\n resolvingUrl = resolvingUrl.replace('<' + key + '>', value);\n });\n return resolvingUrl;\n }\n}\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\nimport {AbstractControl, ValidationErrors, ValidatorFn} from '@angular/forms';\nimport {Injectable} from '@angular/core';\nimport {UrlResolverService} from './url-resolver.service';\n\n@Injectable()\nexport class UrlValidatorService {\n constructor(private readonly urlResolverService: UrlResolverService) {}\n\n public urlValidator(variables: Map<string, string>): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const url = this.urlResolverService.resolveUrlVariables(control.value, variables);\n try {\n new URL(url);\n return null;\n } catch (_) {\n return {invalidUrl: url};\n }\n };\n }\n}\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\nexport * from './building-block-state.service';\nexport * from './form-flow.service';\nexport * from './plugin-state.service';\nexport * from './process-link.service';\nexport * from './process-link-state.service';\nexport * from './process-link-step.service';\nexport * from './process-link-button.service';\nexport * from './form-flow-component.service';\nexport * from './url-resolver.service';\nexport * from './url-validator.service';\nexport * from './process-link-building-block-api.service';\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {filter, map, switchMap, take, withLatestFrom} from 'rxjs/operators';\nimport {PluginStateService} from '../../services/plugin-state.service';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {\n PluginConfiguration,\n PluginDefinition,\n PluginManagementService,\n PluginService,\n PluginTranslationService,\n} from '@valtimo/plugin';\nimport {\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {PluginListItem} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-plugin-configuration',\n templateUrl: './select-plugin-configuration.component.html',\n styleUrls: ['./select-plugin-configuration.component.scss'],\n})\nexport class SelectPluginConfigurationComponent implements OnInit, OnDestroy {\n readonly isBuildingBlockContext$ = this.stateService.context$.pipe(\n map(context => context === 'buildingBlock')\n );\n\n readonly listItems$: Observable<PluginListItem[] | undefined> = combineLatest([\n this.isBuildingBlockContext$,\n this.stateService.modalParams$,\n ]).pipe(\n switchMap(([isBuildingBlock, modalData]) =>\n isBuildingBlock\n ? combineLatest([\n this.pluginManagementService.getPluginDefinitions(\n modalData?.element?.activityListenerType\n ),\n this.pluginService.pluginSpecifications$,\n ]).pipe(\n map(([definitions, specs]) => {\n const limitedDefinitions =\n definitions?.filter(definition =>\n specs.some(spec => spec.pluginId === definition.key)\n ) ?? [];\n const enriched = limitedDefinitions.map(definition => {\n const spec = specs.find(item => item.pluginId === definition.key);\n return {\n id: definition.key,\n title:\n this.pluginTranslationService.instant('title', definition.key) ||\n definition.title,\n description:\n this.pluginTranslationService.instant('description', definition.key) ||\n definition.description,\n logo: spec?.pluginLogoBase64 ?? null,\n payload: definition.key,\n isDefinition: true,\n } as PluginListItem;\n });\n this.pluginDefinitionsCache = limitedDefinitions;\n return enriched;\n })\n )\n : combineLatest([\n modalData?.element?.type\n ? this.pluginManagementService.getAllPluginConfigurationsWithLogos(\n modalData?.element?.activityListenerType\n )\n : of(undefined),\n this.pluginService.availablePluginIds$,\n ]).pipe(\n map(([configs, availablePluginIds]) =>\n configs\n ?.filter(configuration =>\n availablePluginIds.includes(configuration.pluginDefinition.key)\n )\n ?.map(configuration => ({\n id: configuration.id ?? configuration.title,\n title: configuration.title,\n description: this.pluginTranslationService.instant(\n 'description',\n configuration.pluginDefinition.key\n ),\n logo: (configuration.pluginLogoBase64 as string) ?? null,\n payload: configuration,\n isDefinition: false,\n }))\n )\n )\n )\n );\n\n readonly pageHeaderText$ = this.isBuildingBlockContext$.pipe(\n map(isBuildingBlock =>\n isBuildingBlock\n ? 'processLinkConfiguration.choosePluginDefinitionDescription'\n : 'processLinkConfiguration.choosePluginConfigurationDescription'\n )\n );\n\n readonly columnHeaderText$ = this.isBuildingBlockContext$.pipe(\n map(isBuildingBlock =>\n isBuildingBlock\n ? 'pluginManagement.labels.pluginName'\n : 'pluginManagement.labels.configurationName'\n )\n );\n\n readonly selectedPluginConfiguration$ = this.pluginStateService.selectedPluginConfiguration$;\n readonly selectedPluginDefinition$ = this.pluginStateService.selectedPluginDefinition$;\n\n private _subscriptions = new Subscription();\n private pluginDefinitionsCache: PluginDefinition[] = [];\n\n constructor(\n private readonly pluginManagementService: PluginManagementService,\n private readonly pluginStateService: PluginStateService,\n private readonly pluginService: PluginService,\n private readonly stateService: ProcessLinkStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly pluginTranslationService: PluginTranslationService\n ) {}\n\n ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openNextButtonSubscription();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n selected(event: {value: PluginConfiguration | string}): void {\n this.isBuildingBlockContext$.pipe(take(1)).subscribe(isBuildingBlock => {\n if (isBuildingBlock) {\n const definitionKey = event.value as string;\n const definition = this.pluginDefinitionsCache.find(def => def.key === definitionKey);\n this.selectDefinition(definition);\n } else {\n this.selectConfiguration(event.value as PluginConfiguration);\n }\n this.buttonService.enableNextButton();\n });\n }\n\n private selectConfiguration(configuration: PluginConfiguration): void {\n if (!configuration) return;\n if (configuration.pluginDefinition) {\n this.pluginStateService.selectPluginDefinition(configuration.pluginDefinition);\n }\n this.pluginStateService.selectPluginConfiguration(configuration);\n }\n\n private selectDefinition(definition: PluginDefinition | undefined): void {\n if (!definition) return;\n this.pluginStateService.selectPluginDefinition(definition);\n this.pluginStateService.selectPluginConfiguration(undefined);\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openNextButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setChoosePluginActionSteps();\n })\n );\n }\n}\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\n<ng-container *ngIf=\"listItems$ | async as items; else loading\">\n <p class=\"step-description\">\n {{ pageHeaderText$ | async | translate }}\n </p>\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"selected($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ columnHeaderText$ | async | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.pluginDescription' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let item of items\" [value]=\"item.payload\">\n <cds-list-column>\n <div *ngIf=\"item.logo\">\n <img [src]=\"item.logo\" [title]=\"item.title\" class=\"plugin-configuration-logo\" />\n </div>\n </cds-list-column>\n <cds-list-column>{{ item.title }}</cds-list-column>\n <cds-list-column>{{ item.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {PluginDefinition, PluginFunction, PluginManagementService} from '@valtimo/plugin';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {filter, switchMap, take, withLatestFrom} from 'rxjs/operators';\n\nimport {\n PluginStateService,\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-plugin-action',\n templateUrl: './select-plugin-action.component.html',\n styleUrls: ['./select-plugin-action.component.scss'],\n})\nexport class SelectPluginActionComponent implements OnInit, OnDestroy {\n public readonly pluginFunctions$: Observable<Array<PluginFunction> | undefined> = combineLatest([\n this.stateService.selectedPluginDefinition$,\n this.processLinkStateService.modalParams$,\n ]).pipe(\n switchMap(([selectedDefinition, modalParams]) =>\n selectedDefinition\n ? this.pluginManagementService.getPluginFunctions(\n selectedDefinition.key,\n modalParams.element.activityListenerType\n )\n : of(undefined)\n )\n );\n public readonly selectedPluginDefinition$: Observable<PluginDefinition> =\n this.stateService.selectedPluginDefinition$;\n public readonly selectedPluginFunction$: Observable<PluginFunction> =\n this.stateService.selectedPluginFunction$;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly stateService: PluginStateService,\n private readonly stepService: ProcessLinkStepService,\n private readonly processLinkStateService: ProcessLinkStateService\n ) {}\n\n public ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openNextButtonSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectFunction(pluginFunction: PluginFunction): void {\n this.stateService.selectPluginFunction(pluginFunction);\n }\n\n public selected(event: {value: string}): void {\n this.selectFunction(JSON.parse(event.value));\n this.buttonService.enableNextButton();\n }\n\n public stringify(object: object): string {\n return JSON.stringify(object);\n }\n\n private openBackButtonSubscription(): void {\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.processLinkStateService.isEditing$),\n filter(([, isEditing]) => !isEditing),\n switchMap(() => this.stepService.hasOneProcessLinkType$),\n take(1)\n )\n .subscribe((hasOneOption: boolean) => {\n this.stepService.setProcessLinkTypeSteps('plugin', hasOneOption);\n });\n }\n\n private openNextButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.processLinkStateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigurePluginActionSteps();\n })\n );\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormControl, Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subject} from 'rxjs';\nimport {CompatiblePluginProcessLinks, ProcessLink} from '../../models';\nimport {ProcessLinkService} from '../../services';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {Upload16} from '@carbon/icons';\nimport {CdsThemeService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-import-plugin-configuration',\n templateUrl: './import-plugin-configuration.component.html',\n styleUrls: ['./import-plugin-configuration.component.scss'],\n})\nexport class ImportPluginConfigurationComponent {\n @Input() public set pluginActionKey(value: string) {\n this.importPluginForm.reset();\n this.fetchCompatiblePluginProcessLinks(value);\n }\n\n @Output() public readonly configurationEvent = new EventEmitter<\n ProcessLink['actionProperties']\n >();\n\n public readonly open$ = new Subject<boolean>();\n\n private readonly _compatiblePluginProcessLinksSubject$ = new BehaviorSubject<\n CompatiblePluginProcessLinks[]\n >([]);\n\n public readonly compatiblePluginProcessLinks$ =\n this._compatiblePluginProcessLinksSubject$.asObservable();\n\n public readonly importPluginForm = this.formBuilder.group({\n process: new FormControl('', Validators.required),\n version: new FormControl('', Validators.required),\n activity: new FormControl('', Validators.required),\n });\n\n public get process(): AbstractControl<string> {\n return this.importPluginForm.get('process');\n }\n\n public readonly processListItems$: Observable<ListItem[]> = combineLatest([\n this._compatiblePluginProcessLinksSubject$,\n this.process.valueChanges.pipe(startWith('')),\n ]).pipe(\n map(\n ([compatibleProcessLinks, processValue]) =>\n compatibleProcessLinks?.map(compatibleProcessLink => ({\n content: compatibleProcessLink.processDefinitionKey,\n selected: processValue === compatibleProcessLink.processDefinitionKey,\n })) || []\n )\n );\n\n public get version(): AbstractControl<string> {\n return this.importPluginForm.get('version');\n }\n\n public readonly versionListItems$: Observable<ListItem[]> = combineLatest([\n this._compatiblePluginProcessLinksSubject$,\n this.process.valueChanges.pipe(startWith('')),\n this.version.valueChanges.pipe(startWith('')),\n ]).pipe(\n map(([compatibleProcessLinks, processValue, versionValue]) =>\n !processValue\n ? []\n : compatibleProcessLinks\n .find(compatibleLinks => compatibleLinks.processDefinitionKey === processValue)\n ?.versions.sort((a, b) => Number(b.version) - Number(a.version))\n .map(versionItem => ({\n content: versionItem.version,\n selected: versionItem.version === versionValue,\n })) || []\n )\n );\n\n public get activity(): AbstractControl<string> {\n return this.importPluginForm.get('activity');\n }\n\n public readonly activityListItems$: Observable<ListItem[]> = combineLatest([\n this._compatiblePluginProcessLinksSubject$,\n this.process.valueChanges.pipe(startWith('')),\n this.version.valueChanges.pipe(startWith('')),\n this.activity.valueChanges.pipe(startWith('')),\n ]).pipe(\n map(([compatibleProcessLinks, processValue, versionValue, activityValue]) =>\n !processValue || !versionValue\n ? []\n : compatibleProcessLinks\n .find(compatibleLinks => compatibleLinks.processDefinitionKey === processValue)\n .versions.find(versionItem => versionItem.version === versionValue)\n .processLinks.map(processLinkItem => ({\n content: processLinkItem.activityId,\n selected: processLinkItem.activityId === activityValue,\n }))\n )\n );\n\n public readonly toggletipTheme$ = this.cdsThemeService.toggletipTheme$;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly processLinkService: ProcessLinkService,\n private readonly iconService: IconService,\n private readonly cdsThemeService: CdsThemeService\n ) {\n this.iconService.register(Upload16);\n }\n\n public onSubmit(): void {\n this.configurationEvent.emit(\n this._compatiblePluginProcessLinksSubject$\n .getValue()\n .find(\n compatiblePluginProcessLinks =>\n compatiblePluginProcessLinks.processDefinitionKey === this.process.value\n )\n .versions.find(versionItem => versionItem.version === this.version.value)\n .processLinks.find(processLinkItem => processLinkItem.activityId === this.activity.value)\n .actionProperties\n );\n\n // needed to reliably trigger toggle tip closure\n this.open$.next(true);\n setTimeout(() => this.open$.next(false));\n\n this.importPluginForm.reset();\n }\n\n private fetchCompatiblePluginProcessLinks(pluginActionKey: string): void {\n this.processLinkService\n .getCompatiblePluginProcessLinks(pluginActionKey)\n .subscribe(res => this._compatiblePluginProcessLinksSubject$.next(res));\n }\n\n public processSelected(event: {item: ListItem}): void {\n this.process.setValue(event?.item?.content);\n this.version.setValue('');\n this.activity.setValue('');\n }\n\n public versionSelected(event: {item: ListItem}): void {\n this.version.setValue(event?.item?.content);\n this.activity.setValue('');\n }\n\n public activitySelected(event: {item: ListItem}): void {\n this.activity.setValue(event?.item?.content);\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {\n PluginStateService,\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {filter, map, take, withLatestFrom} from 'rxjs/operators';\nimport {PluginConfiguration, PluginConfigurationData} from '@valtimo/plugin';\nimport {\n PluginConfigurationReferenceType,\n PluginProcessLinkCreateDto,\n PluginProcessLinkUpdateDto,\n ProcessLink,\n} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-plugin-action-configuration',\n templateUrl: './plugin-action-configuration.component.html',\n styleUrls: ['./plugin-action-configuration.component.scss'],\n})\nexport class PluginActionConfigurationComponent implements OnInit, OnDestroy {\n @Input() selectedPluginConfiguration$: Observable<PluginConfiguration>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> =\n new EventEmitter<PluginConfigurationData>();\n\n public readonly pluginDefinitionKey$ = this.pluginStateService.pluginDefinitionKey$;\n public readonly functionKey$ = this.pluginStateService.functionKey$;\n public readonly save$ = this.pluginStateService.save$;\n public readonly saving$ = this.stateService.saving$;\n\n private readonly _prefillConfigurationSubject$ = new BehaviorSubject<\n ProcessLink['actionProperties'] | null\n >(null);\n // Only prefill if the action key hasn't changed from what's saved in the process link\n private readonly _prefillConfiguration$ = combineLatest([\n this.stateService.selectedProcessLink$,\n this.pluginStateService.selectedPluginFunction$,\n ]).pipe(\n map(([processLink, selectedFunction]) => {\n if (!processLink) return undefined;\n // Only prefill if the action hasn't been changed\n const savedActionKey = processLink.pluginActionDefinitionKey;\n const currentActionKey = selectedFunction?.key;\n if (currentActionKey && savedActionKey !== currentActionKey) {\n return undefined; // Action changed, don't prefill old configuration\n }\n return processLink.actionProperties;\n })\n );\n public readonly prefillConfiguration$ = combineLatest([\n this._prefillConfigurationSubject$,\n this._prefillConfiguration$,\n ]).pipe(\n map(\n ([prefillConfigurationSubjectValue, prefillConfiguration]) =>\n prefillConfigurationSubjectValue || prefillConfiguration\n )\n );\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly pluginStateService: PluginStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly processLinkService: ProcessLinkService\n ) {}\n\n ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n onValid(valid: boolean): void {\n if (valid) this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n\n onConfiguration(configuration: PluginConfigurationData): void {\n this.stateService.startSaving();\n\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n if (selectedProcessLink) {\n this.updateProcessLink(configuration);\n } else {\n this.saveNewProcessLink(configuration);\n }\n });\n }\n\n public onImportConfiguration(configuration: ProcessLink['actionProperties']): void {\n this._prefillConfigurationSubject$.next(configuration);\n }\n\n private updateProcessLink(configuration: PluginConfigurationData): void {\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.pluginStateService.selectedPluginFunction$,\n ])\n .pipe(take(1))\n .subscribe(([selectedProcessLink, selectedFunction]) => {\n const inferredReferenceType: PluginConfigurationReferenceType =\n (selectedProcessLink.referenceType as PluginConfigurationReferenceType) ||\n (selectedProcessLink.pluginDefinitionKey ? 'BUILDING_BLOCK' : 'FIXED');\n const pluginConfigurationId =\n inferredReferenceType === 'FIXED'\n ? (selectedProcessLink.pluginConfigurationId ?? '')\n : undefined;\n // Use the currently selected function key (user may have changed it)\n const actionKey = selectedFunction?.key ?? selectedProcessLink.pluginActionDefinitionKey ?? '';\n const updateProcessLinkRequest: PluginProcessLinkUpdateDto = {\n id: selectedProcessLink.id,\n pluginConfigurationId,\n pluginActionDefinitionKey: actionKey,\n actionProperties: configuration,\n activityId: selectedProcessLink.activityId,\n referenceType: inferredReferenceType,\n pluginDefinitionKey: selectedProcessLink.pluginDefinitionKey,\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);\n });\n }\n\n private saveNewProcessLink(configuration: PluginConfigurationData): void {\n combineLatest([\n this.stateService.modalParams$,\n this.pluginStateService.selectedPluginConfiguration$,\n this.pluginStateService.selectedPluginFunction$,\n this.stateService.selectedProcessLinkTypeId$,\n this.pluginStateService.selectedPluginDefinition$,\n ])\n .pipe(take(1))\n .subscribe(\n ([\n modalData,\n selectedConfiguration,\n selectedFunction,\n selectedProcessLinkTypeId,\n selectedDefinition,\n ]) => {\n const isBuildingBlock = this.stateService.isBuildingBlockContext();\n const pluginDefinitionKey =\n selectedConfiguration?.pluginDefinition?.key || selectedDefinition?.key;\n\n if (!selectedFunction || (isBuildingBlock && !pluginDefinitionKey)) {\n this.stateService.stopSaving();\n return;\n }\n\n if (!isBuildingBlock && !selectedConfiguration) {\n this.stateService.stopSaving();\n return;\n }\n\n const referenceType: PluginConfigurationReferenceType = isBuildingBlock\n ? 'BUILDING_BLOCK'\n : 'FIXED';\n\n const processLinkRequest: PluginProcessLinkCreateDto = {\n actionProperties: configuration,\n activityId: modalData?.element?.id,\n activityType: modalData?.element?.activityListenerType ?? '',\n pluginConfigurationId: isBuildingBlock ? undefined : selectedConfiguration?.id,\n processDefinitionId: modalData?.processDefinitionId,\n pluginActionDefinitionKey: selectedFunction.key,\n processLinkType: selectedProcessLinkTypeId,\n referenceType,\n pluginDefinitionKey,\n };\n\n this.stateService.sendProcessLinkCreateEvent(processLinkRequest);\n }\n );\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setChoosePluginActionSteps();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.pluginStateService.save();\n })\n );\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\n\nimport BpmnViewer from 'bpmn-js';\nimport {ActivatedRoute} from '@angular/router';\nimport {combineLatest} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {PageTitleService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-link-process-diagram',\n templateUrl: './form-link-process-diagram.component.html',\n styleUrls: ['./form-link-process-diagram.component.scss'],\n})\nexport class FormLinkProcessDiagramComponent implements OnInit, OnDestroy {\n private bpmnViewer: BpmnViewer;\n\n @ViewChild('ref') public el: ElementRef;\n @Output() public bpmnElementModalOpen: EventEmitter<any> = new EventEmitter();\n @Output() public bpmnElementModalClose: EventEmitter<any> = new EventEmitter();\n\n public processDefinitionKey: string;\n public processDefinitions: ProcessDefinition[];\n public processDiagram: any;\n public processDefinition: ProcessDefinition;\n public processDefinitionVersions: ProcessDefinition[];\n public version: number;\n private callbacksAdded = false;\n private processDefinitionId!: string;\n\n constructor(\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService\n ) {}\n\n ngOnInit() {\n this.pageTitleService.disableReset();\n combineLatest([this.route.queryParams, this.processService.getProcessDefinitions()])\n .pipe(map(([queryParams, processDefinitions]) => ({queryParams, processDefinitions})))\n .subscribe(response => {\n this.processDefinitions = response.processDefinitions;\n if (response.queryParams.process) {\n this.processDefinitionKey = response.queryParams.process;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n this.bpmnElementModalOpen.emit({\n element: {\n id: 'start-event',\n type: 'bpmn:StartEvent',\n },\n processDefinitionKey: this.processDefinitionKey,\n processDefinitionId: this.processDefinitionId,\n });\n }\n if (!this.processDefinitionKey && response.processDefinitions.length !== 0) {\n this.processDefinitionKey = response.processDefinitions[0].key;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n });\n this.bpmnViewer = new BpmnViewer({});\n this.bpmnViewer.on('import.done', ({error}: any) => {\n if (!error) {\n const canvas = this.bpmnViewer.get('canvas') as any;\n const eventBus = this.bpmnViewer.get('eventBus') as any;\n canvas.zoom('fit-viewport', 'auto');\n\n if (this.processDefinitionVersions && !this.callbacksAdded) {\n eventBus.on('element.click', e => {\n let activityListenerType = e.element.businessObject.$type;\n if (activityListenerType === 'bpmn:UserTask') {\n activityListenerType += ':create';\n } else {\n activityListenerType += ':start';\n }\n\n this.bpmnElementModalOpen.emit({\n element: {\n id: e.element.businessObject.id,\n type: e.element.businessObject.$type,\n activityListenerType,\n name: e.element?.businessObject?.name,\n },\n processDefinitionKey: this.processDefinitionKey,\n processDefinitionId: this.processDefinitionId,\n });\n });\n this.callbacksAdded = true;\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.bpmnElementModalClose.emit();\n if (this.bpmnViewer) {\n this.bpmnViewer.destroy();\n }\n this.pageTitleService.enableReset();\n }\n\n public loadProcessDefinition(processDefinitionKey: string): void {\n this.processService\n .getProcessDefinition(processDefinitionKey)\n .subscribe((processDefinition: ProcessDefinition) => {\n this.processDefinitionId = processDefinition.id;\n this.version = processDefinition.version;\n this.loadProcessDefinitionXml(processDefinition.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey: string): void {\n this.processService\n .getProcessDefinitionVersions(processDefinitionKey)\n .subscribe((processDefinitionVersions: ProcessDefinition[]) => {\n this.processDefinitionVersions = processDefinitionVersions;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey: string): void {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId: string): void {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnViewer.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnViewer.attachTo(this.el.nativeElement);\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey: string): void {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version: string): void {\n const processDefinitionId = this.processDefinitionVersions.find(\n definition => definition.version === +version\n )?.id;\n\n if (processDefinitionId) {\n this.processDefinitionId = processDefinitionId;\n this.loadProcessDefinitionXml(this.processDefinitionId);\n }\n\n this.version = +version;\n }\n}\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\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","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, of, startWith, Subscription} from 'rxjs';\nimport {filter, map, switchMap, take, withLatestFrom} from 'rxjs/operators';\nimport {\n BuildingBlockInputMapping,\n BuildingBlockOutputMapping,\n BuildingBlockProcessLinkCreateDto,\n BuildingBlockProcessLinkUpdateDto,\n BuildingBlockSyncTiming,\n InputRowFormGroup,\n InputsFormGroup,\n OutputRowFormGroup,\n OutputsFormGroup,\n ProcessLink,\n} from '../../models';\nimport {\n BuildingBlockStateService,\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {\n ButtonModule,\n ComboBoxModule,\n IconModule,\n InputModule,\n LayerModule,\n RadioModule,\n} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n InputLabelModule,\n SelectItem,\n SelectModule,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {getBuildingBlockManagementRouteParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: true,\n selector: 'valtimo-configure-building-block-mappings',\n templateUrl: './configure-building-block-mappings.component.html',\n styleUrls: ['./configure-building-block-mappings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ComboBoxModule,\n RadioModule,\n InputModule,\n ValuePathSelectorComponent,\n InputLabelModule,\n TranslateModule,\n ButtonModule,\n IconModule,\n SelectModule,\n LayerModule,\n ],\n})\nexport class ConfigureBuildingBlockMappingsComponent implements OnInit, OnDestroy, AfterViewInit {\n public readonly buildingBlockFields$ = this.buildingBlockStateService.buildingBlockFields$;\n\n public readonly buildingBlockFieldItems$: Observable<Array<SelectItem>> =\n this.buildingBlockFields$.pipe(\n map(buildingBlockFields =>\n buildingBlockFields.map(buildingBlockField => {\n return {\n id: buildingBlockField.name,\n text: `doc:${buildingBlockField.name}`,\n };\n })\n )\n );\n\n public readonly inputsForm: InputsFormGroup = new FormGroup<InputsFormGroup['controls']>({\n inputs: new FormArray<InputRowFormGroup>([]),\n });\n public readonly outputsForm: OutputsFormGroup = new FormGroup<OutputsFormGroup['controls']>({\n outputs: new FormArray<OutputRowFormGroup>([]),\n });\n\n private readonly _rowItemsCache = new WeakMap<InputRowFormGroup, Observable<SelectItem[]>>();\n public getBuildingBlockFieldItemsForRow$(\n group: InputRowFormGroup\n ): Observable<Array<SelectItem>> {\n const cached = this._rowItemsCache.get(group);\n\n if (cached) return cached;\n\n const stream = combineLatest([\n this.buildingBlockFieldItems$,\n this.inputsForm.valueChanges.pipe(startWith(this.inputsForm.value)),\n group.valueChanges.pipe(startWith(group.value)),\n ]).pipe(\n map(([buildingBlockFieldItems, inputsFormValue, groupValue]) => {\n const usedInputTargets =\n inputsFormValue.inputs?.map(input => input.target).filter(Boolean) ?? [];\n\n return buildingBlockFieldItems.filter(item => {\n if (item.id === groupValue.target) return true;\n return !usedInputTargets.includes(`${item.id}`);\n });\n })\n );\n\n this._rowItemsCache.set(group, stream);\n\n return stream;\n }\n\n private readonly _outputTargetFiltersCache = new WeakMap<\n OutputRowFormGroup,\n Observable<string[]>\n >();\n public getUsedCaseTargetsForRow$(group: OutputRowFormGroup): Observable<string[]> {\n const cached = this._outputTargetFiltersCache.get(group);\n if (cached) return cached;\n\n const stream = combineLatest([\n this.outputsForm.valueChanges.pipe(startWith(this.outputsForm.value)),\n group.valueChanges.pipe(startWith(group.value)),\n ]).pipe(\n map(([outputsFormValue, groupValue]) => {\n const allTargets =\n outputsFormValue.outputs?.map(output => output.target).filter(Boolean) ?? [];\n\n return allTargets.filter(target => target !== groupValue.target);\n })\n );\n\n this._outputTargetFiltersCache.set(group, stream);\n\n return stream;\n }\n\n public readonly syncTimingItems: Array<{id: BuildingBlockSyncTiming; labelKey: string}> = [\n {\n id: 'CONTINUOUS' as BuildingBlockSyncTiming,\n labelKey: 'processLinkConfiguration.buildingBlock.sync.continuous',\n },\n {\n id: 'END' as BuildingBlockSyncTiming,\n labelKey: 'processLinkConfiguration.buildingBlock.sync.end',\n },\n ];\n\n public readonly params$ = getCaseManagementRouteParams(this.route);\n public readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public readonly sourceIsCase$ = new BehaviorSubject<boolean>(true);\n public readonly sourceIsIndependent$ = new BehaviorSubject<boolean>(false);\n\n /**\n * Returns the name of the source/target context in mappings.\n * When in a building block context, shows the parent building block name.\n * When in a case context, shows the case name.\n * When in an independent process context, shows the process label.\n */\n public readonly sourceContextName$: Observable<string> = combineLatest([\n this.params$,\n this.buildingBlockParams$,\n ]).pipe(\n switchMap(([caseParams, bbParams]) => {\n if (bbParams?.buildingBlockDefinitionKey && bbParams?.buildingBlockDefinitionVersionTag) {\n this.sourceIsCase$.next(false);\n this.sourceIsIndependent$.next(false);\n // We're in a building block context - fetch the parent building block name\n return this.buildingBlockApiService\n .getBuildingBlockDefinition(\n bbParams.buildingBlockDefinitionKey,\n bbParams.buildingBlockDefinitionVersionTag\n )\n .pipe(map(def => def?.name ?? bbParams.buildingBlockDefinitionKey));\n } else if (caseParams?.caseDefinitionKey && caseParams?.caseDefinitionVersionTag) {\n this.sourceIsCase$.next(true);\n this.sourceIsIndependent$.next(false);\n // We're in a case context - fetch the case name\n return this.buildingBlockApiService\n .getCaseDefinition(caseParams.caseDefinitionKey, caseParams.caseDefinitionVersionTag)\n .pipe(map(def => def?.name ?? caseParams.caseDefinitionKey));\n }\n // We're in an independent process context\n this.sourceIsCase$.next(false);\n this.sourceIsIndependent$.next(true);\n return of(this.translateService.instant('processLinkConfiguration.buildingBlock.process'));\n })\n );\n\n /**\n * Returns the name of the building block being configured.\n */\n public readonly targetBuildingBlockName$: Observable<string> = combineLatest([\n this.buildingBlockStateService.definitionKey$,\n this.buildingBlockStateService.definitionVersionTag$,\n ]).pipe(\n switchMap(([key, versionTag]) => {\n if (key && versionTag) {\n return this.buildingBlockApiService\n .getBuildingBlockDefinition(key, versionTag)\n .pipe(map(def => def?.name ?? key));\n }\n return of(\n this.translateService.instant('processLinkConfiguration.buildingBlock.buildingBlock')\n );\n })\n );\n\n private readonly _subscriptions = new Subscription();\n private _syncingFromState = false;\n private _suppressValidation = false;\n private _inputRefreshHandle: number | null = null;\n private _destroyed = false;\n\n public get inputs(): FormArray<InputRowFormGroup> {\n return this.inputsForm.controls.inputs;\n }\n\n public get outputs(): FormArray<OutputRowFormGroup> {\n return this.outputsForm.controls.outputs;\n }\n\n public readonly allInputsMapped$: Observable<boolean> = combineLatest([\n this.buildingBlockFields$,\n this.inputsForm.valueChanges.pipe(startWith(this.inputsForm.value)),\n ]).pipe(\n map(([fields, inputsFormValue]) => {\n const allTargets =\n inputsFormValue.inputs?.map(input => input.target).filter((t): t is string => !!t) ?? [];\n\n if (!fields || fields.length === 0) {\n return false;\n }\n\n return fields.every(field => allTargets.includes(field.name));\n })\n );\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly processLinkService: ProcessLinkService,\n private readonly processLinkStateService: ProcessLinkStateService,\n private readonly translateService: TranslateService,\n private readonly route: ActivatedRoute,\n private readonly changeDetectorRef: ChangeDetectorRef,\n private readonly buildingBlockApiService: ProcessLinkBuildingBlockApiService,\n private readonly stateService: ProcessLinkStateService\n ) {}\n\n ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([\n this.buildingBlockFields$,\n this.buildingBlockStateService.inputMappings$,\n ]).subscribe(([fields, mappings]) => {\n this.syncInputsIfNeeded(fields, mappings);\n })\n );\n\n this.buildingBlockStateService.outputMappings$.pipe(take(1)).subscribe(mappings => {\n this.syncOutputsFromState(mappings);\n });\n\n this._subscriptions.add(\n combineLatest([this.inputsForm.statusChanges, this.outputsForm.statusChanges]).subscribe(\n () => {\n this.triggerValidation();\n }\n )\n );\n\n this.triggerValidation();\n\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigureBuildingBlockPluginsStep();\n })\n );\n\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.persistProcessLink();\n })\n );\n\n this._subscriptions.add(\n this.outputsForm.valueChanges.subscribe(() => {\n this.persistOutputFormState();\n })\n );\n\n this._subscriptions.add(\n this.inputsForm.valueChanges.subscribe(() => {\n this.persistInputFormState();\n })\n );\n }\n\n public ngAfterViewInit(): void {\n this.queueInputSourceRefresh();\n }\n\n public ngOnDestroy(): void {\n this._destroyed = true;\n if (this._inputRefreshHandle !== null) {\n clearTimeout(this._inputRefreshHandle);\n this._inputRefreshHandle = null;\n }\n this._subscriptions.unsubscribe();\n }\n\n private createInputGroup(mapping?: BuildingBlockInputMapping): InputRowFormGroup {\n return new FormGroup<InputRowFormGroup['controls']>({\n source: new FormControl(mapping?.source ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n target: new FormControl(mapping?.target ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n });\n }\n\n private createOutputGroup(\n mapping?: BuildingBlockOutputMapping,\n sourceOverride?: string\n ): OutputRowFormGroup {\n return new FormGroup<OutputRowFormGroup['controls']>({\n source: new FormControl(sourceOverride ?? mapping?.source ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n target: new FormControl(mapping?.target ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n syncTiming: new FormControl<BuildingBlockSyncTiming>(\n (mapping?.syncTiming as BuildingBlockSyncTiming) ?? ('END' as BuildingBlockSyncTiming),\n {nonNullable: true, validators: [Validators.required]}\n ),\n });\n }\n\n public addInput(): void {\n this.inputs.push(this.createInputGroup());\n this.persistInputFormState();\n this.changeDetectorRef.detectChanges();\n }\n\n public deleteInput(index: number): void {\n this.inputs.removeAt(index);\n this.persistInputFormState();\n this.changeDetectorRef.detectChanges();\n }\n\n public addOutput(source?: string): void {\n this.outputs.push(this.createOutputGroup(undefined, source));\n this.persistOutputFormState();\n this.changeDetectorRef.detectChanges();\n }\n\n public deleteOutput(index: number): void {\n this.outputs.removeAt(index);\n this.persistOutputFormState();\n }\n\n private syncInputsFromState(\n fields: Array<{name: string; required: boolean}>,\n mappings: BuildingBlockInputMapping[]\n ): void {\n this._syncingFromState = true;\n const requiredTargets = fields.filter(f => f.required).map(f => f.name);\n const allMappings: BuildingBlockInputMapping[] = [\n ...requiredTargets.map(\n target => mappings.find(m => m.target === target) || {target: target, source: ''}\n ),\n ...mappings.filter(mapping => !requiredTargets.includes(mapping.target)),\n ];\n\n this.inputs.clear();\n allMappings.forEach(mapping => {\n this.inputs.push(this.createInputGroup(mapping));\n });\n this._syncingFromState = false;\n this.triggerValidation();\n this.queueInputSourceRefresh();\n }\n\n private syncInputsIfNeeded(\n fields: Array<{name: string; required: boolean}>,\n mappings: BuildingBlockInputMapping[]\n ): void {\n if (this._syncingFromState) {\n return;\n }\n\n const requiredTargets = fields.filter(f => f.required).map(f => f.name);\n const currentTargets =\n this.inputs.controls\n .map(group => group.controls.target.value)\n .filter((target): target is string => !!target) ?? [];\n const missingRequired = requiredTargets.some(target => !currentTargets.includes(target));\n const shouldSync =\n (this.inputs.length === 0 && (mappings.length > 0 || fields.length > 0)) || missingRequired;\n\n if (shouldSync) {\n this.syncInputsFromState(fields, mappings);\n return;\n }\n\n this.applyMappingSources(mappings);\n }\n\n private applyMappingSources(mappings: BuildingBlockInputMapping[]): void {\n const mappingByTarget = new Map<string, BuildingBlockInputMapping>(\n mappings.filter(mapping => !!mapping.target).map(mapping => [mapping.target, mapping])\n );\n let updated = false;\n\n this._syncingFromState = true;\n this.inputs.controls.forEach(group => {\n const target = group.controls.target.value;\n if (!target) return;\n const mapping = mappingByTarget.get(target);\n if (!mapping?.source) return;\n if (!group.controls.source.value) {\n group.controls.source.setValue(mapping.source);\n updated = true;\n }\n });\n this._syncingFromState = false;\n\n if (updated) {\n this.triggerValidation();\n this.queueInputSourceRefresh();\n }\n }\n\n private queueInputSourceRefresh(): void {\n if (this._inputRefreshHandle !== null) {\n clearTimeout(this._inputRefreshHandle);\n }\n this._inputRefreshHandle = window.setTimeout(() => {\n if (this._destroyed) return;\n this.inputs.controls.forEach(group => {\n const value = group.controls.source.value ?? '';\n group.controls.source.setValue(value, {emitEvent: false});\n });\n this.changeDetectorRef.detectChanges();\n this._inputRefreshHandle = null;\n }, 0);\n }\n\n public isSyncTimingSelected(group: OutputRowFormGroup, value: BuildingBlockSyncTiming): boolean {\n return group.controls.syncTiming.value === value;\n }\n\n private syncOutputsFromState(mappings: BuildingBlockOutputMapping[]): void {\n this._syncingFromState = true;\n this.outputs.clear();\n (mappings || []).forEach(mapping => {\n this.outputs.push(this.createOutputGroup(mapping));\n });\n this._syncingFromState = false;\n this.triggerValidation();\n }\n\n private persistInputFormState(): void {\n if (this._syncingFromState) {\n return;\n }\n const mapped: Array<BuildingBlockInputMapping> = this.inputs.controls.map(group => {\n return {source: group.value.source, target: group.value.target} as BuildingBlockInputMapping;\n });\n this.buildingBlockStateService.setInputMappings(mapped);\n this.triggerValidation();\n }\n\n private persistOutputFormState(): void {\n if (this._syncingFromState) {\n return;\n }\n const mapped: Array<BuildingBlockOutputMapping> = this.outputs.controls.map(group => {\n return {\n source: group.value.source,\n target: group.value.target,\n syncTiming: (group.value.syncTiming ?? 'END') as BuildingBlockSyncTiming,\n } as BuildingBlockOutputMapping;\n });\n this.buildingBlockStateService.setOutputMappings(mapped);\n this.triggerValidation();\n }\n\n private isValid(): boolean {\n const fields = this.buildingBlockStateService.getBuildingBlockFieldsSnapshot();\n this.clearCustomErrors();\n const inputsValid = this.validateInputs(fields);\n const outputsValid = this.validateOutputs();\n const overall = this.inputsForm.valid && this.outputsForm.valid && inputsValid && outputsValid;\n this.buttonService[overall ? 'enableSaveButton' : 'disableSaveButton']();\n return overall;\n }\n\n private validateInputs(fields: Array<{name: string; required: boolean}>): boolean {\n let valid = true;\n const requiredTargets = new Set(fields.filter(f => f.required).map(f => f.name));\n const targetCounts: Record<string, number> = {};\n\n this.inputs.controls.forEach(group => {\n const target = group.controls.target.value || '';\n const source = group.controls.source.value || '';\n if (target) {\n targetCounts[target] = (targetCounts[target] || 0) + 1;\n }\n if (!source) {\n group.controls.source.setErrors({required: true});\n valid = false;\n }\n if (!target) {\n group.controls.target.setErrors({required: true});\n valid = false;\n }\n });\n\n Object.entries(targetCounts).forEach(([target, count]) => {\n if (count > 1) {\n this.inputs.controls\n .filter(g => g.controls.target.value === target)\n .forEach(g => g.controls.target.setErrors({duplicateTarget: true}));\n valid = false;\n }\n });\n\n requiredTargets.forEach(reqTarget => {\n const match = this.inputs.controls.find(g => g.controls.target.value === reqTarget);\n if (!match || !match.controls.source.value) {\n valid = false;\n }\n });\n\n return valid;\n }\n\n private validateOutputs(): boolean {\n let valid = true;\n const targetCounts: Record<string, number> = {};\n\n this.outputs.controls.forEach(group => {\n const target = group.controls.target.value || '';\n const source = group.controls.source.value || '';\n const syncTiming = group.controls.syncTiming.value;\n if (target) {\n targetCounts[target] = (targetCounts[target] || 0) + 1;\n }\n if (!source) {\n group.controls.source.setErrors({required: true});\n valid = false;\n }\n if (!target) {\n group.controls.target.setErrors({required: true});\n valid = false;\n }\n if (!syncTiming) {\n group.controls.syncTiming.setErrors({required: true});\n valid = false;\n }\n });\n\n Object.entries(targetCounts).forEach(([target, count]) => {\n if (count > 1) {\n this.outputs.controls\n .filter(g => g.controls.target.value === target)\n .forEach(g => g.controls.target.setErrors({duplicateTarget: true}));\n valid = false;\n }\n });\n\n return valid;\n }\n\n private clearCustomErrors(): void {\n this.inputs.controls.forEach(group => {\n group.controls.source.setErrors(null);\n group.controls.target.setErrors(null);\n });\n this.outputs.controls.forEach(group => {\n group.controls.source.setErrors(null);\n group.controls.target.setErrors(null);\n group.controls.syncTiming.setErrors(null);\n });\n }\n\n private triggerValidation(): void {\n if (this._suppressValidation) return;\n this._suppressValidation = true;\n Promise.resolve().then(() => {\n this.isValid();\n this._suppressValidation = false;\n });\n }\n\n private persistProcessLink(): void {\n if (!this.isValid()) {\n this.buttonService.disableSaveButton();\n return;\n }\n this.buttonService.disableSaveButton();\n this.processLinkStateService.startSaving();\n this.processLinkStateService.selectedProcessLink$\n .pipe(take(1))\n .subscribe(selectedProcessLink => {\n if (selectedProcessLink && selectedProcessLink.processLinkType === 'building-block') {\n this.updateProcessLink(selectedProcessLink);\n } else {\n this.createProcessLink();\n }\n });\n }\n\n private createProcessLink(): void {\n this.processLinkStateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.processLinkStateService.stopSaving();\n return;\n }\n const activityId = modalParams.element?.id;\n\n if (!activityId) {\n this.processLinkStateService.stopSaving();\n return;\n }\n\n const request: BuildingBlockProcessLinkCreateDto = {\n processDefinitionId: modalParams.processDefinitionId ?? '-',\n activityId,\n activityType: modalParams.element?.activityListenerType ?? '',\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings:\n this.buildingBlockStateService.getPluginConfigurationMappingsSnapshot() as Record<\n string,\n string\n >,\n inputMappings: this.buildingBlockStateService.getInputMappingsSnapshot(),\n outputMappings: this.buildingBlockStateService.getOutputMappingsSnapshot(),\n };\n\n this.processLinkStateService.sendProcessLinkCreateEvent(request);\n });\n }\n\n private updateProcessLink(processLink: ProcessLink): void {\n this.processLinkStateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.processLinkStateService.stopSaving();\n return;\n }\n\n const activityId = modalParams.element?.id;\n\n const request: BuildingBlockProcessLinkUpdateDto = {\n id: processLink.id,\n activityId: activityId,\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings:\n this.buildingBlockStateService.getPluginConfigurationMappingsSnapshot() as Record<\n string,\n string\n >,\n inputMappings: this.buildingBlockStateService.getInputMappingsSnapshot(),\n outputMappings: this.buildingBlockStateService.getOutputMappingsSnapshot(),\n };\n\n this.processLinkStateService.sendProcessLinkUpdateEvent(request);\n });\n }\n\n public isRequiredTarget(\n fields: Array<{name: string; required: boolean}> | null,\n target: string\n ): boolean {\n if (!fields) return false;\n return fields.some(field => field.required && field.name === target);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@let obs =\n {\n fields: (buildingBlockFields$ | async),\n fieldItems: (buildingBlockFieldItems$ | async),\n params: (params$ | async),\n buildingBlockParams: (buildingBlockParams$ | async),\n sourceContextName: (sourceContextName$ | async),\n targetBuildingBlockName: (targetBuildingBlockName$ | async),\n sourceIsCase: (sourceIsCase$ | async),\n sourceIsIndependent: (sourceIsIndependent$ | async),\n caseLabelTranslation: ('Case' | translate),\n processLabelTranslation: ('processLinkConfiguration.buildingBlock.process' | translate),\n buildingBlockLabelTranslation:\n ('processLinkConfiguration.buildingBlock.selectLabel' | translate),\n };\n\n<div class=\"mapping-step\">\n <section class=\"mapping-section\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.inputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"inputsForm\">\n <div class=\"mapping-header input\">\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n </div>\n\n <div formArrayName=\"inputs\">\n @for (group of inputs.controls; let inputIndex = $index; track inputIndex) {\n <div class=\"mapping-row input\" [formGroup]=\"group\">\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"source\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [formControl]=\"group.get('source')\"\n ></valtimo-value-path-selector>\n }\n\n <div class=\"arrow\">→</div>\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n @if (isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <div class=\"required-target\">\n {{ 'doc:' + group.get('target')?.value }}\n </div>\n } @else {\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"target\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [items]=\"getBuildingBlockFieldItemsForRow$(group) | async\"\n [dropUp]=\"false\"\n >\n </v-select>\n }\n </div>\n\n <div class=\"mapping-cell-actions\">\n @if (!isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteInput(inputIndex)\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n } @else {\n <div class=\"required-indicator\">*</div>\n\n <div>\n {{ 'interface.required' | translate }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addInput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addInput' | translate\"\n [disabled]=\"allInputsMapped$ | async\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addInput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n\n <section class=\"mapping-section\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.outputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"outputsForm\">\n <div class=\"mapping-header output\">\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <div class=\"sync-options\" [style.display]=\"'none'\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.sync.title' | translate\"\n />\n </div>\n </div>\n\n <div formArrayName=\"outputs\">\n @for (group of outputs.controls; let outputIndex = $index; track outputIndex) {\n <div class=\"mapping-row output\" [formGroup]=\"group\">\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"source\"\n [items]=\"obs.fieldItems || []\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [dropUp]=\"true\"\n >\n </v-select>\n </div>\n\n <div class=\"arrow\">→</div>\n </div>\n\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"target\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [formControl]=\"group.get('target')\"\n [appendInline]=\"false\"\n [filterItems]=\"getUsedCaseTargetsForRow$(group) | async\"\n [dropUp]=\"true\"\n ></valtimo-value-path-selector>\n }\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [style.display]=\"'none'\">\n <cds-radio-group\n class=\"sync-radio-group\"\n formControlName=\"syncTiming\"\n [attr.name]=\"'syncTiming-' + outputIndex\"\n >\n @for (item of syncTimingItems; track item.id) {\n <cds-radio [value]=\"item.id\" [checked]=\"isSyncTimingSelected(group, item.id)\">\n {{ item.labelKey | translate }}\n </cds-radio>\n }\n </cds-radio-group>\n </div>\n\n <div class=\"mapping-cell-actions\">\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteOutput(outputIndex)\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addOutput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addOutput' | translate\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addOutput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n</div>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {ProcessLinkStateService} from '../../services';\nimport {UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-choose-process-link-type',\n templateUrl: './choose-process-link-type.component.html',\n styleUrls: ['./choose-process-link-type.component.scss'],\n})\nexport class ChooseProcessLinkTypeComponent {\n public readonly availableProcessLinkTypes$ =\n this.processLinkStateService.availableProcessLinkTypes$;\n\n constructor(private readonly processLinkStateService: ProcessLinkStateService) {}\n\n public getTooltipKey(processLinkTypeId: string): string {\n if (\n this.processLinkStateService.isBuildingBlockContext() &&\n UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK.includes(processLinkTypeId)\n ) {\n return 'processLinkTypeDisabledTooltip.buildingBlockUnsupported';\n }\n return 'processLinkTypeDisabledTooltip.' + processLinkTypeId;\n }\n\n public selectProcessLinkType(processLinkTypeId: string): void {\n this.processLinkStateService.selectProcessLinkType(processLinkTypeId);\n }\n}\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\n<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"getTooltipKey(processLinkTypeId) | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'ui-component'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {FormDefinitionListItem, FormDisplayType, FormSize} from '../../models';\nimport {ProcessLinkButtonService, ProcessLinkStateService} from '../../services';\nimport {MultiInputValues} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-display-configuration',\n templateUrl: './form-display-configuration.component.html',\n})\nexport class FormDisplayConfigurationComponent implements OnInit, OnDestroy {\n @Input() public selectedFormDefinition: FormDefinitionListItem;\n\n @Output() public formDisplayValue = new EventEmitter<string>();\n @Output() public formSizeValue = new EventEmitter<string>();\n @Output() public subtitlesValue = new EventEmitter<string[]>();\n\n public readonly formDisplayValue$ = new BehaviorSubject<FormDisplayType | null>(null);\n public readonly formSizeValue$ = new BehaviorSubject<FormSize | null>(null);\n private readonly _subtitles$ = new BehaviorSubject<string[]>([]);\n public subtitles$: Observable<MultiInputValues> = this._subtitles$.pipe(\n map(subtitles => subtitles.map(subtitle => ({value: subtitle})))\n );\n public readonly disableFormSizeInput$ = new BehaviorSubject<boolean>(true);\n public readonly saving$ = this.stateService.saving$;\n public readonly isUserTask$ = new BehaviorSubject<boolean>(false);\n\n private readonly _DISPLAY_TYPE_OPTIONS: FormDisplayType[] = ['modal', 'panel'];\n private readonly _FORM_SIZE_OPTIONS: FormSize[] = ['extraSmall', 'small', 'medium', 'large'];\n private readonly _subscriptions = new Subscription();\n\n public readonly formDisplayTypeListItems$: Observable<ListItem[]> = combineLatest([\n this.formDisplayValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([formDisplayValue]) =>\n this._DISPLAY_TYPE_OPTIONS.map((key: string) => ({\n content: this.translateService.instant(`processLinkSteps.displayType.options.${key}`),\n key: key,\n selected: this.formDisplayValue$.getValue() === key,\n }))\n )\n );\n\n public readonly formSizeListItems$: Observable<ListItem[]> = combineLatest([\n this.formSizeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([formSizeValue]) =>\n this._FORM_SIZE_OPTIONS.map((key: string) => ({\n content: this.translateService.instant(`processLinkSteps.formSize.options.${key}`),\n key: key,\n selected: this.formSizeValue$.getValue() === key,\n }))\n )\n );\n\n constructor(\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stateService: ProcessLinkStateService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([\n this.stateService.modalParams$,\n this.stateService.selectedProcessLink$,\n ]).subscribe(([modalParams, selectedProcessLink]) => {\n this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');\n\n if (selectedProcessLink) {\n if (selectedProcessLink.formDisplayType) this.disableFormSizeInput$.next(false);\n if (selectedProcessLink.activityType.includes('bpmn:UserTask'))\n this.isUserTask$.next(true);\n this.formDisplayValue$.next(selectedProcessLink.formDisplayType ?? null);\n this.formSizeValue$.next(selectedProcessLink.formSize ?? null);\n this._subtitles$.next(selectedProcessLink.subtitles ?? []);\n }\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectFormDisplayType(event: ListItem): void {\n this.updateFormDisplayType(event?.key);\n this.enableSaveButtonWhenValid();\n }\n\n public selectFormSize(event: ListItem): void {\n this.updateFormSize(event?.key);\n this.enableSaveButtonWhenValid();\n }\n\n public onSubtitlesChange(subtitles: string[]): void {\n this.subtitlesValue.emit(subtitles);\n }\n\n private updateFormDisplayType(formDisplayType): void {\n formDisplayType ? this.disableFormSizeInput$.next(false) : this.resetFormSize();\n this.formDisplayValue$.next(formDisplayType);\n this.formDisplayValue.emit(formDisplayType);\n }\n\n private updateFormSize(formSize): void {\n this.formSizeValue$.next(formSize);\n this.formSizeValue.emit(formSize);\n }\n\n private resetFormSize(): void {\n this.disableFormSizeInput$.next(true);\n this.updateFormSize(null);\n }\n\n private enableSaveButtonWhenValid(): void {\n if (\n this.selectedFormDefinition &&\n this.formDisplayValue$.getValue() &&\n this.formSizeValue$.getValue()\n )\n this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {BehaviorSubject, combineLatest, map, mergeMap, Observable, Subscription, tap} from 'rxjs';\nimport {filter, take, withLatestFrom} from 'rxjs/operators';\nimport {\n FormDefinitionListItem,\n FormDisplayType,\n FormProcessLinkUpdateRequestDto,\n FormSize,\n} from '../../models';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-form',\n templateUrl: './select-form.component.html',\n styleUrls: ['./select-form.component.scss'],\n})\nexport class SelectFormComponent implements OnInit, OnDestroy {\n public formDisplayValue!: FormDisplayType;\n public formSizeValue!: FormSize;\n public subtitlesValue: string[] = [];\n public selectedFormDefinition!: FormDefinitionListItem;\n\n public readonly saving$ = this.stateService.saving$;\n public readonly caseDefinitionId$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n\n private readonly formDefinitions$: Observable<Array<FormDefinitionOption>> =\n this.caseDefinitionId$.pipe(\n mergeMap(caseDefinitionId => {\n if (!!caseDefinitionId) {\n return this.formService.getAllFormDefinitionsForCaseDefinition(\n caseDefinitionId?.caseDefinitionKey ?? '',\n caseDefinitionId?.caseDefinitionVersionTag ?? ''\n );\n }\n return this.formService.getAllUnlinkedFormDefinitions();\n })\n );\n\n public readonly formDefinitionListItems$: Observable<Array<FormDefinitionListItem>> =\n combineLatest([this.stateService.selectedProcessLink$, this.formDefinitions$]).pipe(\n map(([selectedProcessLink, formDefinitions]) =>\n formDefinitions.map(definition => ({\n content: definition.name,\n id: definition.id,\n selected: selectedProcessLink\n ? selectedProcessLink.formDefinitionId === definition.id\n : false,\n }))\n ),\n tap(formDefinitionListItems => {\n const selectedItem = formDefinitionListItems.find(item => item.selected);\n\n if (selectedItem) {\n this.selectFormDefinition(selectedItem);\n }\n })\n );\n\n private _subscriptions = new Subscription();\n private isUserTask$ = new BehaviorSubject<boolean>(false);\n\n private readonly _DEFAULT_FORM_DISPLAY_TYPE: FormDisplayType = 'panel';\n private readonly _DEFAULT_FORM_DISPLAY_SIZE: FormSize = 'medium';\n\n constructor(\n private readonly formService: FormService,\n private readonly stateService: ProcessLinkStateService,\n private readonly processLinkService: ProcessLinkService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n this._subscriptions.add(\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.stateService.modalParams$,\n ]).subscribe(([selectedProcessLink, modalParams]) => {\n if (selectedProcessLink) {\n this.formDisplayValue = selectedProcessLink.formDisplayType;\n this.formSizeValue = selectedProcessLink.formSize;\n }\n\n this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectFormDefinition(formDefinition: FormDefinitionListItem): void {\n this.selectedFormDefinition = formDefinition?.id ? formDefinition : null;\n\n if (this.selectedFormDefinition) this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n\n public selectedFormDisplayValue(formDisplay: FormDisplayType): void {\n this.formDisplayValue = formDisplay;\n }\n\n public selectedFormSizeValue(formSize: FormSize): void {\n this.formSizeValue = formSize;\n }\n\n public selectedSubtitlesValue(subtitles: string[]): void {\n this.subtitlesValue = subtitles;\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.stateService.startSaving();\n this.saveProcessLink();\n })\n );\n }\n\n private saveProcessLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n if (selectedProcessLink) {\n this.updateProcessLink();\n } else {\n this.saveNewProcessLink();\n }\n });\n }\n\n private updateProcessLink(): void {\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.stateService.viewModelEnabled$,\n this.isUserTask$,\n ])\n .pipe(take(1))\n .subscribe(([selectedProcessLink, viewModelEnabled, isUserTask]) => {\n const updateProcessLinkRequest: FormProcessLinkUpdateRequestDto = {\n id: selectedProcessLink.id,\n formDefinitionId: this.selectedFormDefinition.id,\n activityId: selectedProcessLink.activityId,\n viewModelEnabled,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_TYPE}),\n ...(isUserTask && {subtitles: this.subtitlesValue}),\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);\n });\n }\n\n private saveNewProcessLink(): void {\n combineLatest([\n this.stateService.modalParams$,\n this.stateService.selectedProcessLinkTypeId$,\n this.stateService.viewModelEnabled$,\n this.isUserTask$,\n ])\n .pipe(take(1))\n .subscribe(([modalParams, processLinkTypeId, viewModelEnabled, isUserTask]) => {\n const createRequest = {\n formDefinitionId: this.selectedFormDefinition.id,\n activityType: modalParams.element.activityListenerType,\n processDefinitionId: modalParams.processDefinitionId,\n processLinkType: processLinkTypeId,\n activityId: modalParams.element.id,\n viewModelEnabled,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {\n formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE,\n }),\n ...(isUserTask && {\n subtitles: this.subtitlesValue,\n }),\n };\n\n this.stateService.sendProcessLinkCreateEvent(createRequest);\n });\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {CaseManagementParams, getCaseManagementRouteParams, Page} from '@valtimo/shared';\nimport {FormFlowService, ListFormFlowDefinition} from '@valtimo/form-flow-management';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, tap} from 'rxjs';\nimport {filter, switchMap, take, withLatestFrom} from 'rxjs/operators';\n\nimport {\n FormDefinitionListItem,\n FormDisplayType,\n FormFlowProcessLinkCreateRequestDto,\n FormFlowProcessLinkUpdateRequestDto,\n FormSize,\n} from '../../models';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-form-flow',\n templateUrl: './select-form-flow.component.html',\n styleUrls: ['./select-form-flow.component.scss'],\n})\nexport class SelectFormFlowComponent implements OnInit, OnDestroy {\n public formDisplayValue!: FormDisplayType;\n public formSizeValue!: FormSize;\n public selectedFormFlowDefinitionId: string;\n public subtitlesValue: string[] = [];\n public readonly saving$ = this.stateService.saving$;\n private readonly formFlowDefinitions$: Observable<ListFormFlowDefinition[]> =\n getCaseManagementRouteParams(this.route).pipe(\n switchMap((params: CaseManagementParams | undefined) =>\n this.formFlowService.getFormFlowDefinitions(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? ''\n )\n ),\n map((formFlowDefinitions: Page<ListFormFlowDefinition>) => formFlowDefinitions.content)\n );\n\n public readonly formFlowDefinitionListItems$: Observable<Array<FormDefinitionListItem>> =\n combineLatest([this.stateService.selectedProcessLink$, this.formFlowDefinitions$]).pipe(\n map(([selectedProcessLink, formFlowDefinitions]) =>\n formFlowDefinitions.map(definition => ({\n content: definition.key,\n id: definition.key,\n selected: selectedProcessLink\n ? selectedProcessLink.formFlowDefinitionKey === definition.key\n : false,\n }))\n ),\n tap(formFlowDefinitionListItems => {\n const selectedItem = formFlowDefinitionListItems.find(item => item.selected);\n\n if (selectedItem) {\n this.selectFormFlowDefinition(selectedItem);\n }\n })\n );\n\n private _subscriptions = new Subscription();\n private isUserTask$ = new BehaviorSubject<boolean>(false);\n\n private readonly _DEFAULT_FORM_DISPLAY_TYPE: FormDisplayType = 'panel';\n private readonly _DEFAULT_FORM_DISPLAY_SIZE: FormSize = 'medium';\n\n constructor(\n private readonly formFlowService: FormFlowService,\n private readonly stateService: ProcessLinkStateService,\n private readonly processLinkService: ProcessLinkService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n this._subscriptions.add(\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.stateService.modalParams$,\n ]).subscribe(([selectedProcessLink, modalParams]) => {\n if (selectedProcessLink) {\n this.formDisplayValue = selectedProcessLink.formDisplayType;\n this.formSizeValue = selectedProcessLink.formSize;\n }\n\n this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectedFormDisplayValue(formDisplay: FormDisplayType): void {\n this.formDisplayValue = formDisplay;\n }\n\n public selectedFormSizeValue(formSize: FormSize): void {\n this.formSizeValue = formSize;\n }\n\n public selectFormFlowDefinition(formFlowDefinition: any): void {\n if (!formFlowDefinition) return;\n this.selectedFormFlowDefinitionId = formFlowDefinition.id;\n\n if (this.selectedFormFlowDefinitionId) this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n\n public selectedSubtitlesValue(subtitles: string[]): void {\n this.subtitlesValue = subtitles;\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.stateService.startSaving();\n this.saveFormFlowLink();\n })\n );\n }\n\n private saveFormFlowLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n if (selectedProcessLink) this.updateProcessLink();\n else this.saveNewProcessLink();\n });\n }\n\n private updateProcessLink(): void {\n combineLatest([this.stateService.selectedProcessLink$, this.isUserTask$])\n .pipe(take(1))\n .subscribe(([selectedProcessLink, isUserTask]) => {\n const updateProcessLinkRequest: FormFlowProcessLinkUpdateRequestDto = {\n id: selectedProcessLink.id,\n formFlowDefinitionId: this.selectedFormFlowDefinitionId,\n activityId: selectedProcessLink.activityId,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE}),\n ...(isUserTask && {subtitles: this.subtitlesValue}),\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);\n });\n }\n\n private saveNewProcessLink(): void {\n combineLatest([\n this.stateService.modalParams$,\n this.stateService.selectedProcessLinkTypeId$,\n this.isUserTask$,\n ])\n .pipe(take(1))\n .subscribe(([modalParams, processLinkTypeId, isUserTask]) => {\n const createRequest = {\n formFlowDefinitionKey: this.selectedFormFlowDefinitionId,\n activityType: modalParams.element.activityListenerType,\n processDefinitionId: modalParams.processDefinitionId,\n processLinkType: processLinkTypeId,\n activityId: modalParams.element.id,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE}),\n ...(isUserTask && {subtitles: this.subtitlesValue}),\n } as FormFlowProcessLinkCreateRequestDto;\n\n this.stateService.sendProcessLinkCreateEvent(createRequest);\n });\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n withLatestFrom,\n} from 'rxjs';\nimport {FormCustomComponentConfig, UIComponentProcessLinkUpdateRequestDto} from '../../models';\nimport {ListItem} from 'carbon-components-angular';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n} from '../../services';\nimport {FORM_CUSTOM_COMPONENT_TOKEN} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-ui-component',\n templateUrl: './select-ui-component.component.html',\n styleUrls: ['./select-ui-component.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectUIComponentComponent implements OnInit, OnDestroy {\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n public readonly formCustomComponentListItems$: Observable<Array<ListItem>> = combineLatest([\n this.stateService.selectedProcessLink$,\n this._formCustomComponentConfig$,\n ]).pipe(\n map(([selectedProcessLink, formCustomComponentConfigs]) =>\n Object.keys(formCustomComponentConfigs).map(key => ({\n content: key,\n selected: selectedProcessLink ? selectedProcessLink?.componentKey === key : false,\n }))\n ),\n tap(formCustomComponentListItems => {\n const selectedItem = formCustomComponentListItems.find(item => item.selected);\n if (selectedItem) {\n this.selectCustomComponent(selectedItem);\n }\n })\n );\n\n private readonly _subscriptions = new Subscription();\n\n private _selectedCustomComponent: ListItem;\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly processLinkService: ProcessLinkService,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig\n ) {\n this._formCustomComponentConfig$.next(this.formCustomComponentConfig);\n }\n\n public ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectCustomComponent(selectedCustomComponent: ListItem): void {\n this._selectedCustomComponent = selectedCustomComponent;\n this._selectedCustomComponent?.content\n ? this.buttonService.enableSaveButton()\n : this.buttonService.disableSaveButton();\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.stateService.startSaving();\n this.saveProcessLink();\n })\n );\n }\n\n private saveProcessLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n selectedProcessLink ? this.updateProcessLink() : this.saveNewProcessLink();\n });\n }\n\n private updateProcessLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n const updateRequest: UIComponentProcessLinkUpdateRequestDto = {\n id: selectedProcessLink.id,\n componentKey: this._selectedCustomComponent.content,\n activityId: selectedProcessLink.activityId,\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateRequest);\n });\n }\n\n private saveNewProcessLink(): void {\n combineLatest([this.stateService.modalParams$, this.stateService.selectedProcessLinkTypeId$])\n .pipe(\n take(1),\n switchMap(([modalParams, processLinkTypeId]) => {\n const createRequest = {\n componentKey: this._selectedCustomComponent.content,\n activityType: modalParams.element.activityListenerType || '',\n processDefinitionId: modalParams.processDefinitionId,\n processLinkType: processLinkTypeId,\n activityId: modalParams.element.id,\n };\n\n this.stateService.sendProcessLinkCreateEvent(createRequest);\n return [];\n })\n )\n .subscribe({\n next: () => this.stateService.closeModal(),\n error: () => this.stateService.stopSaving(),\n });\n }\n}\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<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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {\n BuildingBlockStateService,\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {BuildingBlockDefinitionDto} from '@valtimo/shared';\nimport {catchError, filter, map, Observable, of, shareReplay, Subscription, tap, withLatestFrom} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-building-block',\n templateUrl: './select-building-block.component.html',\n styleUrls: ['./select-building-block.component.scss'],\n})\nexport class SelectBuildingBlockComponent implements OnInit, OnDestroy {\n public readonly buildingBlocks$: Observable<Array<BuildingBlockDefinitionDto>> =\n this.processLinkBuildingBlockApiService\n .getBuildingBlockDefinitions({includeArtwork: true})\n .pipe(\n map(definitions => [...(definitions ?? [])]),\n map(definitions =>\n definitions.sort((a, b) => (a.name || a.key).localeCompare(b.name || b.key))\n ),\n catchError(() => of([])),\n tap(() => {\n this.loading = false;\n }),\n shareReplay(1)\n );\n\n public loading = true;\n public selectedKey: string | null = null;\n\n private readonly subscriptions = new Subscription();\n private buildingBlocks: Array<BuildingBlockDefinitionDto> = [];\n\n constructor(\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService,\n private readonly stateService: ProcessLinkStateService,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService\n ) {}\n\n public ngOnInit(): void {\n this.buttonService.disableNextButton();\n this.subscriptions.add(\n this.buildingBlocks$.subscribe(definitions => {\n this.buildingBlocks = definitions ?? [];\n\n if (this.selectedKey) {\n this.stepService.updateBuildingBlockSelectionStepLabel(\n this.getDefinitionLabel(this.findDefinitionByKey(this.selectedKey))\n );\n }\n })\n );\n\n this.subscriptions.add(\n this.buildingBlockStateService.definitionKey$.subscribe(key => {\n this.selectedKey = key;\n if (key) {\n this.stepService.updateBuildingBlockSelectionStepLabel(\n this.getDefinitionLabel(this.findDefinitionByKey(key))\n );\n this.buttonService.enableNextButton();\n } else {\n this.buttonService.disableNextButton();\n }\n })\n );\n\n this.subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n\n this.subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigureBuildingBlockPluginsStep(\n this.getDefinitionLabel(this.findDefinitionByKey(this.selectedKey))\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n public onSelectionChange(event: {value: BuildingBlockDefinitionDto}): void {\n const definition = event?.value;\n this.selectedKey = definition?.key ?? null;\n this.buildingBlockStateService.setDefinitionKey(definition?.key ?? null);\n this.stepService.updateBuildingBlockSelectionStepLabel(this.getDefinitionLabel(definition));\n if (definition?.key) {\n this.buttonService.enableNextButton();\n } else {\n this.buttonService.disableNextButton();\n }\n }\n\n public trackByKey(_: number, definition: BuildingBlockDefinitionDto): string {\n return definition.key;\n }\n\n private findDefinitionByKey(key: string | null): BuildingBlockDefinitionDto | undefined {\n if (!key) return undefined;\n return this.buildingBlocks.find(definition => definition.key === key);\n }\n\n private getDefinitionLabel(definition?: BuildingBlockDefinitionDto): string {\n if (!definition) return '';\n const name = definition.name || definition.key;\n return name;\n }\n}\n","<!--\n Copyright 2015-2025 Ritense BV\n Licensed under the EUPL, Version 1.2\n-->\n\n<div class=\"select-building-block\" *ngIf=\"!loading; else loadingState\">\n <ng-container *ngIf=\"buildingBlocks$ | async as buildingBlocks\">\n <ng-container *ngIf=\"buildingBlocks.length; else emptyState\">\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"onSelectionChange($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ 'processLinkConfiguration.buildingBlock.name' | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.buildingBlock.description' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let buildingBlock of buildingBlocks\" [value]=\"buildingBlock\">\n <cds-list-column>\n <div *ngIf=\"buildingBlock.imageBase64\">\n <img\n class=\"building-block-artwork\"\n [src]=\"'data:image/png;base64,' + buildingBlock.imageBase64\"\n [title]=\"buildingBlock.name\"\n />\n </div>\n </cds-list-column>\n <cds-list-column>{{ buildingBlock.name }}</cds-list-column>\n <cds-list-column>{{ buildingBlock.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingState>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #emptyState>\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.emptyState' | translate }}\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {BuildingBlockStateService} from '../../services/building-block-state.service';\nimport {\n PluginConfiguration,\n PluginManagementService,\n PluginTranslationService,\n} from '@valtimo/plugin';\nimport {\n BuildingBlockProcessLinkCreateDto,\n BuildingBlockProcessLinkUpdateDto,\n PluginConfigurationViewModel,\n ProcessLink,\n ProcessLinkType,\n} from '../../models';\nimport {combineLatest, distinctUntilChanged, Observable, of, shareReplay, Subscription} from 'rxjs';\nimport {catchError, filter, map, switchMap, take, withLatestFrom} from 'rxjs/operators';\nimport {ListItem} from 'carbon-components-angular/dropdown';\nimport {TranslateService} from '@ngx-translate/core';\nimport {NotificationContent} from 'carbon-components-angular';\n\n@Component({\n standalone: false,\n selector: 'valtimo-configure-building-block-plugins',\n templateUrl: './configure-building-block-plugins.component.html',\n styleUrls: ['./configure-building-block-plugins.component.scss'],\n})\nexport class ConfigureBuildingBlockPluginsComponent implements OnInit, OnDestroy {\n public readonly pluginKeys$ = this.buildingBlockStateService.requiredPluginKeys$;\n public readonly isNestedBuildingBlock$ = this.buildingBlockStateService.isNestedBuildingBlock$;\n private readonly _pluginDependenciesWarningTranslationKey$: Observable<string> =\n this.buildingBlockStateService.pluginDependencies$.pipe(\n map(dependencies => {\n if (!dependencies || !dependencies.length) return '';\n\n const zaakInstanceLinkDependency = dependencies.includes('ZAAK_INSTANCE_LINK');\n const zaakTypeLinkDependency = dependencies.includes('ZAAK_TYPE_LINK');\n\n if (zaakInstanceLinkDependency && zaakTypeLinkDependency) {\n return 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.zaakInstanceAndTypeLink';\n } else if (zaakInstanceLinkDependency) {\n return 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.zaakInstanceLink';\n } else if (zaakTypeLinkDependency) {\n return 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.zaakTypeLink';\n }\n return '';\n })\n );\n\n public readonly dependenciesNotificationObject$: Observable<NotificationContent> = combineLatest([\n this._pluginDependenciesWarningTranslationKey$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([warningTranslationKey]) =>\n !warningTranslationKey\n ? null\n : {\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant(\n 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.title'\n ),\n message: this.translateService.instant(warningTranslationKey),\n showClose: false,\n }\n )\n );\n public readonly loading$ = this.buildingBlockStateService.requirementsLoading$;\n public readonly versions$ = this.buildingBlockStateService.versions$;\n public readonly definitionVersionTag$ = this.buildingBlockStateService.definitionVersionTag$;\n public readonly versionPlaceholder$ = this.translateService.stream(\n 'processLinkConfiguration.buildingBlock.versionPlaceholder'\n );\n public readonly configurationPlaceholder$ = this.translateService.stream(\n 'processLinkConfiguration.buildingBlock.configurationPlaceholder'\n );\n public readonly versionItems$: Observable<Array<ListItem>> = combineLatest([\n this.versions$,\n this.definitionVersionTag$,\n this.versionPlaceholder$,\n ]).pipe(\n map(([versions, selectedVersion, placeholder]) => {\n const normalizedSelectedVersion = selectedVersion || '';\n return [\n {\n id: '',\n content: placeholder,\n selected: normalizedSelectedVersion === '',\n },\n ...(versions || []).map(\n version =>\n ({\n id: version,\n content: version,\n selected: normalizedSelectedVersion === version,\n }) as ListItem\n ),\n ];\n })\n );\n public readonly pluginConfigurationViewModels$: Observable<Array<PluginConfigurationViewModel>> =\n combineLatest([\n this.pluginKeys$,\n this.buildingBlockStateService.pluginMappings$,\n this.configurationPlaceholder$,\n ]).pipe(\n switchMap(([pluginKeys, pluginMappings, placeholder]) => {\n if (!pluginKeys?.length) {\n return of([]);\n }\n\n return combineLatest(\n pluginKeys.map(pluginKey =>\n this.getConfigurationOptions(pluginKey).pipe(\n map(options => ({\n key: pluginKey,\n label: this.pluginLabel(pluginKey),\n dropdownItems: this.buildDropdownItems(\n options,\n pluginMappings?.[pluginKey],\n placeholder\n ),\n hasOptions: options.length > 0,\n }))\n )\n )\n );\n })\n );\n\n private readonly _subscriptions = new Subscription();\n private readonly _configurationOptionsCache = new Map<\n string,\n Observable<Array<PluginConfiguration>>\n >();\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly pluginTranslationService: PluginTranslationService,\n private readonly processLinkService: ProcessLinkService,\n private readonly translateService: TranslateService,\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService\n ) {}\n\n public ngOnInit(): void {\n // Check if we're configuring from within a building block process (nested building block)\n this._subscriptions.add(\n this.stateService.modalParams$\n .pipe(\n map(params => params?.processDefinitionId),\n distinctUntilChanged()\n )\n .subscribe(processDefinitionId => {\n if (processDefinitionId) {\n this.processLinkBuildingBlockApiService\n .isBuildingBlockProcess(processDefinitionId)\n .subscribe(isNested => {\n this.buildingBlockStateService.setIsNestedBuildingBlock(isNested);\n });\n }\n })\n );\n\n this._subscriptions.add(\n combineLatest([\n this.buildingBlockStateService.requiredPluginKeys$,\n this.buildingBlockStateService.mappingsComplete$,\n this.buildingBlockStateService.requirementsLoading$,\n this.definitionVersionTag$,\n ]).subscribe(([keys, complete, loading, version]) => {\n if (loading || !version) {\n this.buttonService.disableNextButton();\n return;\n }\n\n if (keys.length === 0 || complete) {\n this.buttonService.enableNextButton();\n } else {\n this.buttonService.disableNextButton();\n }\n })\n );\n\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setBuildingBlockSteps();\n })\n );\n\n this._subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigureBuildingBlockMappingsStep(\n this.buildingBlockStateService.getDefinitionSnapshot().key ?? undefined\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private getConfigurationOptions(\n pluginDefinitionKey: string\n ): Observable<Array<PluginConfiguration>> {\n if (!this._configurationOptionsCache.has(pluginDefinitionKey)) {\n this._configurationOptionsCache.set(\n pluginDefinitionKey,\n this.pluginManagementService\n .getPluginConfigurationsByPluginDefinitionKey(pluginDefinitionKey)\n .pipe(\n catchError(() => of([])),\n shareReplay(1)\n )\n );\n }\n return this._configurationOptionsCache.get(pluginDefinitionKey) ?? of([]);\n }\n\n public onMappingChange(pluginDefinitionKey: string, configurationId: string): void {\n const normalizedValue = configurationId || null;\n this.buildingBlockStateService.setPluginConfigurationMapping(\n pluginDefinitionKey,\n normalizedValue\n );\n }\n\n public pluginLabel(pluginDefinitionKey: string): string {\n return (\n this.pluginTranslationService.instant('title', pluginDefinitionKey) || pluginDefinitionKey\n );\n }\n\n private buildDropdownItems(\n options: Array<PluginConfiguration>,\n selectedId: string | null | undefined,\n placeholder: string\n ): Array<ListItem> {\n return [\n {\n id: '',\n content: placeholder,\n selected: !selectedId,\n },\n ...options.map(\n option =>\n ({\n id: option.id,\n content: option.title,\n selected: selectedId === option.id || (options.length === 1 && !selectedId),\n }) as ListItem\n ),\n ];\n }\n\n private checkSingleBuildingBlockType(types: Array<ProcessLinkType>): boolean {\n if (!types?.length) return false;\n return types.length === 1 && types[0]?.processLinkType === 'building-block' && types[0].enabled;\n }\n\n public onVersionChange(versionTag: string): void {\n const normalizedValue = versionTag || null;\n this.buildingBlockStateService.setPluginConfigurationMappings(undefined);\n this.buildingBlockStateService.setDefinitionVersionTag(normalizedValue);\n }\n\n private createProcessLink(): void {\n this.stateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.stateService.stopSaving();\n return;\n }\n\n const activityId = modalParams.element?.id;\n\n if (!activityId) {\n this.stateService.stopSaving();\n return;\n }\n\n const request: BuildingBlockProcessLinkCreateDto = {\n processDefinitionId: modalParams.processDefinitionId ?? '-',\n activityId,\n activityType: modalParams.element?.activityListenerType ?? '',\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings: this.getMappingsForPayload(),\n inputMappings: [],\n outputMappings: [],\n };\n\n this.stateService.sendProcessLinkCreateEvent(request);\n });\n }\n\n private updateProcessLink(processLink: ProcessLink): void {\n this.stateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.stateService.stopSaving();\n return;\n }\n\n const activityId = modalParams.element?.id;\n\n const request: BuildingBlockProcessLinkUpdateDto = {\n id: processLink.id,\n activityId: activityId,\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings: this.getMappingsForPayload(),\n inputMappings: [],\n outputMappings: [],\n };\n\n this.stateService.sendProcessLinkUpdateEvent(request);\n });\n }\n\n private getMappingsForPayload(): Record<string, string> {\n const mappings = this.buildingBlockStateService.getPluginConfigurationMappingsSnapshot();\n return Object.entries(mappings).reduce(\n (acc, [pluginKey, configurationId]) => {\n if (configurationId) acc[pluginKey] = configurationId;\n return acc;\n },\n {} as Record<string, string>\n );\n }\n}\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\n<div class=\"configure-building-block-plugins\">\n <div\n *ngIf=\"dependenciesNotificationObject$ | async as dependenciesNotificationObject\"\n class=\"configure-building-block-plugins__warning\"\n >\n <cds-notification [notificationObj]=\"dependenciesNotificationObject\"> </cds-notification>\n </div>\n\n @if (versionItems$ | async; as versionItems) {\n @let versionPlaceholder = versionPlaceholder$ | async;\n <div class=\"version-select\">\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [label]=\"'processLinkConfiguration.buildingBlock.versionLabel' | translate\"\n [placeholder]=\"versionPlaceholder || ''\"\n (selected)=\"onVersionChange($event?.id || '')\"\n (clear)=\"onVersionChange('')\"\n >\n <cds-dropdown-list [items]=\"versionItems\"></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n\n @if (loading$ | async) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n } @else {\n <div class=\"plugin-list\">\n @if (definitionVersionTag$ | async) {\n @if (isNestedBuildingBlock$ | async) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.nestedBuildingBlockInfo' | translate }}\n </div>\n } @else {\n @if (pluginConfigurationViewModels$ | async; as pluginConfigurationViewModels) {\n @if (pluginConfigurationViewModels.length === 0) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.noRequirements' | translate }}\n </div>\n } @else {\n @let configurationPlaceholder = configurationPlaceholder$ | async;\n\n <div class=\"plugin-row\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.pluginLabel' | translate\"\n >\n </v-input-label>\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.configurationLabel' | translate\"\n required=\"true\"\n >\n </v-input-label>\n </div>\n\n @for (plugin of pluginConfigurationViewModels; track plugin.key) {\n <div class=\"plugin-row\">\n <div class=\"plugin-label\">\n {{ plugin.label }}\n </div>\n\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [placeholder]=\"configurationPlaceholder || ''\"\n (selected)=\"onMappingChange(plugin.key, $event?.id || '')\"\n (clear)=\"onMappingChange(plugin.key, '')\"\n >\n <cds-dropdown-list [items]=\"plugin.dropdownItems\"></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n }\n }\n }\n }\n </div>\n }\n</div>\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\nimport {Component} from '@angular/core';\nimport {\n PluginStateService,\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {take} from 'rxjs/operators';\nimport {ConfigService} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-process-link-modal',\n templateUrl: './process-link-modal.component.html',\n styleUrls: ['./process-link-modal.component.scss'],\n})\nexport class ProcessLinkModalComponent {\n public readonly showModal$ = this.stateService.showModal$;\n public readonly processStepName$ = this.stateService.elementName$;\n public readonly steps$ = this.stepService.steps$;\n public readonly currentStepIndex$ = this.stepService.currentStepIndex$;\n public readonly currentStepId$ = this.stepService.currentStepId$;\n public readonly showSaveButton$ = this.buttonService.showSaveButton$;\n public readonly enableSaveButton$ = this.buttonService.enableSaveButton$;\n public readonly showBackButton$ = this.buttonService.showBackButton$;\n public readonly showNextButton$ = this.buttonService.showNextButton$;\n public readonly enableNextButton$ = this.buttonService.enableNextButton$;\n public readonly hideProgressIndicator$ = this.stateService.hideProgressIndicator$;\n public readonly saving$ = this.stateService.saving$;\n public readonly typeOfSelectedProcessLink$ = this.stateService.typeOfSelectedProcessLink$;\n public readonly viewModelEnabled$ = this.stateService.viewModelEnabled$;\n public readonly isEditing$ = this.stateService.isEditing$;\n public readonly selectedPluginConfiguration$ =\n this.pluginStateService.selectedPluginConfiguration$;\n\n public readonly showViewModelToggle =\n this.configService.config.featureToggles.enableFormViewModel;\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly stepService: ProcessLinkStepService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginStateService: PluginStateService,\n private readonly processLinkStateService: ProcessLinkStateService,\n private readonly configService: ConfigService\n ) {}\n\n closeModal(): void {\n this.stateService.closeModal();\n }\n\n backButtonClick(): void {\n this.buttonService.clickBackButton();\n }\n\n saveButtonClick(): void {\n this.buttonService.clickSaveButton();\n }\n\n nextButtonClick(): void {\n this.buttonService.clickNextButton();\n }\n\n unlinkButtonClick(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n this.processLinkStateService.sendProcessLinkDeleteEvent({\n activityId: selectedProcessLink.activityId,\n });\n });\n }\n\n public toggleCheckedChange(value: boolean): void {\n this.processLinkStateService.setViewModelEnabled(value);\n }\n}\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\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 isEditing: isEditing$ | 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\">\n <ng-container *ngTemplateOutlet=\"progressIndicator; context: {obs: obs}\"></ng-container>\n </div>\n </cds-modal-header>\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"stepContent; context: {obs: obs}\"></ng-container>\n </section>\n <ng-template *ngTemplateOutlet=\"footer; context: {obs: obs}\"></ng-template>\n </cds-modal>\n</div>\n\n<ng-template #progressIndicator let-obs=\"obs\">\n <cds-progress-indicator\n *ngIf=\"obs.steps && !obs.hideProgressIndicator\"\n [steps]=\"obs.steps\"\n [current]=\"obs.currentStepIndex\"\n spacing=\"equal\"\n ></cds-progress-indicator>\n</ng-template>\n\n<ng-template #stepContent let-obs=\"obs\">\n <div class=\"cds-loading-container\" *ngIf=\"obs.saving\">\n <cds-loading></cds-loading>\n </div>\n <div [ngClass]=\"{hidden: obs.saving}\">\n <ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'chooseProcessLinkType'\">\n <valtimo-choose-process-link-type></valtimo-choose-process-link-type>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectForm'\">\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle\"\n [label]=\"'processLinkConfiguration.toggleViewModel.title' | translate\"\n [onText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [offText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [checked]=\"viewModelEnabled$ | async\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectFormFlow'\">\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'choosePluginConfiguration' ||\n obs.currentStepId === 'choosePluginDefinition'\n \"\n >\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'selectBuildingBlock'\">\n <valtimo-select-building-block></valtimo-select-building-block>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginAction'\">\n <valtimo-select-plugin-action></valtimo-select-plugin-action>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configurePluginAction'\">\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockPlugins'\">\n <valtimo-configure-building-block-plugins></valtimo-configure-building-block-plugins>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockMappings'\">\n <valtimo-configure-building-block-mappings></valtimo-configure-building-block-mappings>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'uiComponent'\">\n <valtimo-select-ui-component></valtimo-select-ui-component>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #footer let-obs=\"obs\">\n <cds-modal-footer *ngIf=\"!obs.saving\">\n <div class=\"cancel-button\">\n <button cdsButton=\"ghost\" (click)=\"closeModal()\" [disabled]=\"obs.disabled\">\n {{ 'processLinkConfiguration.cancel' | translate }}\n </button>\n </div>\n <div class=\"footer-spacer\"></div>\n <div class=\"action-buttons\">\n <button\n cdsButton=\"danger--primary\"\n *ngIf=\"obs.isEditing\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n *ngIf=\"obs.showBackButton && !obs.saving\"\n cdsButton=\"secondary\"\n (click)=\"backButtonClick()\"\n >\n {{ 'processLinkConfiguration.back' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showNextButton && !obs.saving\"\n [disabled]=\"!obs.enableNextButton\"\n (click)=\"nextButtonClick()\"\n >\n {{ 'processLinkConfiguration.next' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showSaveButton && !obs.saving\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</ng-template>\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\nimport {Component} from '@angular/core';\nimport {ModalParams} from '../../models';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {of, switchMap, tap} from 'rxjs';\nimport {ModalService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-process-link',\n templateUrl: './process-link.component.html',\n styleUrls: ['./process-link.component.scss'],\n providers: [ProcessLinkStateService, ProcessLinkStepService, ProcessLinkButtonService],\n})\nexport class ProcessLinkComponent {\n constructor(\n private readonly processLinkService: ProcessLinkService,\n private readonly stateService: ProcessLinkStateService,\n private readonly modalService: ModalService\n ) {}\n\n openModal(params: ModalParams): void {\n const activityType = params?.element?.activityListenerType;\n\n this.modalService.setModalData(params);\n\n if (activityType) {\n this.processLinkService\n .getProcessLink({\n activityId: params.element.id,\n processDefinitionId: params.processDefinitionId,\n })\n .pipe(\n switchMap(processLinks => {\n if (processLinks.length > 0) {\n return of({processLink: processLinks[0]});\n }\n\n return this.processLinkService.getProcessLinkCandidates(activityType);\n }),\n tap(res => {\n const result = res as any;\n const processLink = result.processLink;\n\n this.stateService.setModalParams(params);\n this.stateService.setElementName(params?.element?.name);\n\n if (processLink) {\n this.stateService.selectProcessLink(processLink);\n } else {\n this.stateService.setAvailableProcessLinkTypes(result);\n }\n\n if (result?.length > 0 || processLink) {\n this.stateService.showModal();\n }\n })\n )\n .subscribe();\n }\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ProcessLinkComponent} from './components/process-link/process-link.component';\n\nconst routes: Routes = [\n {\n path: 'process-links',\n component: ProcessLinkComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Process links', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class ProcessLinkRoutingModule {}\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\nexport * from './choose-process-link-type.component';\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\nexport * from './select-form.component';\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\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {ChangeEvent, FormFlowCustomComponent} from '../../models';\nimport {FormFlowComponentService} from '../../services';\nimport {FormioSubmission} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-flow-configuration-container',\n templateUrl: './form-flow-configuration-container.component.html',\n})\nexport class FormFlowConfigurationContainerComponent\n implements OnInit, OnDestroy, FormFlowCustomComponent\n{\n @ViewChild('formFlowConfigurationComponent', {static: true, read: ViewContainerRef})\n private readonly _dynamicContainer: ViewContainerRef;\n @Input() public set disabled(disabledValue: boolean) {\n this._disabled$.next(disabledValue);\n }\n @Input() public set componentId(value: string) {\n this._componentId$.next(value);\n }\n @Input() public set formFlowInstanceId(value: string) {\n this._formFlowInstanceId$.next(value);\n }\n @Output() public changeEvent = new EventEmitter<ChangeEvent>();\n @Output() public submitEvent = new EventEmitter<FormioSubmission>();\n\n private _changeSubscription!: Subscription;\n private _submitSubscription!: Subscription;\n\n private readonly _subscriptions = new Subscription();\n private readonly _componentRef$ = new BehaviorSubject<\n ComponentRef<FormFlowCustomComponent> | undefined\n >(undefined);\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n private readonly _componentId$ = new BehaviorSubject<string>('');\n private readonly _formFlowInstanceId$ = new BehaviorSubject<string>('');\n\n constructor(private readonly formFlowComponentService: FormFlowComponentService) {}\n\n public ngOnInit(): void {\n this.openConfigurationComponentSubscription();\n this.openComponentInstanceSubscription();\n this.openDisabledSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openConfigurationComponentSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.formFlowComponentService.supportedComponents$, this._componentId$])\n .pipe(\n tap(([supportedComponents, componentId]) => {\n const configurationComponent = supportedComponents.find(\n component => component.id === componentId\n );\n\n this._dynamicContainer.clear();\n\n if (configurationComponent) {\n const componentRef = this._dynamicContainer.createComponent(\n configurationComponent.component\n );\n this._componentRef$.next(componentRef);\n }\n })\n )\n .subscribe()\n );\n }\n\n private openComponentInstanceSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._formFlowInstanceId$]).subscribe(\n ([ref, formFlowInstanceId]) => {\n const instance = ref?.instance;\n\n this._submitSubscription?.unsubscribe();\n this._changeSubscription?.unsubscribe();\n\n if (instance) {\n if (formFlowInstanceId) {\n instance.formFlowInstanceId = formFlowInstanceId;\n }\n\n this._changeSubscription = instance.changeEvent.subscribe(change => {\n this.changeEvent.emit(change);\n });\n\n this._submitSubscription = instance.submitEvent.subscribe(submit => {\n this.submitEvent.emit(submit);\n });\n }\n }\n )\n );\n }\n\n private openDisabledSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {\n const instance = ref?.instance;\n\n if (instance) {\n instance.disabled = disabled;\n }\n })\n );\n }\n}\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\n<ng-template #formFlowConfigurationComponent></ng-template>\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {FormioForm} from '@formio/angular';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ValtimoFormioOptions,\n ValtimoModalService,\n} from '@valtimo/components';\nimport {FormFlowService} from '../../services';\nimport {FormFlowInstance, FormFlowStepType} from '../../models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Step} from 'carbon-components-angular';\nimport {ConfigService} from '@valtimo/shared';\nimport {map} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-flow',\n templateUrl: './form-flow.component.html',\n styleUrls: ['./form-flow.component.scss'],\n})\nexport class FormFlowComponent implements OnInit, OnDestroy {\n @ViewChild('form') public readonly form: FormioComponent;\n\n @Input() public readonly formIoFormData: BehaviorSubject<any | null> = new BehaviorSubject<any>(\n null\n );\n @Input() public set formFlowInstanceId(value: string | null) {\n this.formFlowInstanceId$.next(value);\n\n if (value) this.getBreadcrumbs();\n }\n\n @Output() public readonly formFlowComplete = new EventEmitter();\n @Output() public readonly formFlowChange = new EventEmitter();\n\n public formDefinition: FormioForm;\n public formioOptions: ValtimoFormioOptions;\n\n public readonly breadcrumbs$ = new BehaviorSubject<Step[]>([]);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly formFlowStepType$ = new BehaviorSubject<FormFlowStepType | null>(null);\n public readonly FormFlowCustomComponentId$ = new BehaviorSubject<string>('');\n public readonly currentStepIndex$ = new BehaviorSubject<number>(0);\n public readonly enableFormFlowBreadcrumbs$ = this.configService.getFeatureToggleObservable(\n 'enableFormFlowBreadcrumbs'\n );\n public readonly formFlowInstanceId$ = new BehaviorSubject<string | null>('');\n\n private formFlowStepInstanceId: string | null = null;\n\n private _breadcrumbsSubscription!: Subscription;\n\n constructor(\n private readonly formFlowService: FormFlowService,\n private readonly modalService: ValtimoModalService,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService\n ) {\n this.formioOptions = new FormioOptionsImpl();\n this.formioOptions.disableAlerts = true;\n }\n\n public ngOnInit() {\n this.getFormFlowStep();\n }\n\n public ngOnDestroy(): void {\n this._breadcrumbsSubscription?.unsubscribe();\n }\n\n public onChange(event: any): void {\n if (!event?.data) return;\n\n this.formIoFormData.next(event.data);\n this.formFlowChange.emit();\n }\n\n public onSubmit(submission: FormioSubmission): void {\n this.disable();\n\n if (submission.data) {\n this.formIoFormData.next(submission.data);\n }\n\n if (\n submission.data.submit &&\n this.formFlowInstanceId$.getValue() &&\n this.formFlowStepInstanceId\n ) {\n this.formFlowService\n .submitStep(\n this.formFlowInstanceId$.getValue(),\n this.formFlowStepInstanceId,\n this.formIoFormData.getValue()\n )\n .subscribe({\n next: (result: FormFlowInstance) => {\n this.handleFormFlowStep(result);\n },\n error: errors => {\n this.form?.showErrors(errors);\n this.enable();\n },\n });\n } else if (submission.data['back']) {\n this.back(submission.data);\n }\n }\n\n public onEvent(submission: any): void {\n if (submission.data['back'] || submission.type == 'back') {\n this.back(submission.data);\n }\n }\n\n public saveData(): void {\n const formIoFormDataValue = this.formIoFormData.getValue();\n\n if (formIoFormDataValue && this.formFlowInstanceId$.getValue()) {\n this.formFlowService.save(this.formFlowInstanceId$.getValue(), formIoFormDataValue).subscribe(\n () => null,\n errors => this.form.showErrors(errors)\n );\n }\n }\n\n public onStepSelected(event: {step: {stepInstanceId: string}; index: number}): void {\n const submissionData = this.formIoFormData.getValue().data;\n\n this.disable();\n\n this.currentStepIndex$.next(event.index);\n\n if (!this.formFlowInstanceId$.getValue() || !this.formFlowStepInstanceId) return;\n\n this.formFlowService\n .navigateToStep(\n this.formFlowInstanceId$.getValue(),\n this.formFlowStepInstanceId,\n event.step.stepInstanceId,\n submissionData\n )\n .subscribe({\n next: (result: FormFlowInstance) => this.handleFormFlowStep(result),\n error: errors => {\n this.form?.showErrors(errors);\n this.enable();\n },\n });\n }\n\n private getBreadcrumbs(): void {\n if (\n !this.formFlowInstanceId$.getValue() ||\n !this.configService.getFeatureToggle('enableFormFlowBreadcrumbs')\n ) {\n return;\n }\n\n this._breadcrumbsSubscription?.unsubscribe();\n\n this._breadcrumbsSubscription = combineLatest([\n this.formFlowService.getBreadcrumbs(this.formFlowInstanceId$.getValue()),\n this.translateService.stream('key'),\n ])\n .pipe(map(([breadcrumbs]) => breadcrumbs))\n .subscribe(breadcrumbs => {\n const classElement = document.getElementsByClassName('cds--progress-step--current');\n\n this.currentStepIndex$.next(breadcrumbs.currentStepIndex);\n\n this.breadcrumbs$.next(\n breadcrumbs.breadcrumbs.map(breadcrumb => ({\n label:\n breadcrumb.title ??\n this.translateService.instant(`formFlow.step.${breadcrumb.key}.title`) ??\n breadcrumb.key,\n disabled: breadcrumb.stepInstanceId === null,\n complete: breadcrumb.completed,\n stepInstanceId: breadcrumb.stepInstanceId,\n }))\n );\n\n if (classElement.length > 0) {\n classElement[0].scrollIntoView({behavior: 'smooth', inline: 'center'});\n }\n });\n }\n\n private getFormFlowStep(): void {\n if (!this.formFlowInstanceId$.getValue()) return;\n\n this.formFlowService\n .getFormFlowStep(this.formFlowInstanceId$.getValue())\n .subscribe((result: FormFlowInstance) => {\n this.handleFormFlowStep(result);\n });\n }\n\n private back(submissionData: any): void {\n if (!this.formFlowInstanceId$.getValue()) return;\n\n this.formFlowService.back(this.formFlowInstanceId$.getValue(), submissionData).subscribe({\n next: (result: FormFlowInstance) => this.handleFormFlowStep(result),\n error: errors => {\n this.form?.showErrors(errors);\n this.enable();\n },\n });\n }\n\n private handleFormFlowStep(formFlowInstance: FormFlowInstance): void {\n if (formFlowInstance.step === null) {\n this.formFlowStepType$.next(null);\n this.FormFlowCustomComponentId$.next('');\n this.formFlowInstanceId$.next(null);\n this.formFlowStepInstanceId = null;\n this.formFlowComplete.emit(null);\n } else {\n this.getBreadcrumbs();\n this.modalService.scrollToTop();\n this.formFlowStepType$.next(formFlowInstance.step?.type ?? null);\n this.FormFlowCustomComponentId$.next(formFlowInstance?.step?.typeProperties?.id || '');\n this.formFlowInstanceId$.next(formFlowInstance.id);\n this.formFlowStepInstanceId = formFlowInstance.step?.id ?? null;\n this.formDefinition = formFlowInstance.step?.typeProperties.definition;\n }\n\n this.enable();\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './select-form-flow.component';\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\nexport * from './form-flow-configuration-container.component';\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\nimport {NgModule} from '@angular/core';\nimport {FormLinkProcessDiagramComponent} from './components/form-link-process-diagram/form-link-process-diagram.component';\nimport {CommonModule} from '@angular/common';\nimport {ProcessLinkRoutingModule} from './process-link-routing.module';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n CarbonMultiInputModule,\n FormIoModule,\n InputLabelModule,\n ModalModule,\n ParagraphModule,\n RemoveClassnamesDirective,\n RenderInPageHeaderDirective,\n SearchableDropdownSelectModule,\n StepperModule,\n TooltipIconModule,\n TooltipModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorComponent,\n VModalModule,\n} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SelectPluginConfigurationComponent} from './components/select-plugin-configuration/select-plugin-configuration.component';\nimport {SelectPluginActionComponent} from './components/select-plugin-action/select-plugin-action.component';\nimport {PluginConfigurationContainerModule, PluginTranslatePipeModule} from '@valtimo/plugin';\nimport {PluginActionConfigurationComponent} from './components/plugin-action-configuration/plugin-action-configuration.component';\nimport {ProcessLinkComponent} from './components/process-link/process-link.component';\nimport {ProcessLinkModalComponent} from './components/process-link-modal/process-link-modal.component';\nimport {\n ButtonModule as CarbonButtonModule,\n ComboBoxModule,\n IconModule,\n InputModule,\n LayerModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n ProgressIndicatorModule,\n RadioModule as CarbonRadioModule,\n SelectModule,\n StructuredListModule,\n TilesModule,\n ToggleModule,\n ToggletipModule,\n} from 'carbon-components-angular';\nimport {ChooseProcessLinkTypeComponent} from './components/choose-process-link-type';\nimport {SelectFormComponent} from './components/select-form';\nimport {FormFlowComponent} from './components/form-flow/form-flow.component';\nimport {SelectFormFlowComponent} from './components/select-form-flow';\nimport {FormFlowConfigurationContainerComponent} from './components/form-flow-configuration-container';\nimport {UrlValidatorService} from './services/url-validator.service';\nimport {UrlResolverService} from './services/url-resolver.service';\nimport {FormDisplayConfigurationComponent} from './components/form-display-configuration/form-display-configuration.component';\nimport {ImportPluginConfigurationComponent} from './components/import-plugin-configuration/import-plugin-configuration.component';\nimport {SelectUIComponentComponent} from './components/select-ui-component/select-ui-component.component';\nimport {SelectBuildingBlockComponent} from './components/select-building-block';\nimport {ConfigureBuildingBlockPluginsComponent} from './components/configure-building-block-plugins';\nimport {ConfigureBuildingBlockMappingsComponent} from './components/configure-building-block-mappings/configure-building-block-mappings.component';\n\n@NgModule({\n declarations: [\n ProcessLinkComponent,\n FormLinkProcessDiagramComponent,\n SelectPluginConfigurationComponent,\n SelectPluginActionComponent,\n PluginActionConfigurationComponent,\n ProcessLinkModalComponent,\n ChooseProcessLinkTypeComponent,\n SelectFormComponent,\n FormFlowComponent,\n SelectFormFlowComponent,\n FormFlowConfigurationContainerComponent,\n FormDisplayConfigurationComponent,\n SelectUIComponentComponent,\n ImportPluginConfigurationComponent,\n SelectBuildingBlockComponent,\n ConfigureBuildingBlockPluginsComponent,\n ],\n imports: [\n CommonModule,\n ProcessLinkRoutingModule,\n FormsModule,\n ReactiveFormsModule,\n ModalModule,\n SearchableDropdownSelectModule,\n TranslateModule,\n StepperModule,\n VModalModule,\n PluginTranslatePipeModule,\n ParagraphModule,\n PluginConfigurationContainerModule,\n CarbonModalModule,\n ProgressIndicatorModule,\n CarbonButtonModule,\n IconModule,\n TooltipModule,\n ComboBoxModule,\n InputModule,\n TooltipIconModule,\n LoadingModule,\n FormIoModule,\n ValtimoCdsModalDirective,\n StructuredListModule,\n TilesModule,\n RenderInPageHeaderDirective,\n SelectModule,\n ToggleModule,\n CarbonMultiInputModule,\n LayerModule,\n ToggletipModule,\n ComboBoxModule,\n TranslateModule,\n LayerModule,\n ToggletipModule,\n RemoveClassnamesDirective,\n ReactiveFormsModule,\n InputLabelModule,\n CarbonRadioModule,\n ValuePathSelectorComponent,\n ConfigureBuildingBlockMappingsComponent,\n NotificationModule,\n ],\n exports: [\n ProcessLinkComponent,\n SelectPluginConfigurationComponent,\n SelectPluginActionComponent,\n PluginActionConfigurationComponent,\n ProcessLinkModalComponent,\n FormFlowComponent,\n ],\n providers: [UrlValidatorService, UrlResolverService],\n})\nexport class ProcessLinkModule {}\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\nimport {ListItem} from 'carbon-components-angular';\n\ninterface FormSubmissionResult {\n errors: string[];\n documentId?: string;\n}\n\ninterface BpmnElement {\n id: string;\n type: string;\n activityListenerType?: string;\n activityType?: string;\n name?: string;\n}\n\ninterface FormFlowDefinition {\n id: string;\n name: string;\n}\n\ninterface FormFlowInstance {\n id: string;\n step?: FormFlowStep;\n}\n\ninterface FormFlowCreateRequest {\n documentId: string | null;\n documentDefinitionName: string | null;\n}\n\ninterface FormFlowCreateResult {\n formFlowInstanceId: string;\n}\n\ntype FormFlowStepType = 'form' | 'custom-component';\n\ninterface FormFlowStep {\n id: string;\n type: FormFlowStepType;\n typeProperties: FormTypeProperties;\n}\n\ninterface FormTypeProperties {\n definition?: any;\n id?: string;\n}\n\ninterface ModalParams {\n element: BpmnElement;\n processDefinitionKey: string;\n processDefinitionId: string;\n}\n\ninterface FormDefinitionListItem extends ListItem {\n id: string;\n}\n\ninterface FormFlowBreadcrumbs extends ListItem {\n currentStepIndex: number;\n breadcrumbs: Array<FormFlowBreadcrumb>;\n}\n\ninterface FormFlowBreadcrumb extends ListItem {\n title: string;\n key: string;\n stepInstanceId: string;\n completed: boolean;\n}\n\nexport {\n FormSubmissionResult,\n BpmnElement,\n FormFlowDefinition,\n FormFlowInstance,\n FormFlowStepType,\n FormFlowStep,\n FormTypeProperties,\n FormFlowCreateResult,\n FormFlowCreateRequest,\n ModalParams,\n FormDefinitionListItem,\n FormFlowBreadcrumbs,\n FormFlowBreadcrumb,\n};\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\nimport {EventEmitter, Type} from '@angular/core';\nimport {FormioSubmission} from '@valtimo/components';\n\ninterface ChangeEvent {\n data: object;\n}\n\ninterface FormFlowCustomComponent {\n formFlowInstanceId: string;\n componentId?: string;\n disabled: boolean;\n changeEvent: EventEmitter<ChangeEvent>;\n submitEvent: EventEmitter<FormioSubmission>;\n}\n\ninterface FormFlowCustomComponentDefinition {\n id: string;\n component: Type<FormFlowCustomComponent>;\n}\n\nexport {FormFlowCustomComponentDefinition, FormFlowCustomComponent, ChangeEvent};\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\nimport {EventEmitter, Type} from '@angular/core';\n\ninterface FormCustomComponent {\n taskInstanceId: string | null;\n processDefinitionKey: string | null;\n documentDefinitionName: string | null;\n submittedEvent: EventEmitter<any>;\n}\n\ninterface FormCustomComponentDefinition {\n id: string;\n component: FormCustomComponent;\n}\n\ninterface FormCustomComponentConfig {\n [id: string]: Type<FormCustomComponentDefinition>;\n}\n\nexport {FormCustomComponent, FormCustomComponentDefinition, FormCustomComponentConfig};\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\nimport {FormArray, FormControl, FormGroup} from '@angular/forms';\nimport {BuildingBlockSyncTiming} from './process-link.model';\n\ninterface BuildingBlockField {\n name: string;\n required: boolean;\n}\n\ntype InputRowFormGroup = FormGroup<{\n source: FormControl<string>;\n target: FormControl<string>;\n}>;\n\ntype OutputRowFormGroup = FormGroup<{\n source: FormControl<string>;\n target: FormControl<string>;\n syncTiming: FormControl<BuildingBlockSyncTiming>;\n}>;\n\ntype InputsFormGroup = FormGroup<{\n inputs: FormArray<InputRowFormGroup>;\n}>;\n\ntype OutputsFormGroup = FormGroup<{\n outputs: FormArray<OutputRowFormGroup>;\n}>;\n\nexport {\n BuildingBlockField,\n InputsFormGroup,\n OutputsFormGroup,\n InputRowFormGroup,\n OutputRowFormGroup,\n};\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\ninterface PluginsWithDependencies {\n plugins: {\n pluginDefinitionKey: string;\n dependencies: {\n key: string;\n }[];\n }[];\n}\n\nexport {PluginsWithDependencies};\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\nexport * from './form-link.model';\nexport * from './process-link.model';\nexport * from './form-flow.model';\nexport * from './form-custom-component.model';\nexport * from './building-block-field.model';\nexport * from './plugin.model';\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\n/*\n * Public API Surface of process-link\n */\n\nexport * from './lib/services';\nexport * from './lib/components/select-plugin-configuration/select-plugin-configuration.component';\nexport * from './lib/components/select-plugin-action/select-plugin-action.component';\nexport * from './lib/components/plugin-action-configuration/plugin-action-configuration.component';\nexport * from './lib/process-link.module';\nexport * from './lib/models';\nexport * from './lib/components/process-link/process-link.component';\nexport * from './lib/components/process-link-modal/process-link-modal.component';\nexport * from './lib/components/choose-process-link-type/choose-process-link-type.component';\nexport * from './lib/components/form-flow/form-flow.component';\nexport * from './lib/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ProcessLinkBuildingBlockApiService","i1","i2","map","i2.ProcessLinkButtonService","i3.PluginStateService","i4","i1.UrlResolverService","switchMap","filter","i2.PluginStateService","i3.ProcessLinkStateService","i3.ProcessLinkButtonService","i3.ProcessLinkStepService","i5","i6","i1.ProcessLinkButtonService","i1.PluginStateService","i1.ProcessLinkStepService","i1.ProcessLinkStateService","i3","i2.ProcessLinkService","i7","i1.ProcessLinkService","i3.ImportPluginConfigurationComponent","i2.BuildingBlockStateService","i2.ProcessLinkStepService","i2.ProcessLinkStateService","i2.ProcessLinkBuildingBlockApiService","i7.FormDisplayConfigurationComponent","i8","withLatestFrom","take","i1.BuildingBlockStateService","catchError","i6.ConfigureBuildingBlockMappingsComponent","i7.SelectPluginConfigurationComponent","i8.SelectPluginActionComponent","i9.PluginActionConfigurationComponent","i10.ChooseProcessLinkTypeComponent","i11.SelectFormComponent","i12.SelectFormFlowComponent","i13.SelectUIComponentComponent","i14.SelectBuildingBlockComponent","i15.ConfigureBuildingBlockPluginsComponent","i16","i3.FormLinkProcessDiagramComponent","i4.ProcessLinkModalComponent","tap","i1.FormFlowComponentService","i1.FormFlowService","i7.FormFlowConfigurationContainerComponent","CarbonModalModule","CarbonButtonModule","SelectModule","CarbonRadioModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-process-link.mjs","sources":["../../../../projects/valtimo/process-link/src/lib/services/process-link-building-block-api.service.ts","../../../../projects/valtimo/process-link/src/lib/services/building-block-state.service.ts","../../../../projects/valtimo/process-link/src/lib/services/form-flow.service.ts","../../../../projects/valtimo/process-link/src/lib/services/plugin-state.service.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link.service.ts","../../../../projects/valtimo/process-link/src/lib/constants/injection-tokens.ts","../../../../projects/valtimo/process-link/src/lib/constants/process.link.ts","../../../../projects/valtimo/process-link/src/lib/constants/index.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link-button.service.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link-step.service.ts","../../../../projects/valtimo/process-link/src/lib/services/process-link-state.service.ts","../../../../projects/valtimo/process-link/src/lib/services/form-flow-component.service.ts","../../../../projects/valtimo/process-link/src/lib/services/url-resolver.service.ts","../../../../projects/valtimo/process-link/src/lib/services/url-validator.service.ts","../../../../projects/valtimo/process-link/src/lib/services/index.ts","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-configuration/select-plugin-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-configuration/select-plugin-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-action/select-plugin-action.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-plugin-action/select-plugin-action.component.html","../../../../projects/valtimo/process-link/src/lib/components/import-plugin-configuration/import-plugin-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/import-plugin-configuration/import-plugin-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/plugin-action-configuration/plugin-action-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/plugin-action-configuration/plugin-action-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/form-link-process-diagram/form-link-process-diagram.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-link-process-diagram/form-link-process-diagram.component.html","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-mappings/configure-building-block-mappings.component.ts","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-mappings/configure-building-block-mappings.component.html","../../../../projects/valtimo/process-link/src/lib/components/choose-process-link-type/choose-process-link-type.component.ts","../../../../projects/valtimo/process-link/src/lib/components/choose-process-link-type/choose-process-link-type.component.html","../../../../projects/valtimo/process-link/src/lib/components/form-display-configuration/form-display-configuration.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-display-configuration/form-display-configuration.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-form/select-form.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-form/select-form.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-form-flow/select-form-flow.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-form-flow/select-form-flow.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-ui-component/select-ui-component.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-ui-component/select-ui-component.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-building-block/select-building-block.component.ts","../../../../projects/valtimo/process-link/src/lib/components/select-building-block/select-building-block.component.html","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-plugins/configure-building-block-plugins.component.ts","../../../../projects/valtimo/process-link/src/lib/components/configure-building-block-plugins/configure-building-block-plugins.component.html","../../../../projects/valtimo/process-link/src/lib/components/process-link-modal/process-link-modal.component.ts","../../../../projects/valtimo/process-link/src/lib/components/process-link-modal/process-link-modal.component.html","../../../../projects/valtimo/process-link/src/lib/components/process-link/process-link.component.ts","../../../../projects/valtimo/process-link/src/lib/components/process-link/process-link.component.html","../../../../projects/valtimo/process-link/src/lib/process-link-routing.module.ts","../../../../projects/valtimo/process-link/src/lib/components/choose-process-link-type/index.ts","../../../../projects/valtimo/process-link/src/lib/components/select-form/index.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.html","../../../../projects/valtimo/process-link/src/lib/components/form-flow/form-flow.component.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow/form-flow.component.html","../../../../projects/valtimo/process-link/src/lib/components/select-form-flow/index.ts","../../../../projects/valtimo/process-link/src/lib/components/form-flow-configuration-container/index.ts","../../../../projects/valtimo/process-link/src/lib/process-link.module.ts","../../../../projects/valtimo/process-link/src/lib/models/form-link.model.ts","../../../../projects/valtimo/process-link/src/lib/models/form-flow.model.ts","../../../../projects/valtimo/process-link/src/lib/models/form-custom-component.model.ts","../../../../projects/valtimo/process-link/src/lib/models/building-block-field.model.ts","../../../../projects/valtimo/process-link/src/lib/models/plugin.model.ts","../../../../projects/valtimo/process-link/src/lib/models/index.ts","../../../../projects/valtimo/process-link/src/public-api.ts","../../../../projects/valtimo/process-link/src/valtimo-process-link.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n BuildingBlockDefinitionDto,\n BuildingBlockVersionDto,\n ConfigService,\n InterceptorSkip,\n Page,\n} from '@valtimo/shared';\nimport {BuildingBlockField, PluginsWithDependencies} from '../models';\nimport {catchError, Observable, of} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkBuildingBlockApiService extends BaseApiService {\n constructor(\n protected readonly configService: ConfigService,\n protected readonly httpClient: HttpClient\n ) {\n super(httpClient, configService);\n }\n\n public getVersionsForBuildingBlock(\n key: string,\n page: number = 0,\n size: number = 5,\n all: boolean = false\n ): Observable<Page<BuildingBlockVersionDto>> {\n const allParam: string = all ? 'all=true' : '';\n return this.httpClient.get<Page<BuildingBlockVersionDto>>(\n this.getApiUrl(\n `management/v1/building-block/${key}/version?page=${page}&size=${size}${allParam}`\n )\n );\n }\n\n public getPluginDefinitionsForBuildingBlock(\n key: string,\n versionTag: string\n ): Observable<PluginsWithDependencies> {\n return this.httpClient.get<PluginsWithDependencies>(\n this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/plugin`)\n );\n }\n\n public getFieldsForBuildingBlock(\n key: string,\n versionTag: string\n ): Observable<Array<BuildingBlockField>> {\n return this.httpClient.get<Array<BuildingBlockField>>(\n this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/fields`)\n );\n }\n\n public getBuildingBlockDefinitions(options?: {\n includeArtwork: boolean;\n }): Observable<BuildingBlockDefinitionDto[]> {\n return this.httpClient\n .get<BuildingBlockDefinitionDto[]>(this.getApiUrl('management/v1/building-block'), {\n params: options,\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n })\n .pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) return of([]);\n throw error;\n })\n );\n }\n\n public getMainProcessDefinitionKeyForBuildingBlock(\n key: string,\n versionTag: string\n ): Observable<string> {\n return this.httpClient.get<string>(\n this.getApiUrl(\n `management/v1/building-block/${key}/version/${versionTag}/process-definition/main/key`\n ),\n {\n responseType: 'text' as 'json',\n }\n );\n }\n\n public isBuildingBlockProcess(processDefinitionId: string): Observable<boolean> {\n return this.httpClient\n .get<boolean>(\n this.getApiUrl(\n `management/v1/building-block/process-definition/${processDefinitionId}/is-building-block`\n )\n )\n .pipe(catchError(() => of(false)));\n }\n\n public getBuildingBlockDefinition(\n key: string,\n versionTag: string\n ): Observable<BuildingBlockDefinitionDto | null> {\n return this.httpClient\n .get<BuildingBlockDefinitionDto>(\n this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}`),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n )\n .pipe(catchError(() => of(null)));\n }\n\n public getCaseDefinition(\n key: string,\n versionTag: string\n ): Observable<{name: string} | null> {\n return this.httpClient\n .get<{name: string}>(\n this.getApiUrl(`management/v1/case-definition/${key}/version/${versionTag}`),\n {\n headers: new HttpHeaders().set(InterceptorSkip, '404'),\n }\n )\n .pipe(catchError(() => of(null)));\n }\n}\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\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription} from 'rxjs';\nimport {\n BuildingBlockField,\n BuildingBlockInputMapping,\n BuildingBlockOutputMapping,\n ProcessLink,\n} from '../models';\nimport {ProcessLinkBuildingBlockApiService} from './process-link-building-block-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BuildingBlockStateService implements OnDestroy {\n private readonly _definitionKey$ = new BehaviorSubject<string | null>(null);\n private readonly _definitionVersionTag$ = new BehaviorSubject<string | null>(null);\n private readonly _versions$ = new BehaviorSubject<Array<string>>([]);\n private readonly _requiredPluginKeys$ = new BehaviorSubject<Array<string>>([]);\n private readonly _pluginMappings$ = new BehaviorSubject<Record<string, string | null>>({});\n private readonly _buildingBlockFields$ = new BehaviorSubject<Array<BuildingBlockField>>([]);\n private readonly _inputMappings$ = new BehaviorSubject<Array<BuildingBlockInputMapping>>([]);\n private readonly _outputMappings$ = new BehaviorSubject<Array<BuildingBlockOutputMapping>>([]);\n private readonly _loadingRequirements$ = new BehaviorSubject<boolean>(false);\n private readonly _loadingFields$ = new BehaviorSubject<boolean>(false);\n private readonly _pluginDependencies$ = new BehaviorSubject<Array<string>>([]);\n private readonly _isNestedBuildingBlock$ = new BehaviorSubject<boolean>(false);\n\n private _versionSubscription?: Subscription;\n private _requirementsSubscription?: Subscription;\n private _fieldsSubscription?: Subscription;\n\n constructor(\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService\n ) {}\n\n public get definitionKey$(): Observable<string | null> {\n return this._definitionKey$.asObservable();\n }\n\n public get definitionVersionTag$(): Observable<string | null> {\n return this._definitionVersionTag$.asObservable();\n }\n\n public get versions$(): Observable<Array<string>> {\n return this._versions$.asObservable();\n }\n\n public get requiredPluginKeys$(): Observable<Array<string>> {\n return this._requiredPluginKeys$.asObservable();\n }\n\n public get pluginMappings$(): Observable<Record<string, string | null>> {\n return this._pluginMappings$.asObservable();\n }\n\n public get buildingBlockFields$(): Observable<Array<BuildingBlockField>> {\n return this._buildingBlockFields$.asObservable();\n }\n\n public get inputMappings$(): Observable<Array<BuildingBlockInputMapping>> {\n return this._inputMappings$.asObservable();\n }\n\n public get outputMappings$(): Observable<Array<BuildingBlockOutputMapping>> {\n return this._outputMappings$.asObservable();\n }\n\n public get requirementsLoading$(): Observable<boolean> {\n return this._loadingRequirements$.asObservable();\n }\n\n public get fieldsLoading$(): Observable<boolean> {\n return this._loadingFields$.asObservable();\n }\n\n public get pluginDependencies$(): Observable<Array<string>> {\n return this._pluginDependencies$.asObservable();\n }\n\n public get isNestedBuildingBlock$(): Observable<boolean> {\n return this._isNestedBuildingBlock$.asObservable();\n }\n\n public setIsNestedBuildingBlock(isNested: boolean): void {\n this._isNestedBuildingBlock$.next(isNested);\n }\n\n public get mappingsComplete$(): Observable<boolean> {\n return combineLatest([\n this.requiredPluginKeys$,\n this.pluginMappings$,\n this.definitionVersionTag$,\n this.isNestedBuildingBlock$,\n ]).pipe(\n map(\n ([keys, mappings, version, isNested]) =>\n !!version && (isNested || keys.every(key => !!mappings[key]))\n )\n );\n }\n\n public setDefinitionKey(key: string | null, initialVersionTag?: string): void {\n this._definitionKey$.next(key);\n this._definitionVersionTag$.next(null);\n this._versions$.next([]);\n this.clearPluginRequirements();\n this.clearMappings();\n this.clearFields();\n\n this._versionSubscription?.unsubscribe();\n if (!key) return;\n\n this._versionSubscription = this.processLinkBuildingBlockApiService\n .getVersionsForBuildingBlock(key)\n .subscribe({\n next: versions => {\n this._versions$.next(\n versions.content.map(version => {\n return version.versionTag;\n }) ?? []\n );\n if (initialVersionTag) {\n this.setDefinitionVersionTag(initialVersionTag, true);\n }\n },\n error: () => {\n this._versions$.next([]);\n },\n });\n }\n\n public setProcessLink(processLink: ProcessLink | undefined): void {\n if (!processLink) {\n this.reset();\n return;\n }\n\n if (processLink.processLinkType === 'building-block') {\n this.setDefinitionKey(\n processLink.buildingBlockDefinitionKey ?? null,\n processLink.buildingBlockDefinitionVersionTag ?? undefined\n );\n this.setPluginConfigurationMappings(\n processLink.pluginConfigurationMappings as Record<string, string>\n );\n this.setInputMappings(processLink.inputMappings ?? []);\n this.setOutputMappings(processLink.outputMappings ?? []);\n } else {\n this.reset();\n }\n }\n\n public setDefinitionVersionTag(\n versionTag: string | null,\n preserveMappings: boolean = false\n ): void {\n this._definitionVersionTag$.next(versionTag);\n this.clearPluginRequirements({preserveMappings});\n this.clearFields();\n this.clearMappings({preserveMappings});\n\n const key = this._definitionKey$.getValue();\n if (key && versionTag) {\n this.loadPluginRequirements(key, versionTag);\n this.loadFields(key, versionTag);\n }\n }\n\n public setPluginConfigurationMapping(\n pluginDefinitionKey: string,\n configurationId: string | null\n ): void {\n const current = this._pluginMappings$.getValue();\n this._pluginMappings$.next({\n ...current,\n [pluginDefinitionKey]: configurationId,\n });\n }\n\n public setPluginConfigurationMappings(mappings: Record<string, string> | undefined): void {\n const normalized: Record<string, string | null> = {};\n Object.entries(mappings ?? {}).forEach(([key, value]) => {\n normalized[key] = value;\n });\n this._pluginMappings$.next(normalized);\n }\n\n public setInputMappings(mappings: Array<BuildingBlockInputMapping>): void {\n this._inputMappings$.next(mappings ?? []);\n }\n\n public setOutputMappings(mappings: Array<BuildingBlockOutputMapping>): void {\n this._outputMappings$.next(mappings ?? []);\n }\n\n public getInputMappingsSnapshot(): Array<BuildingBlockInputMapping> {\n return [...this._inputMappings$.getValue()];\n }\n\n public getOutputMappingsSnapshot(): Array<BuildingBlockOutputMapping> {\n return [...this._outputMappings$.getValue()];\n }\n\n public getPluginConfigurationMappingsSnapshot(): Record<string, string | null> {\n return {...this._pluginMappings$.getValue()};\n }\n\n public getDefinitionSnapshot(): {key: string | null; versionTag: string | null} {\n return {\n key: this._definitionKey$.getValue(),\n versionTag: this._definitionVersionTag$.getValue(),\n };\n }\n\n public getBuildingBlockFieldsSnapshot(): Array<BuildingBlockField> {\n return [...this._buildingBlockFields$.getValue()];\n }\n\n public reset(): void {\n this._definitionKey$.next(null);\n this._definitionVersionTag$.next(null);\n this._versions$.next([]);\n this._pluginMappings$.next({});\n this._isNestedBuildingBlock$.next(false);\n this.clearFields();\n this.clearMappings();\n this.clearPluginRequirements();\n }\n\n public ngOnDestroy(): void {\n this._versionSubscription?.unsubscribe();\n this._requirementsSubscription?.unsubscribe();\n this._fieldsSubscription?.unsubscribe();\n }\n\n private loadPluginRequirements(key: string, versionTag: string): void {\n this._loadingRequirements$.next(true);\n this._requirementsSubscription?.unsubscribe();\n this._requirementsSubscription = this.processLinkBuildingBlockApiService\n .getPluginDefinitionsForBuildingBlock(key, versionTag)\n .subscribe({\n next: res => {\n const plugins = res?.plugins ?? [];\n const pluginKeys = plugins.map(plugin => plugin.pluginDefinitionKey).filter(Boolean);\n const dependencies: string[] = Array.from(\n new Set(plugins.flatMap(p => p.dependencies ?? []).map(d => d.key))\n );\n\n this.applyPluginKeys(pluginKeys ?? []);\n this._pluginDependencies$.next(dependencies);\n this._loadingRequirements$.next(false);\n },\n error: () => {\n this.applyPluginKeys([]);\n this._pluginDependencies$.next([]);\n this._loadingRequirements$.next(false);\n },\n });\n }\n\n private applyPluginKeys(pluginKeys: Array<string>): void {\n const currentMappings = this._pluginMappings$.getValue();\n const normalized: Record<string, string | null> = {};\n pluginKeys.forEach(key => {\n normalized[key] = currentMappings[key] ?? null;\n });\n this._requiredPluginKeys$.next(pluginKeys);\n this._pluginMappings$.next(normalized);\n }\n\n private loadFields(key: string, versionTag: string): void {\n this._loadingFields$.next(true);\n this._fieldsSubscription?.unsubscribe();\n this._fieldsSubscription = this.processLinkBuildingBlockApiService\n .getFieldsForBuildingBlock(key, versionTag)\n .subscribe({\n next: fields => {\n this._buildingBlockFields$.next(fields ?? []);\n this._loadingFields$.next(false);\n },\n error: () => {\n this._buildingBlockFields$.next([]);\n this._loadingFields$.next(false);\n },\n });\n }\n\n private clearPluginRequirements(options: {preserveMappings?: boolean} = {}): void {\n this._requirementsSubscription?.unsubscribe();\n this._requiredPluginKeys$.next([]);\n if (!options.preserveMappings) {\n this._pluginMappings$.next({});\n }\n this._loadingRequirements$.next(false);\n }\n\n private clearFields(): void {\n this._fieldsSubscription?.unsubscribe();\n this._buildingBlockFields$.next([]);\n this._loadingFields$.next(false);\n }\n\n private clearMappings(options: {preserveMappings?: boolean} = {}): void {\n if (options.preserveMappings) {\n return;\n }\n this._inputMappings$.next([]);\n this._outputMappings$.next([]);\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {\n FormFlowBreadcrumbs,\n FormFlowCreateRequest,\n FormFlowCreateResult,\n FormFlowDefinition,\n FormFlowInstance,\n} from '../models';\nimport {ConfigService, BaseApiService} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormFlowService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public createInstanceForNewProcess(\n processDefinitionKey: string,\n request: FormFlowCreateRequest\n ): Observable<FormFlowCreateResult> {\n return this.httpClient.post<FormFlowCreateResult>(\n this.getApiUrl(`v1/process-definition/${processDefinitionKey}/form-flow`),\n request\n );\n }\n\n public getFormFlowStep(formFlowInstanceId: string): Observable<FormFlowInstance> {\n return this.httpClient.get<FormFlowInstance>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}`)\n );\n }\n\n public submitStep(\n formFlowInstanceId: string,\n stepInstanceId: string,\n submissionData: any\n ): Observable<FormFlowInstance> {\n return this.httpClient.post<FormFlowInstance>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/step/instance/${stepInstanceId}`),\n submissionData\n );\n }\n\n public back(formFlowInstanceId: string, submissionData: any): Observable<FormFlowInstance> {\n return this.httpClient.post<FormFlowInstance>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/back`),\n submissionData\n );\n }\n\n public save(formFlowInstanceId: string, submissionData: any): Observable<null> {\n return this.httpClient.post<null>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/save`),\n submissionData\n );\n }\n\n public getBreadcrumbs(formFlowInstanceId: string): Observable<FormFlowBreadcrumbs> {\n return this.httpClient.get<FormFlowBreadcrumbs>(\n this.getApiUrl(`v1/form-flow/instance/${formFlowInstanceId}/breadcrumbs`)\n );\n }\n\n public navigateToStep(\n instanceId: string,\n currentStepInstanceId: string,\n targetStepInstanceId,\n submissionData: any\n ): Observable<FormFlowInstance> {\n return this.httpClient.post<FormFlowInstance>(\n this.getApiUrl(\n `v1/form-flow/instance/${instanceId}/step/instance/${currentStepInstanceId}/to/step/instance/${targetStepInstanceId}`\n ),\n submissionData\n );\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, of, Subject, switchMap} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\nimport {\n PluginConfiguration,\n PluginDefinition,\n PluginFunction,\n PluginManagementService,\n PluginService,\n} from '@valtimo/plugin';\nimport {ProcessLink} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PluginStateService {\n private readonly _selectedPluginDefinition$ = new BehaviorSubject<PluginDefinition>(undefined);\n private readonly _selectedPluginConfiguration$ = new BehaviorSubject<PluginConfiguration>(\n undefined\n );\n private readonly _selectedPluginFunction$ = new BehaviorSubject<PluginFunction>(undefined);\n private readonly _save$ = new Subject<null>();\n private readonly _selectedProcessLink$ = new BehaviorSubject<ProcessLink>(undefined);\n\n constructor(\n private readonly pluginManagementService: PluginManagementService,\n private readonly pluginService: PluginService\n ) {}\n\n get selectedPluginDefinition$(): Observable<PluginDefinition> {\n return this._selectedPluginDefinition$.asObservable();\n }\n\n get selectedPluginConfiguration$(): Observable<PluginConfiguration> {\n return this._selectedPluginConfiguration$.asObservable();\n }\n\n get selectedPluginFunction$(): Observable<PluginFunction> {\n return this._selectedPluginFunction$.asObservable();\n }\n\n get save$(): Observable<any> {\n return this._save$.asObservable();\n }\n\n get functionKey$(): Observable<string> {\n // Prioritize user-selected function, fall back to process link's saved action\n return this._selectedPluginFunction$.pipe(\n map(pluginFunction => pluginFunction?.key)\n );\n }\n\n get pluginDefinitionKey$(): Observable<string> {\n return this._selectedProcessLink$.pipe(\n switchMap(selectedProcesLink =>\n !selectedProcesLink\n ? combineLatest([\n this._selectedPluginConfiguration$,\n this._selectedPluginDefinition$,\n ]).pipe(\n map(\n ([configuration, definition]) =>\n configuration?.pluginDefinition.key || definition?.key\n )\n )\n : combineLatest([\n this._selectedProcessLink$,\n this.pluginService.pluginSpecifications$,\n ]).pipe(\n map(([processLink, pluginSpecifications]) => {\n if (processLink?.pluginDefinitionKey) {\n return processLink.pluginDefinitionKey;\n }\n const pluginSpecification = pluginSpecifications.find(specification => {\n const functionKeys =\n specification?.functionConfigurationComponents &&\n Object.keys(specification.functionConfigurationComponents);\n return functionKeys?.includes(processLink?.pluginActionDefinitionKey);\n });\n\n return pluginSpecification?.pluginId;\n })\n )\n )\n );\n }\n\n selectPluginDefinition(definition: PluginDefinition): void {\n this._selectedPluginDefinition$.next(definition);\n }\n\n selectPluginConfiguration(configuration: PluginConfiguration | undefined): void {\n this._selectedPluginConfiguration$.next(configuration);\n }\n\n selectPluginFunction(pluginFunction: PluginFunction): void {\n this._selectedPluginFunction$.next(pluginFunction);\n }\n\n selectProcessLink(processLink: ProcessLink): void {\n this._selectedProcessLink$.next(processLink);\n\n // When editing a plugin process link, populate the plugin definition\n if (processLink?.processLinkType === 'plugin') {\n this.loadPluginDefinitionForProcessLink(processLink);\n }\n }\n\n private loadPluginDefinitionForProcessLink(processLink: ProcessLink): void {\n // Get the plugin definition key - either directly or from plugin specifications\n this.getPluginDefinitionKeyForProcessLink(processLink)\n .pipe(take(1))\n .subscribe(pluginDefinitionKey => {\n if (pluginDefinitionKey) {\n // Fetch all plugin definitions and find the one matching the key\n this.pluginManagementService\n .getPluginDefinitions()\n .pipe(\n take(1),\n map(definitions => definitions.find(d => d.key === pluginDefinitionKey))\n )\n .subscribe(definition => {\n if (definition) {\n this._selectedPluginDefinition$.next(definition);\n\n // Also set the selected function if available\n if (processLink.pluginActionDefinitionKey) {\n this._selectedPluginFunction$.next({\n key: processLink.pluginActionDefinitionKey,\n } as PluginFunction);\n }\n }\n });\n }\n });\n\n // Load and set the plugin configuration if available\n if (processLink.pluginConfigurationId) {\n this.pluginManagementService\n .getAllPluginConfigurations()\n .pipe(\n take(1),\n map(configs => configs.find(c => c.id === processLink.pluginConfigurationId))\n )\n .subscribe(configuration => {\n if (configuration) {\n this._selectedPluginConfiguration$.next(configuration);\n }\n });\n }\n }\n\n private getPluginDefinitionKeyForProcessLink(processLink: ProcessLink): Observable<string> {\n // If the key is directly available, use it\n if (processLink.pluginDefinitionKey) {\n return of(processLink.pluginDefinitionKey);\n }\n\n // Otherwise, derive it from plugin specifications using the action key\n return this.pluginService.pluginSpecifications$.pipe(\n map(pluginSpecifications => {\n const pluginSpecification = pluginSpecifications.find(specification => {\n const functionKeys =\n specification?.functionConfigurationComponents &&\n Object.keys(specification.functionConfigurationComponents);\n return functionKeys?.includes(processLink.pluginActionDefinitionKey);\n });\n return pluginSpecification?.pluginId;\n })\n );\n }\n\n deselectProcessLink(): void {\n this._selectedProcessLink$.next(undefined);\n }\n\n save(): void {\n this._save$.next(null);\n }\n}\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 */\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService, InterceptorSkip} from '@valtimo/shared';\nimport {map, Observable} from 'rxjs';\n\nimport {\n CompatiblePluginProcessLinks,\n FormSubmissionResult,\n GetProcessLinkRequest,\n GetProcessLinkResponse,\n ProcessLinkCreateEvent,\n ProcessLinkType,\n TaskWithProcessLink,\n} from '../models';\nimport {URLVariables} from '../models/process-link-url.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkService {\n private readonly VALTIMO_ENDPOINT_URI!: string;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this.VALTIMO_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;\n }\n\n public getTasksWithProcessLinks(processInstanceId: string): Observable<TaskWithProcessLink[]> {\n return this.http\n .get<\n TaskWithProcessLink[]\n >(`${this.VALTIMO_ENDPOINT_URI}v1/process/${processInstanceId}/tasks/process-link`, {})\n .pipe(map(res => res || []));\n }\n\n public getProcessLink(\n getProcessLinkRequest: GetProcessLinkRequest\n ): Observable<GetProcessLinkResponse> {\n var params = new HttpParams().set(\n 'processDefinitionId',\n getProcessLinkRequest.processDefinitionId\n );\n if (getProcessLinkRequest.activityId !== undefined)\n params = params.set('activityId', getProcessLinkRequest.activityId);\n\n return this.http.get<GetProcessLinkResponse>(`${this.VALTIMO_ENDPOINT_URI}v1/process-link`, {\n params,\n });\n }\n\n public getProcessLinkCandidates(activityType: string): Observable<Array<ProcessLinkType>> {\n return this.http.get<Array<ProcessLinkType>>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/types?activityType=${activityType}`\n );\n }\n\n public deployProcessWithProcessLinks(\n processLinks: ProcessLinkCreateEvent[] = [],\n processDefinitionId: string | null,\n processXml: string | null\n ) {\n const formData = new FormData();\n const processLinksBlob = new Blob(\n [JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))],\n {type: 'application/json'}\n );\n\n if (processXml) formData.append('file', new File([processXml], 'process.bpmn'));\n if (processDefinitionId) formData.append('processDefinitionId', processDefinitionId);\n formData.append('processLinks', processLinksBlob);\n\n return this.http.post(`${this.VALTIMO_ENDPOINT_URI}management/v1/process-definition`, formData);\n }\n\n public deployProcessWithProcessLinksForCase(\n processLinks: ProcessLinkCreateEvent[] = [],\n processDefinitionId: string | null,\n processXml: string | null,\n caseDefinitionKey: string,\n caseDefinitionVersionTag: string,\n canInitializeDocument: boolean = false,\n startableByUser: boolean = false\n ) {\n const formData = new FormData();\n const processLinksBlob = new Blob(\n [JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))],\n {type: 'application/json'}\n );\n\n if (processXml) formData.append('file', new File([processXml], 'process.bpmn'));\n\n if (processDefinitionId) formData.append('processDefinitionId', processDefinitionId);\n\n formData.append('processLinks', processLinksBlob);\n formData.append('canInitializeDocument', String(canInitializeDocument));\n formData.append('startableByUser', String(startableByUser));\n\n return this.http.post(\n `${this.VALTIMO_ENDPOINT_URI}management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process-definition`,\n formData\n );\n }\n\n public deployProcessWithProcessLinksForBuildingBlock(\n processLinks: ProcessLinkCreateEvent[] = [],\n processDefinitionId: string | null,\n processXml: string | null,\n buildingBlockKey: string,\n buildingBlockVersionTag: string,\n replace: boolean = false\n ) {\n const formData = new FormData();\n const processLinksBlob = new Blob(\n [JSON.stringify(processLinks.map(processLink => this.emptyStringToNull(processLink)))],\n {type: 'application/json'}\n );\n\n if (processXml) {\n formData.append(\n 'file',\n new File([processXml], `${buildingBlockKey}-${buildingBlockVersionTag}.bpmn`)\n );\n }\n\n if (processDefinitionId) {\n formData.append('processDefinitionId', processDefinitionId);\n }\n\n formData.append('processLinks', processLinksBlob);\n\n return this.http.post(\n `${this.VALTIMO_ENDPOINT_URI}management/v1/building-block/${buildingBlockKey}/version/${buildingBlockVersionTag}/process-definition/${processDefinitionId}`,\n formData,\n {\n headers: new HttpHeaders().set(InterceptorSkip, '409'),\n params: replace ? new HttpParams().set('replace', 'true') : undefined,\n }\n );\n }\n\n public submitForm(\n processLinkId: string,\n formData: object,\n documentId?: string,\n taskInstanceId?: string,\n documentDefinitionName?: string\n ): Observable<FormSubmissionResult> {\n let params = new HttpParams();\n\n if (documentId) {\n params = params.set('documentId', documentId);\n }\n if (taskInstanceId) {\n params = params.set('taskInstanceId', taskInstanceId);\n }\n if (documentDefinitionName) {\n params = params.set('documentDefinitionName', documentDefinitionName);\n }\n\n const httpOptions = {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n params,\n };\n return this.http.post<FormSubmissionResult>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/${processLinkId}/form/submission`,\n formData,\n httpOptions\n );\n }\n\n public submitURLProcessLink(\n processLinkId: string,\n documentId?: string,\n taskInstanceId?: string,\n documentDefinitionName?: string\n ): Observable<FormSubmissionResult> {\n let params = new HttpParams();\n\n if (documentId) {\n params = params.set('documentId', documentId);\n }\n if (taskInstanceId) {\n params = params.set('taskInstanceId', taskInstanceId);\n }\n if (documentDefinitionName) {\n params = params.set('documentDefinitionName', documentDefinitionName);\n }\n\n const httpOptions = {\n headers: new HttpHeaders().set('Content-Type', 'application/json'),\n params,\n };\n return this.http.post<FormSubmissionResult>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/${processLinkId}`,\n {},\n httpOptions\n );\n }\n\n public getVariables(): Observable<URLVariables> {\n return this.http.get<URLVariables>(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/variables`);\n }\n\n public getCompatiblePluginProcessLinks(\n pluginActionDefinitionKey: string\n ): Observable<CompatiblePluginProcessLinks[]> {\n return this.http.get<CompatiblePluginProcessLinks[]>(\n `${this.VALTIMO_ENDPOINT_URI}v1/process-link/plugin?pluginActionDefinitionKey=${pluginActionDefinitionKey}`\n );\n }\n\n private emptyStringToNull<T extends Record<string, any>>(object: T): T {\n if (object && typeof object === 'object') {\n Object.keys(object).forEach(key => {\n const typedKey = key as keyof T;\n const value = object[typedKey];\n if (typeof value === 'object' && value !== null) {\n this.emptyStringToNull(value);\n } else if (value === '') {\n object[typedKey] = null as any;\n }\n });\n }\n return object;\n }\n}\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\nimport {InjectionToken} from '@angular/core';\nimport {FormCustomComponentConfig, FormFlowCustomComponentDefinition} from '../models';\n\nconst FORM_FLOW_COMPONENT_TOKEN = new InjectionToken<Array<FormFlowCustomComponentDefinition>>(\n 'Supported form-flow Angular components',\n {factory: () => []}\n);\n\nconst FORM_CUSTOM_COMPONENT_TOKEN = new InjectionToken<FormCustomComponentConfig>(\n 'Custom component that can be used instead of FormIO or form-flow'\n);\n\nexport {FORM_FLOW_COMPONENT_TOKEN, FORM_CUSTOM_COMPONENT_TOKEN};\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\nimport {FormSize} from '../models';\nimport {CarbonModalSize} from '@valtimo/components';\n\nconst formSizeToCarbonModalSizeMap: Record<FormSize, CarbonModalSize> = {\n extraSmall: 'xs',\n small: 'sm',\n medium: 'md',\n large: 'lg',\n};\n\nconst UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK = ['form-flow', 'ui-component'];\n\nexport {formSizeToCarbonModalSizeMap, UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK};\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\nexport * from './injection-tokens';\nexport * from './process.link';\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\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkButtonService {\n private readonly _showSaveButton$ = new BehaviorSubject<boolean>(false);\n private readonly _enableSaveButton$ = new BehaviorSubject<boolean>(false);\n private readonly _enableNextButton$ = new BehaviorSubject<boolean>(false);\n private readonly _showBackButton$ = new BehaviorSubject<boolean>(false);\n private readonly _showNextButton$ = new BehaviorSubject<boolean>(false);\n private readonly _backButtonClick$ = new Subject<null>();\n private readonly _saveButtonClick$ = new Subject<null>();\n private readonly _nextButtonClick$ = new Subject<null>();\n\n get showSaveButton$(): Observable<boolean> {\n return this._showSaveButton$.asObservable();\n }\n get enableSaveButton$(): Observable<boolean> {\n return this._enableSaveButton$.asObservable();\n }\n get showNextButton$(): Observable<boolean> {\n return this._showNextButton$.asObservable();\n }\n get enableNextButton$(): Observable<boolean> {\n return this._enableNextButton$.asObservable();\n }\n get showBackButton$(): Observable<boolean> {\n return this._showBackButton$.asObservable();\n }\n get backButtonClick$(): Observable<null> {\n return this._backButtonClick$.asObservable();\n }\n get saveButtonClick$(): Observable<null> {\n return this._saveButtonClick$.asObservable();\n }\n get nextButtonClick$(): Observable<null> {\n return this._nextButtonClick$.asObservable();\n }\n\n showSaveButton(): void {\n this._showSaveButton$.next(true);\n }\n\n hideSaveButton(): void {\n this._showSaveButton$.next(false);\n }\n\n showNextButton(): void {\n this._showNextButton$.next(true);\n }\n\n hideNextButton(): void {\n this._showNextButton$.next(false);\n }\n\n enableNextButton(): void {\n this._enableNextButton$.next(true);\n }\n\n disableNextButton(): void {\n this._enableNextButton$.next(false);\n }\n\n enableSaveButton(): void {\n this._enableSaveButton$.next(true);\n }\n\n disableSaveButton(): void {\n this._enableSaveButton$.next(false);\n }\n\n showBackButton(): void {\n this._showBackButton$.next(true);\n }\n\n hideBackButton(): void {\n this._showBackButton$.next(false);\n }\n\n clickBackButton(): void {\n this._backButtonClick$.next(null);\n }\n\n clickSaveButton(): void {\n this._saveButtonClick$.next(null);\n }\n\n clickNextButton(): void {\n this._nextButtonClick$.next(null);\n }\n\n resetButtons(): void {\n this.disableSaveButton();\n this.hideBackButton();\n this.hideSaveButton();\n this.hideNextButton();\n this.disableNextButton();\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {Step} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable} from 'rxjs';\nimport {ProcessLinkConfigurationStep, ProcessLinkType} from '../models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ProcessLinkButtonService} from './process-link-button.service';\nimport {take} from 'rxjs/operators';\nimport {PluginStateService} from './plugin-state.service';\nimport {PluginConfiguration, PluginDefinition, PluginTranslationService} from '@valtimo/plugin';\nimport {ManagementContext} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkStepService {\n private readonly _steps$ = new BehaviorSubject<Array<Step>>(undefined);\n private readonly _currentStepIndex$ = new BehaviorSubject<number>(0);\n private readonly _disableSteps$ = new BehaviorSubject<boolean>(false);\n private readonly _hasOneProcessLinkType$ = new BehaviorSubject<boolean>(false);\n private _context: ManagementContext = 'independent';\n\n get steps$(): Observable<Array<Step>> {\n return combineLatest([\n this._steps$,\n this._disableSteps$,\n this.translateService.stream('key'),\n ]).pipe(\n filter(([steps]) => !!steps),\n map(([steps, disableSteps]) =>\n steps.map(step => ({\n ...step,\n disabled: disableSteps,\n label: this.translateService.instant(`processLinkSteps.${step.label}`),\n ...(step.secondaryLabel && {\n secondaryLabel: this.translateService.instant(step.secondaryLabel),\n }),\n }))\n )\n );\n }\n\n get currentStepIndex$(): Observable<number> {\n return this._currentStepIndex$.asObservable();\n }\n\n get currentStepId$(): Observable<ProcessLinkConfigurationStep | ''> {\n return combineLatest([this._steps$, this.currentStepIndex$]).pipe(\n filter(([steps, currentStepIndex]) => !!steps && typeof currentStepIndex === 'number'),\n map(([steps, currentStepIndex]) =>\n steps.length > 0 ? (steps[currentStepIndex]?.label as ProcessLinkConfigurationStep) : ''\n )\n );\n }\n\n get hasOneProcessLinkType$(): Observable<boolean> {\n return this._hasOneProcessLinkType$.asObservable();\n }\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginStateService: PluginStateService,\n private readonly pluginTranslateService: PluginTranslationService\n ) {}\n\n reset(): void {\n this._currentStepIndex$.next(0);\n this._steps$.next([]);\n }\n\n setInitialSteps(availableProcessLinkTypes: Array<ProcessLinkType>): void {\n if (availableProcessLinkTypes.length > 1) {\n this.setChoiceSteps();\n }\n }\n\n setFormSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form'},\n {label: 'selectForm'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setSingleFormStep(): void {\n this._steps$.next([{label: 'selectForm'}]);\n this._currentStepIndex$.next(0);\n }\n\n setUIComponentStep(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.ui-component'},\n {label: 'uiComponent'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setFormFlowSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form-flow'},\n {label: 'selectFormFlow'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setSingleFormFlowStep(): void {\n this._steps$.next([{label: 'selectFormFlow'}]);\n this._currentStepIndex$.next(0);\n }\n\n setChoosePluginConfigurationSteps(): void {\n const selectionLabel =\n this._context === 'buildingBlock' ? 'choosePluginDefinition' : 'choosePluginConfiguration';\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin'},\n {label: selectionLabel},\n {label: 'choosePluginAction', disabled: true},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n setSingleChoosePluginConfigurationSteps(): void {\n const selectionLabel =\n this._context === 'buildingBlock' ? 'choosePluginDefinition' : 'choosePluginConfiguration';\n this._steps$.next([\n {label: selectionLabel},\n {label: 'choosePluginAction', disabled: true},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(0);\n }\n\n setChoosePluginActionSteps(): void {\n combineLatest([\n this._hasOneProcessLinkType$,\n this.pluginStateService.selectedPluginConfiguration$,\n this.pluginStateService.selectedPluginDefinition$,\n ])\n .pipe(take(1))\n .subscribe(([hasOneType, selectedConfiguration, selectedDefinition]) => {\n const selectionLabel =\n this._context === 'buildingBlock'\n ? 'choosePluginDefinition'\n : 'choosePluginConfiguration';\n const selectedPluginLabel = this.getSelectedPluginLabel(\n selectedConfiguration,\n selectedDefinition\n );\n if (hasOneType) {\n this._steps$.next([\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction'},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(1);\n this.buttonService.showNextButton();\n this.buttonService.showBackButton();\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n } else {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin'},\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction'},\n {label: 'configurePluginAction', disabled: true},\n ]);\n this._currentStepIndex$.next(2);\n this.buttonService.showNextButton();\n this.buttonService.showBackButton();\n\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n }\n });\n }\n\n setConfigurePluginActionSteps(): void {\n combineLatest([\n this._hasOneProcessLinkType$,\n this.pluginStateService.selectedPluginConfiguration$,\n this.pluginStateService.selectedPluginFunction$,\n this.pluginStateService.selectedPluginDefinition$,\n ])\n .pipe(take(1))\n .subscribe(([hasOneType, selectedConfiguration, selectedFunction, selectedDefinition]) => {\n const pluginKey =\n selectedDefinition?.key || selectedConfiguration?.pluginDefinition?.key || '';\n const selectedFunctionTranslation = pluginKey\n ? this.pluginTranslateService.instant(selectedFunction.key, pluginKey)\n : selectedFunction.key;\n const selectionLabel =\n this._context === 'buildingBlock'\n ? 'choosePluginDefinition'\n : 'choosePluginConfiguration';\n const selectedPluginLabel = this.getSelectedPluginLabel(\n selectedConfiguration,\n selectedDefinition\n );\n\n if (hasOneType) {\n this._steps$.next([\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction', secondaryLabel: selectedFunctionTranslation},\n {label: 'configurePluginAction'},\n ]);\n this._currentStepIndex$.next(2);\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n } else {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.plugin'},\n {label: selectionLabel, secondaryLabel: selectedPluginLabel},\n {label: 'choosePluginAction', secondaryLabel: selectedFunctionTranslation},\n {label: 'configurePluginAction'},\n ]);\n this._currentStepIndex$.next(3);\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n }\n });\n }\n\n setBuildingBlockSteps(): void {\n this._hasOneProcessLinkType$.pipe(take(1)).subscribe(hasOneType => {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.building-block'},\n {label: 'selectBuildingBlock'},\n {label: 'configureBuildingBlockPlugins', disabled: true},\n {label: 'configureBuildingBlockMappings', disabled: true},\n ]);\n this._currentStepIndex$.next(hasOneType ? 0 : 1);\n this.buttonService.showBackButton();\n this.buttonService.showNextButton();\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n });\n }\n\n setConfigureBuildingBlockPluginsStep(selectionLabel?: string): void {\n this._hasOneProcessLinkType$.pipe(take(1)).subscribe(hasOneType => {\n const steps = hasOneType\n ? [\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings', disabled: true},\n ]\n : [\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.building-block'},\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings', disabled: true},\n ];\n\n this._steps$.next(steps);\n this._currentStepIndex$.next(hasOneType ? 1 : 2);\n this.buttonService.showNextButton();\n this.buttonService.hideSaveButton();\n this.buttonService.disableNextButton();\n this.buttonService.showBackButton();\n });\n }\n\n setConfigureBuildingBlockMappingsStep(selectionLabel?: string): void {\n this._hasOneProcessLinkType$.pipe(take(1)).subscribe(hasOneType => {\n const steps = hasOneType\n ? [\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings'},\n ]\n : [\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.building-block'},\n {label: 'selectBuildingBlock', secondaryLabel: selectionLabel},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings'},\n ];\n\n this._steps$.next(steps);\n this._currentStepIndex$.next(hasOneType ? 2 : 3);\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n this.buttonService.disableSaveButton();\n this.buttonService.showBackButton();\n });\n }\n\n updateBuildingBlockSelectionStepLabel(label: string): void {\n const steps = this._steps$.getValue();\n if (!steps?.length) return;\n const updatedSteps = steps.map(step =>\n step.label === 'selectBuildingBlock' ? {...step, secondaryLabel: label} : step\n );\n this._steps$.next(updatedSteps);\n }\n\n public setURLSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.url'},\n {label: 'selectURL'},\n ]);\n this._currentStepIndex$.next(1);\n }\n\n public setSingleURLStep(): void {\n this._steps$.next([{label: 'selectURL'}]);\n this._currentStepIndex$.next(0);\n }\n\n disableSteps(): void {\n this._disableSteps$.next(true);\n }\n\n enableSteps(): void {\n this._disableSteps$.next(false);\n }\n\n setHasOneProcessLinkType(hasOne: boolean): void {\n this._hasOneProcessLinkType$.next(hasOne);\n }\n\n setProcessLinkTypeSteps(processLinkTypeId: string, hasOneOption?: boolean): void {\n switch (processLinkTypeId) {\n case 'form':\n if (hasOneOption) {\n this.setSingleFormStep();\n this.buttonService.hideBackButton();\n } else {\n this.setFormSteps();\n this.buttonService.showBackButton();\n }\n this.buttonService.showSaveButton();\n break;\n case 'form-flow':\n if (hasOneOption) {\n this.setSingleFormFlowStep();\n this.buttonService.hideSaveButton();\n this.buttonService.hideBackButton();\n } else {\n this.setFormFlowSteps();\n this.buttonService.showSaveButton();\n this.buttonService.showBackButton();\n }\n break;\n case 'plugin':\n if (hasOneOption) {\n this.setSingleChoosePluginConfigurationSteps();\n this.buttonService.hideBackButton();\n this.buttonService.showNextButton();\n } else {\n this.setChoosePluginConfigurationSteps();\n this.buttonService.showBackButton();\n this.buttonService.showNextButton();\n }\n break;\n case 'building-block':\n this.setBuildingBlockSteps();\n break;\n case 'url':\n if (hasOneOption) {\n this.setSingleURLStep();\n this.buttonService.hideBackButton();\n this.buttonService.showSaveButton();\n } else {\n this.setURLSteps();\n this.buttonService.showBackButton();\n this.buttonService.showSaveButton();\n }\n break;\n case 'ui-component':\n this.setUIComponentStep();\n this.buttonService.showBackButton();\n this.buttonService.showSaveButton();\n break;\n }\n }\n\n private setChoiceSteps(): void {\n this._steps$.next([\n {label: 'chooseProcessLinkType'},\n {label: 'empty', disabled: true},\n {label: 'empty', disabled: true},\n ]);\n this._currentStepIndex$.next(0);\n }\n\n private getSelectedPluginLabel(\n selectedConfiguration: PluginConfiguration | undefined,\n selectedDefinition: PluginDefinition | undefined\n ): string {\n if (this._context === 'buildingBlock') {\n const definitionKey = selectedDefinition?.key || selectedConfiguration?.pluginDefinition?.key;\n return definitionKey ? this.pluginTranslateService.instant('title', definitionKey) : '';\n }\n return selectedConfiguration?.title || '';\n }\n\n public setContext(context: ManagementContext): void {\n this._context = context;\n }\n\n /**\n * Initialize steps for editing an existing process link.\n * Sets up configuration steps only (skipping type selection since type can't be changed).\n * Navigates to the final step.\n */\n public initializeEditModeSteps(processLinkType: string): void {\n switch (processLinkType) {\n case 'form':\n // Single step for form - just the form selection\n this._steps$.next([{label: 'selectForm'}]);\n this._currentStepIndex$.next(0);\n break;\n case 'form-flow':\n // Single step for form-flow - just the form flow selection\n this._steps$.next([{label: 'selectFormFlow'}]);\n this._currentStepIndex$.next(0);\n break;\n case 'plugin':\n const selectionLabel =\n this._context === 'buildingBlock' ? 'choosePluginDefinition' : 'choosePluginConfiguration';\n // Plugin has 3 config steps: select config, select action, configure action\n this._steps$.next([\n {label: selectionLabel},\n {label: 'choosePluginAction'},\n {label: 'configurePluginAction'},\n ]);\n this._currentStepIndex$.next(2); // Start at last step\n break;\n case 'building-block':\n // Building block has 3 config steps: select BB, configure plugins, configure mappings\n this._steps$.next([\n {label: 'selectBuildingBlock'},\n {label: 'configureBuildingBlockPlugins'},\n {label: 'configureBuildingBlockMappings'},\n ]);\n this._currentStepIndex$.next(2); // Start at last step\n break;\n case 'ui-component':\n // Single step for UI component\n this._steps$.next([{label: 'uiComponent'}]);\n this._currentStepIndex$.next(0);\n break;\n case 'url':\n // Single step for URL\n this._steps$.next([{label: 'selectURL'}]);\n this._currentStepIndex$.next(0);\n break;\n }\n }\n\n /**\n * Navigate to a specific step by index (for edit mode navigation)\n */\n public goToStep(stepIndex: number): void {\n const steps = this._steps$.getValue();\n if (steps && stepIndex >= 0 && stepIndex < steps.length) {\n this._currentStepIndex$.next(stepIndex);\n }\n }\n\n /**\n * Navigate to the previous step (for edit mode navigation)\n * Returns true if navigation was successful, false if already at first step\n */\n public goToPreviousStep(): boolean {\n const currentIndex = this._currentStepIndex$.getValue();\n if (currentIndex > 0) {\n this._currentStepIndex$.next(currentIndex - 1);\n return true;\n }\n return false;\n }\n\n /**\n * Navigate to the next step (for edit mode navigation)\n * Returns true if navigation was successful, false if already at last step\n */\n public goToNextStep(): boolean {\n const steps = this._steps$.getValue();\n const currentIndex = this._currentStepIndex$.getValue();\n if (steps && currentIndex < steps.length - 1) {\n this._currentStepIndex$.next(currentIndex + 1);\n return true;\n }\n return false;\n }\n\n /**\n * Check if currently at the first step\n */\n public isFirstStep(): boolean {\n return this._currentStepIndex$.getValue() === 0;\n }\n\n /**\n * Check if currently at the last step\n */\n public isLastStep(): boolean {\n const steps = this._steps$.getValue();\n const currentIndex = this._currentStepIndex$.getValue();\n return steps ? currentIndex === steps.length - 1 : false;\n }\n\n /**\n * Get the total number of steps\n */\n public getStepCount(): number {\n return this._steps$.getValue()?.length || 0;\n }\n\n /**\n * Get the current step index\n */\n public getCurrentStepIndex(): number {\n return this._currentStepIndex$.getValue();\n }\n}\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 */\nimport {Inject, Injectable, OnDestroy, Optional} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, Subscription} from 'rxjs';\nimport {\n FormCustomComponentConfig,\n ModalParams,\n ProcessLink,\n ProcessLinkCreateEvent,\n ProcessLinkDeleteEvent,\n ProcessLinkType,\n ProcessLinkUpdateEvent,\n} from '../models';\nimport {PluginStateService} from './plugin-state.service';\nimport {ProcessLinkButtonService} from './process-link-button.service';\nimport {ProcessLinkStepService} from './process-link-step.service';\nimport {FORM_CUSTOM_COMPONENT_TOKEN, UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK} from '../constants';\nimport {ManagementContext} from '@valtimo/shared';\nimport {BuildingBlockStateService} from './building-block-state.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessLinkStateService implements OnDestroy {\n private readonly _showModal$ = new BehaviorSubject<boolean>(false);\n private readonly _availableProcessLinkTypes$ = new BehaviorSubject<Array<ProcessLinkType>>([]);\n private readonly _elementName$ = new BehaviorSubject<string>('');\n private readonly _selectedProcessLinkTypeId$ = new BehaviorSubject<string>('');\n private readonly _viewModelEnabled$ = new BehaviorSubject<boolean>(false);\n private readonly _url$ = new BehaviorSubject<string>('');\n private readonly _saving$ = new BehaviorSubject<boolean>(false);\n private readonly _modalParams$ = new BehaviorSubject<ModalParams>(undefined);\n private readonly _selectedProcessLink$ = new BehaviorSubject<ProcessLink>(undefined);\n private readonly _isEditing$ = new BehaviorSubject<boolean>(false);\n private readonly _processLinkUpdateEvents$ = new Subject<ProcessLinkUpdateEvent>();\n private readonly _processLinkCreateEvents$ = new Subject<ProcessLinkCreateEvent>();\n private readonly _processLinkDeleteEvents$ = new Subject<ProcessLinkDeleteEvent>();\n private readonly _context$ = new BehaviorSubject<ManagementContext>('independent');\n\n public get processLinkUpdateEvents$(): Observable<ProcessLinkUpdateEvent> {\n return this._processLinkUpdateEvents$.asObservable();\n }\n public get processLinkCreateEvents$(): Observable<ProcessLinkCreateEvent> {\n return this._processLinkCreateEvents$.asObservable();\n }\n public get processLinkDeleteEvents$(): Observable<ProcessLinkDeleteEvent> {\n return this._processLinkDeleteEvents$.asObservable();\n }\n public get showModal$(): Observable<boolean> {\n return this._showModal$.asObservable();\n }\n public get elementName$(): Observable<string> {\n return this._elementName$.asObservable();\n }\n\n public get availableProcessLinkTypes$(): Observable<ProcessLinkType[]> {\n return combineLatest([this._availableProcessLinkTypes$, this._context$]).pipe(\n map(([types, context]) =>\n (!this.formCustomComponentConfig\n ? types.map(type => ({\n ...type,\n enabled: type.processLinkType === 'ui-component' ? false : type.enabled,\n }))\n : types\n )\n .filter(type => type.processLinkType !== 'url')\n .map(type =>\n context === 'buildingBlock' &&\n UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK.includes(type.processLinkType)\n ? {...type, enabled: false}\n : type\n )\n )\n );\n }\n\n public get hideProgressIndicator$(): Observable<boolean> {\n return this._availableProcessLinkTypes$\n .asObservable()\n .pipe(\n map(\n availableTypes =>\n Array.isArray(availableTypes) &&\n availableTypes.length === 1 &&\n (availableTypes[0]?.processLinkType === 'form' ||\n availableTypes[0]?.processLinkType === 'form-flow')\n )\n );\n }\n public get selectedProcessLinkTypeId$(): Observable<string> {\n return this._selectedProcessLinkTypeId$.asObservable();\n }\n public get saving$(): Observable<boolean> {\n return this._saving$.asObservable();\n }\n public get modalParams$(): Observable<ModalParams> {\n return this._modalParams$.asObservable();\n }\n public get selectedProcessLink$(): Observable<ProcessLink> {\n return this._selectedProcessLink$.asObservable();\n }\n public get typeOfSelectedProcessLink$(): Observable<string> {\n return this.selectedProcessLink$.pipe(map(processLink => processLink?.processLinkType || ''));\n }\n public get viewModelEnabled$(): Observable<boolean> {\n return this._viewModelEnabled$.asObservable();\n }\n public get url$(): Observable<string> {\n return this._url$.asObservable();\n }\n public get context$(): Observable<ManagementContext> {\n return this._context$.asObservable();\n }\n public get isEditing$(): Observable<boolean> {\n return this._isEditing$.asObservable();\n }\n\n private _availableProcessLinkTypesSubscription!: Subscription;\n private _backButtonSubscription!: Subscription;\n private _nextButtonSubscription!: Subscription;\n\n constructor(\n private readonly processLinkStepService: ProcessLinkStepService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginStateService: PluginStateService,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig\n ) {\n this.openAvailableProcessLinkTypesSubscription();\n this.openEditModeNavigationSubscriptions();\n }\n\n public ngOnDestroy(): void {\n this._availableProcessLinkTypesSubscription?.unsubscribe();\n this._backButtonSubscription?.unsubscribe();\n this._nextButtonSubscription?.unsubscribe();\n }\n\n public setAvailableProcessLinkTypes(processLinkTypes: Array<ProcessLinkType>): void {\n const hasOneOption = processLinkTypes.length === 1;\n this._availableProcessLinkTypes$.next(processLinkTypes);\n this.processLinkStepService.setHasOneProcessLinkType(hasOneOption);\n\n if (hasOneOption) {\n this.selectProcessLinkType(processLinkTypes[0].processLinkType, hasOneOption);\n }\n }\n\n public setElementName(name: string): void {\n this._elementName$.next(name);\n }\n\n public showModal(): void {\n this._showModal$.next(true);\n }\n\n public closeModal(): void {\n this._showModal$.next(false);\n\n setTimeout(() => {\n this.reset();\n }, 240);\n }\n\n public selectProcessLinkType(processLinkTypeId: string, hasOneOption?: boolean): void {\n this._selectedProcessLinkTypeId$.next(processLinkTypeId);\n this.processLinkStepService.setProcessLinkTypeSteps(processLinkTypeId, hasOneOption);\n }\n\n public setViewModelEnabled(viewModelEnabled: boolean): void {\n this._viewModelEnabled$.next(viewModelEnabled);\n }\n\n public clearSelectedProcessLinkType(): void {\n this._selectedProcessLinkTypeId$.next('');\n }\n\n public startSaving(): void {\n this._saving$.next(true);\n this.processLinkStepService.disableSteps();\n }\n\n public stopSaving(): void {\n this._saving$.next(false);\n this.processLinkStepService.enableSteps();\n }\n\n public setInitial(): void {\n const availableTypes = this._availableProcessLinkTypes$.getValue();\n this.buttonService.resetButtons();\n this.processLinkStepService.setInitialSteps(availableTypes);\n }\n\n public setModalParams(params: ModalParams): void {\n this._modalParams$.next(params);\n }\n\n public setContext(context: ManagementContext): void {\n this._context$.next(context);\n this.processLinkStepService.setContext(context);\n }\n\n public selectProcessLink(processLink: ProcessLink | undefined): void {\n if (!processLink) return;\n this._selectedProcessLink$.next(processLink);\n this._isEditing$.next(true);\n this.pluginStateService.selectProcessLink(processLink);\n this.buildingBlockStateService.setProcessLink(processLink);\n this.setViewModelEnabled(processLink.viewModelEnabled ?? false);\n this._url$.next(processLink.url ?? '');\n\n // Initialize stepper for editing mode - navigate to last step\n this.processLinkStepService.initializeEditModeSteps(processLink.processLinkType);\n // Set button visibility based on current step position\n this.updateButtonsForCurrentStep();\n }\n\n public deselectProcessLink(): void {\n this._selectedProcessLink$.next(undefined);\n this.pluginStateService.deselectProcessLink();\n this.resetBuildingBlockState();\n }\n\n public sendProcessLinkUpdateEvent(event: ProcessLinkUpdateEvent): void {\n this._processLinkUpdateEvents$.next(event);\n }\n\n public sendProcessLinkCreateEvent(event: ProcessLinkCreateEvent): void {\n this._processLinkCreateEvents$.next(event);\n }\n\n public sendProcessLinkDeleteEvent(event: ProcessLinkDeleteEvent): void {\n this._processLinkDeleteEvents$.next(event);\n }\n\n private openAvailableProcessLinkTypesSubscription(): void {\n this._availableProcessLinkTypesSubscription = this._availableProcessLinkTypes$.subscribe(\n availableProcessLinkTypes => {\n if (availableProcessLinkTypes.length > 1) {\n this.setInitial();\n }\n }\n );\n }\n\n private openEditModeNavigationSubscriptions(): void {\n // Handle back button in edit mode\n this._backButtonSubscription = this.buttonService.backButtonClick$.subscribe(() => {\n if (this._isEditing$.getValue()) {\n this.navigateBackInEditMode();\n }\n });\n\n // Handle next button in edit mode\n this._nextButtonSubscription = this.buttonService.nextButtonClick$.subscribe(() => {\n if (this._isEditing$.getValue()) {\n this.navigateForwardInEditMode();\n }\n });\n }\n\n private navigateBackInEditMode(): void {\n const navigated = this.processLinkStepService.goToPreviousStep();\n if (navigated) {\n this.updateButtonsForCurrentStep();\n }\n }\n\n private navigateForwardInEditMode(): void {\n const navigated = this.processLinkStepService.goToNextStep();\n if (navigated) {\n this.updateButtonsForCurrentStep();\n }\n }\n\n private updateButtonsForCurrentStep(): void {\n const isFirstStep = this.processLinkStepService.isFirstStep();\n const isLastStep = this.processLinkStepService.isLastStep();\n\n // Back button visibility\n if (isFirstStep) {\n this.buttonService.hideBackButton();\n } else {\n this.buttonService.showBackButton();\n }\n\n // Next/Save button visibility\n if (isLastStep) {\n this.buttonService.hideNextButton();\n this.buttonService.showSaveButton();\n } else {\n this.buttonService.showNextButton();\n this.buttonService.enableNextButton();\n this.buttonService.hideSaveButton();\n }\n }\n\n public isBuildingBlockContext(): boolean {\n return this._context$.getValue() === 'buildingBlock';\n }\n\n private resetBuildingBlockState(): void {\n this.buildingBlockStateService.reset();\n }\n\n private reset(): void {\n this.setAvailableProcessLinkTypes([]);\n this.processLinkStepService.reset();\n this.stopSaving();\n this.buttonService.resetButtons();\n this.clearSelectedProcessLinkType();\n this.deselectProcessLink();\n this.resetBuildingBlockState();\n this._isEditing$.next(false);\n }\n}\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\nimport {Inject, Injectable} from '@angular/core';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\nimport {FormFlowCustomComponentDefinition} from '../models';\nimport {FORM_FLOW_COMPONENT_TOKEN} from '../constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormFlowComponentService {\n private readonly _supportedComponents$ =\n new BehaviorSubject<Array<FormFlowCustomComponentDefinition> | null>(null);\n\n public get supportedComponents$(): Observable<Array<FormFlowCustomComponentDefinition>> {\n return this._supportedComponents$.pipe(filter(components => !!components));\n }\n\n constructor(\n @Inject(FORM_FLOW_COMPONENT_TOKEN)\n private readonly supportedCustomComponents: Array<FormFlowCustomComponentDefinition>\n ) {\n this.setSupportedComponents(supportedCustomComponents);\n }\n\n private setSupportedComponents(\n supportedComponents: Array<FormFlowCustomComponentDefinition>\n ): void {\n this._supportedComponents$.next(supportedComponents);\n }\n}\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\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class UrlResolverService {\n public resolveUrlVariables(url: string, variables: Map<string, string>): string {\n let resolvingUrl = url;\n Object.keys(variables).forEach(key => {\n let value = variables[key];\n resolvingUrl = resolvingUrl.replace('<' + key + '>', value);\n });\n return resolvingUrl;\n }\n}\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\nimport {AbstractControl, ValidationErrors, ValidatorFn} from '@angular/forms';\nimport {Injectable} from '@angular/core';\nimport {UrlResolverService} from './url-resolver.service';\n\n@Injectable()\nexport class UrlValidatorService {\n constructor(private readonly urlResolverService: UrlResolverService) {}\n\n public urlValidator(variables: Map<string, string>): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const url = this.urlResolverService.resolveUrlVariables(control.value, variables);\n try {\n new URL(url);\n return null;\n } catch (_) {\n return {invalidUrl: url};\n }\n };\n }\n}\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\nexport * from './building-block-state.service';\nexport * from './form-flow.service';\nexport * from './plugin-state.service';\nexport * from './process-link.service';\nexport * from './process-link-state.service';\nexport * from './process-link-step.service';\nexport * from './process-link-button.service';\nexport * from './form-flow-component.service';\nexport * from './url-resolver.service';\nexport * from './url-validator.service';\nexport * from './process-link-building-block-api.service';\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {filter, map, switchMap, take, withLatestFrom} from 'rxjs/operators';\nimport {PluginStateService} from '../../services/plugin-state.service';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {\n PluginConfiguration,\n PluginDefinition,\n PluginManagementService,\n PluginService,\n PluginTranslationService,\n} from '@valtimo/plugin';\nimport {\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {PluginListItem} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-plugin-configuration',\n templateUrl: './select-plugin-configuration.component.html',\n styleUrls: ['./select-plugin-configuration.component.scss'],\n})\nexport class SelectPluginConfigurationComponent implements OnInit, OnDestroy {\n readonly isBuildingBlockContext$ = this.stateService.context$.pipe(\n map(context => context === 'buildingBlock')\n );\n\n readonly listItems$: Observable<PluginListItem[] | undefined> = combineLatest([\n this.isBuildingBlockContext$,\n this.stateService.modalParams$,\n ]).pipe(\n switchMap(([isBuildingBlock, modalData]) =>\n isBuildingBlock\n ? combineLatest([\n this.pluginManagementService.getPluginDefinitions(\n modalData?.element?.activityListenerType\n ),\n this.pluginService.pluginSpecifications$,\n ]).pipe(\n map(([definitions, specs]) => {\n const limitedDefinitions =\n definitions?.filter(definition =>\n specs.some(spec => spec.pluginId === definition.key)\n ) ?? [];\n const enriched = limitedDefinitions.map(definition => {\n const spec = specs.find(item => item.pluginId === definition.key);\n return {\n id: definition.key,\n title:\n this.pluginTranslationService.instant('title', definition.key) ||\n definition.title,\n description:\n this.pluginTranslationService.instant('description', definition.key) ||\n definition.description,\n logo: spec?.pluginLogoBase64 ?? null,\n payload: definition.key,\n isDefinition: true,\n } as PluginListItem;\n });\n this.pluginDefinitionsCache = limitedDefinitions;\n return enriched;\n })\n )\n : combineLatest([\n modalData?.element?.type\n ? this.pluginManagementService.getAllPluginConfigurationsWithLogos(\n modalData?.element?.activityListenerType\n )\n : of(undefined),\n this.pluginService.availablePluginIds$,\n ]).pipe(\n map(([configs, availablePluginIds]) =>\n configs\n ?.filter(configuration =>\n availablePluginIds.includes(configuration.pluginDefinition.key)\n )\n ?.map(configuration => ({\n id: configuration.id ?? configuration.title,\n title: configuration.title,\n description: this.pluginTranslationService.instant(\n 'description',\n configuration.pluginDefinition.key\n ),\n logo: (configuration.pluginLogoBase64 as string) ?? null,\n payload: configuration,\n isDefinition: false,\n }))\n )\n )\n )\n );\n\n readonly pageHeaderText$ = this.isBuildingBlockContext$.pipe(\n map(isBuildingBlock =>\n isBuildingBlock\n ? 'processLinkConfiguration.choosePluginDefinitionDescription'\n : 'processLinkConfiguration.choosePluginConfigurationDescription'\n )\n );\n\n readonly columnHeaderText$ = this.isBuildingBlockContext$.pipe(\n map(isBuildingBlock =>\n isBuildingBlock\n ? 'pluginManagement.labels.pluginName'\n : 'pluginManagement.labels.configurationName'\n )\n );\n\n readonly selectedPluginConfiguration$ = this.pluginStateService.selectedPluginConfiguration$;\n readonly selectedPluginDefinition$ = this.pluginStateService.selectedPluginDefinition$;\n\n private _subscriptions = new Subscription();\n private pluginDefinitionsCache: PluginDefinition[] = [];\n\n constructor(\n private readonly pluginManagementService: PluginManagementService,\n private readonly pluginStateService: PluginStateService,\n private readonly pluginService: PluginService,\n private readonly stateService: ProcessLinkStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly pluginTranslationService: PluginTranslationService\n ) {}\n\n ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openNextButtonSubscription();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n selected(event: {value: PluginConfiguration | string}): void {\n this.isBuildingBlockContext$.pipe(take(1)).subscribe(isBuildingBlock => {\n if (isBuildingBlock) {\n const definitionKey = event.value as string;\n const definition = this.pluginDefinitionsCache.find(def => def.key === definitionKey);\n this.selectDefinition(definition);\n } else {\n this.selectConfiguration(event.value as PluginConfiguration);\n }\n this.buttonService.enableNextButton();\n });\n }\n\n private selectConfiguration(configuration: PluginConfiguration): void {\n if (!configuration) return;\n if (configuration.pluginDefinition) {\n this.pluginStateService.selectPluginDefinition(configuration.pluginDefinition);\n }\n this.pluginStateService.selectPluginConfiguration(configuration);\n }\n\n private selectDefinition(definition: PluginDefinition | undefined): void {\n if (!definition) return;\n this.pluginStateService.selectPluginDefinition(definition);\n this.pluginStateService.selectPluginConfiguration(undefined);\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openNextButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setChoosePluginActionSteps();\n })\n );\n }\n}\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\n<ng-container *ngIf=\"listItems$ | async as items; else loading\">\n <p class=\"step-description\">\n {{ pageHeaderText$ | async | translate }}\n </p>\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"selected($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ columnHeaderText$ | async | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.pluginDescription' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let item of items\" [value]=\"item.payload\">\n <cds-list-column>\n <div *ngIf=\"item.logo\">\n <img [src]=\"item.logo\" [title]=\"item.title\" class=\"plugin-configuration-logo\" />\n </div>\n </cds-list-column>\n <cds-list-column>{{ item.title }}</cds-list-column>\n <cds-list-column>{{ item.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {PluginDefinition, PluginFunction, PluginManagementService} from '@valtimo/plugin';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {filter, switchMap, take, withLatestFrom} from 'rxjs/operators';\n\nimport {\n PluginStateService,\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-plugin-action',\n templateUrl: './select-plugin-action.component.html',\n styleUrls: ['./select-plugin-action.component.scss'],\n})\nexport class SelectPluginActionComponent implements OnInit, OnDestroy {\n public readonly pluginFunctions$: Observable<Array<PluginFunction> | undefined> = combineLatest([\n this.stateService.selectedPluginDefinition$,\n this.processLinkStateService.modalParams$,\n ]).pipe(\n switchMap(([selectedDefinition, modalParams]) =>\n selectedDefinition\n ? this.pluginManagementService.getPluginFunctions(\n selectedDefinition.key,\n modalParams.element.activityListenerType\n )\n : of(undefined)\n )\n );\n public readonly selectedPluginDefinition$: Observable<PluginDefinition> =\n this.stateService.selectedPluginDefinition$;\n public readonly selectedPluginFunction$: Observable<PluginFunction> =\n this.stateService.selectedPluginFunction$;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly stateService: PluginStateService,\n private readonly stepService: ProcessLinkStepService,\n private readonly processLinkStateService: ProcessLinkStateService\n ) {}\n\n public ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openNextButtonSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectFunction(pluginFunction: PluginFunction): void {\n this.stateService.selectPluginFunction(pluginFunction);\n }\n\n public selected(event: {value: string}): void {\n this.selectFunction(JSON.parse(event.value));\n this.buttonService.enableNextButton();\n }\n\n public stringify(object: object): string {\n return JSON.stringify(object);\n }\n\n private openBackButtonSubscription(): void {\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.processLinkStateService.isEditing$),\n filter(([, isEditing]) => !isEditing),\n switchMap(() => this.stepService.hasOneProcessLinkType$),\n take(1)\n )\n .subscribe((hasOneOption: boolean) => {\n this.stepService.setProcessLinkTypeSteps('plugin', hasOneOption);\n });\n }\n\n private openNextButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.processLinkStateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigurePluginActionSteps();\n })\n );\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormControl, Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subject} from 'rxjs';\nimport {CompatiblePluginProcessLinks, ProcessLink} from '../../models';\nimport {ProcessLinkService} from '../../services';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {Upload16} from '@carbon/icons';\nimport {CdsThemeService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-import-plugin-configuration',\n templateUrl: './import-plugin-configuration.component.html',\n styleUrls: ['./import-plugin-configuration.component.scss'],\n})\nexport class ImportPluginConfigurationComponent {\n @Input() public set pluginActionKey(value: string) {\n this.importPluginForm.reset();\n this.fetchCompatiblePluginProcessLinks(value);\n }\n\n @Output() public readonly configurationEvent = new EventEmitter<\n ProcessLink['actionProperties']\n >();\n\n public readonly open$ = new Subject<boolean>();\n\n private readonly _compatiblePluginProcessLinksSubject$ = new BehaviorSubject<\n CompatiblePluginProcessLinks[]\n >([]);\n\n public readonly compatiblePluginProcessLinks$ =\n this._compatiblePluginProcessLinksSubject$.asObservable();\n\n public readonly importPluginForm = this.formBuilder.group({\n process: new FormControl('', Validators.required),\n version: new FormControl('', Validators.required),\n activity: new FormControl('', Validators.required),\n });\n\n public get process(): AbstractControl<string> {\n return this.importPluginForm.get('process');\n }\n\n public readonly processListItems$: Observable<ListItem[]> = combineLatest([\n this._compatiblePluginProcessLinksSubject$,\n this.process.valueChanges.pipe(startWith('')),\n ]).pipe(\n map(\n ([compatibleProcessLinks, processValue]) =>\n compatibleProcessLinks?.map(compatibleProcessLink => ({\n content: compatibleProcessLink.processDefinitionKey,\n selected: processValue === compatibleProcessLink.processDefinitionKey,\n })) || []\n )\n );\n\n public get version(): AbstractControl<string> {\n return this.importPluginForm.get('version');\n }\n\n public readonly versionListItems$: Observable<ListItem[]> = combineLatest([\n this._compatiblePluginProcessLinksSubject$,\n this.process.valueChanges.pipe(startWith('')),\n this.version.valueChanges.pipe(startWith('')),\n ]).pipe(\n map(([compatibleProcessLinks, processValue, versionValue]) =>\n !processValue\n ? []\n : compatibleProcessLinks\n .find(compatibleLinks => compatibleLinks.processDefinitionKey === processValue)\n ?.versions.sort((a, b) => Number(b.version) - Number(a.version))\n .map(versionItem => ({\n content: versionItem.version,\n selected: versionItem.version === versionValue,\n })) || []\n )\n );\n\n public get activity(): AbstractControl<string> {\n return this.importPluginForm.get('activity');\n }\n\n public readonly activityListItems$: Observable<ListItem[]> = combineLatest([\n this._compatiblePluginProcessLinksSubject$,\n this.process.valueChanges.pipe(startWith('')),\n this.version.valueChanges.pipe(startWith('')),\n this.activity.valueChanges.pipe(startWith('')),\n ]).pipe(\n map(([compatibleProcessLinks, processValue, versionValue, activityValue]) =>\n !processValue || !versionValue\n ? []\n : compatibleProcessLinks\n .find(compatibleLinks => compatibleLinks.processDefinitionKey === processValue)\n .versions.find(versionItem => versionItem.version === versionValue)\n .processLinks.map(processLinkItem => ({\n content: processLinkItem.activityId,\n selected: processLinkItem.activityId === activityValue,\n }))\n )\n );\n\n public readonly toggletipTheme$ = this.cdsThemeService.toggletipTheme$;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly processLinkService: ProcessLinkService,\n private readonly iconService: IconService,\n private readonly cdsThemeService: CdsThemeService\n ) {\n this.iconService.register(Upload16);\n }\n\n public onSubmit(): void {\n this.configurationEvent.emit(\n this._compatiblePluginProcessLinksSubject$\n .getValue()\n .find(\n compatiblePluginProcessLinks =>\n compatiblePluginProcessLinks.processDefinitionKey === this.process.value\n )\n .versions.find(versionItem => versionItem.version === this.version.value)\n .processLinks.find(processLinkItem => processLinkItem.activityId === this.activity.value)\n .actionProperties\n );\n\n // needed to reliably trigger toggle tip closure\n this.open$.next(true);\n setTimeout(() => this.open$.next(false));\n\n this.importPluginForm.reset();\n }\n\n private fetchCompatiblePluginProcessLinks(pluginActionKey: string): void {\n this.processLinkService\n .getCompatiblePluginProcessLinks(pluginActionKey)\n .subscribe(res => this._compatiblePluginProcessLinksSubject$.next(res));\n }\n\n public processSelected(event: {item: ListItem}): void {\n this.process.setValue(event?.item?.content);\n this.version.setValue('');\n this.activity.setValue('');\n }\n\n public versionSelected(event: {item: ListItem}): void {\n this.version.setValue(event?.item?.content);\n this.activity.setValue('');\n }\n\n public activitySelected(event: {item: ListItem}): void {\n this.activity.setValue(event?.item?.content);\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {\n PluginStateService,\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {filter, map, take, withLatestFrom} from 'rxjs/operators';\nimport {PluginConfiguration, PluginConfigurationData} from '@valtimo/plugin';\nimport {\n PluginConfigurationReferenceType,\n PluginProcessLinkCreateDto,\n PluginProcessLinkUpdateDto,\n ProcessLink,\n} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-plugin-action-configuration',\n templateUrl: './plugin-action-configuration.component.html',\n styleUrls: ['./plugin-action-configuration.component.scss'],\n})\nexport class PluginActionConfigurationComponent implements OnInit, OnDestroy {\n @Input() selectedPluginConfiguration$: Observable<PluginConfiguration>;\n @Output() valid: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() configuration: EventEmitter<PluginConfigurationData> =\n new EventEmitter<PluginConfigurationData>();\n\n public readonly pluginDefinitionKey$ = this.pluginStateService.pluginDefinitionKey$;\n public readonly functionKey$ = this.pluginStateService.functionKey$;\n public readonly save$ = this.pluginStateService.save$;\n public readonly saving$ = this.stateService.saving$;\n\n private readonly _prefillConfigurationSubject$ = new BehaviorSubject<\n ProcessLink['actionProperties'] | null\n >(null);\n // Only prefill if the action key hasn't changed from what's saved in the process link\n private readonly _prefillConfiguration$ = combineLatest([\n this.stateService.selectedProcessLink$,\n this.pluginStateService.selectedPluginFunction$,\n ]).pipe(\n map(([processLink, selectedFunction]) => {\n if (!processLink) return undefined;\n // Only prefill if the action hasn't been changed\n const savedActionKey = processLink.pluginActionDefinitionKey;\n const currentActionKey = selectedFunction?.key;\n if (currentActionKey && savedActionKey !== currentActionKey) {\n return undefined; // Action changed, don't prefill old configuration\n }\n return processLink.actionProperties;\n })\n );\n public readonly prefillConfiguration$ = combineLatest([\n this._prefillConfigurationSubject$,\n this._prefillConfiguration$,\n ]).pipe(\n map(\n ([prefillConfigurationSubjectValue, prefillConfiguration]) =>\n prefillConfigurationSubjectValue || prefillConfiguration\n )\n );\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly pluginStateService: PluginStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly processLinkService: ProcessLinkService\n ) {}\n\n ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n onValid(valid: boolean): void {\n if (valid) this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n\n onConfiguration(configuration: PluginConfigurationData): void {\n this.stateService.startSaving();\n\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n if (selectedProcessLink) {\n this.updateProcessLink(configuration);\n } else {\n this.saveNewProcessLink(configuration);\n }\n });\n }\n\n public onImportConfiguration(configuration: ProcessLink['actionProperties']): void {\n this._prefillConfigurationSubject$.next(configuration);\n }\n\n private updateProcessLink(configuration: PluginConfigurationData): void {\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.pluginStateService.selectedPluginFunction$,\n ])\n .pipe(take(1))\n .subscribe(([selectedProcessLink, selectedFunction]) => {\n const inferredReferenceType: PluginConfigurationReferenceType =\n (selectedProcessLink.referenceType as PluginConfigurationReferenceType) ||\n (selectedProcessLink.pluginDefinitionKey ? 'BUILDING_BLOCK' : 'FIXED');\n const pluginConfigurationId =\n inferredReferenceType === 'FIXED'\n ? (selectedProcessLink.pluginConfigurationId ?? '')\n : undefined;\n // Use the currently selected function key (user may have changed it)\n const actionKey = selectedFunction?.key ?? selectedProcessLink.pluginActionDefinitionKey ?? '';\n const updateProcessLinkRequest: PluginProcessLinkUpdateDto = {\n id: selectedProcessLink.id,\n pluginConfigurationId,\n pluginActionDefinitionKey: actionKey,\n actionProperties: configuration,\n activityId: selectedProcessLink.activityId,\n referenceType: inferredReferenceType,\n pluginDefinitionKey: selectedProcessLink.pluginDefinitionKey,\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);\n });\n }\n\n private saveNewProcessLink(configuration: PluginConfigurationData): void {\n combineLatest([\n this.stateService.modalParams$,\n this.pluginStateService.selectedPluginConfiguration$,\n this.pluginStateService.selectedPluginFunction$,\n this.stateService.selectedProcessLinkTypeId$,\n this.pluginStateService.selectedPluginDefinition$,\n ])\n .pipe(take(1))\n .subscribe(\n ([\n modalData,\n selectedConfiguration,\n selectedFunction,\n selectedProcessLinkTypeId,\n selectedDefinition,\n ]) => {\n const isBuildingBlock = this.stateService.isBuildingBlockContext();\n const pluginDefinitionKey =\n selectedConfiguration?.pluginDefinition?.key || selectedDefinition?.key;\n\n if (!selectedFunction || (isBuildingBlock && !pluginDefinitionKey)) {\n this.stateService.stopSaving();\n return;\n }\n\n if (!isBuildingBlock && !selectedConfiguration) {\n this.stateService.stopSaving();\n return;\n }\n\n const referenceType: PluginConfigurationReferenceType = isBuildingBlock\n ? 'BUILDING_BLOCK'\n : 'FIXED';\n\n const processLinkRequest: PluginProcessLinkCreateDto = {\n actionProperties: configuration,\n activityId: modalData?.element?.id,\n activityType: modalData?.element?.activityListenerType ?? '',\n pluginConfigurationId: isBuildingBlock ? undefined : selectedConfiguration?.id,\n processDefinitionId: modalData?.processDefinitionId,\n pluginActionDefinitionKey: selectedFunction.key,\n processLinkType: selectedProcessLinkTypeId,\n referenceType,\n pluginDefinitionKey,\n };\n\n this.stateService.sendProcessLinkCreateEvent(processLinkRequest);\n }\n );\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setChoosePluginActionSteps();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.pluginStateService.save();\n })\n );\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\n\nimport BpmnViewer from 'bpmn-js';\nimport {ActivatedRoute} from '@angular/router';\nimport {combineLatest} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {PageTitleService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-link-process-diagram',\n templateUrl: './form-link-process-diagram.component.html',\n styleUrls: ['./form-link-process-diagram.component.scss'],\n})\nexport class FormLinkProcessDiagramComponent implements OnInit, OnDestroy {\n private bpmnViewer: BpmnViewer;\n\n @ViewChild('ref') public el: ElementRef;\n @Output() public bpmnElementModalOpen: EventEmitter<any> = new EventEmitter();\n @Output() public bpmnElementModalClose: EventEmitter<any> = new EventEmitter();\n\n public processDefinitionKey: string;\n public processDefinitions: ProcessDefinition[];\n public processDiagram: any;\n public processDefinition: ProcessDefinition;\n public processDefinitionVersions: ProcessDefinition[];\n public version: number;\n private callbacksAdded = false;\n private processDefinitionId!: string;\n\n constructor(\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService\n ) {}\n\n ngOnInit() {\n this.pageTitleService.disableReset();\n combineLatest([this.route.queryParams, this.processService.getProcessDefinitions()])\n .pipe(map(([queryParams, processDefinitions]) => ({queryParams, processDefinitions})))\n .subscribe(response => {\n this.processDefinitions = response.processDefinitions;\n if (response.queryParams.process) {\n this.processDefinitionKey = response.queryParams.process;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n this.bpmnElementModalOpen.emit({\n element: {\n id: 'start-event',\n type: 'bpmn:StartEvent',\n },\n processDefinitionKey: this.processDefinitionKey,\n processDefinitionId: this.processDefinitionId,\n });\n }\n if (!this.processDefinitionKey && response.processDefinitions.length !== 0) {\n this.processDefinitionKey = response.processDefinitions[0].key;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n });\n this.bpmnViewer = new BpmnViewer({});\n this.bpmnViewer.on('import.done', ({error}: any) => {\n if (!error) {\n const canvas = this.bpmnViewer.get('canvas') as any;\n const eventBus = this.bpmnViewer.get('eventBus') as any;\n canvas.zoom('fit-viewport', 'auto');\n\n if (this.processDefinitionVersions && !this.callbacksAdded) {\n eventBus.on('element.click', e => {\n let activityListenerType = e.element.businessObject.$type;\n if (activityListenerType === 'bpmn:UserTask') {\n activityListenerType += ':create';\n } else {\n activityListenerType += ':start';\n }\n\n this.bpmnElementModalOpen.emit({\n element: {\n id: e.element.businessObject.id,\n type: e.element.businessObject.$type,\n activityListenerType,\n name: e.element?.businessObject?.name,\n },\n processDefinitionKey: this.processDefinitionKey,\n processDefinitionId: this.processDefinitionId,\n });\n });\n this.callbacksAdded = true;\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.bpmnElementModalClose.emit();\n if (this.bpmnViewer) {\n this.bpmnViewer.destroy();\n }\n this.pageTitleService.enableReset();\n }\n\n public loadProcessDefinition(processDefinitionKey: string): void {\n this.processService\n .getProcessDefinition(processDefinitionKey)\n .subscribe((processDefinition: ProcessDefinition) => {\n this.processDefinitionId = processDefinition.id;\n this.version = processDefinition.version;\n this.loadProcessDefinitionXml(processDefinition.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey: string): void {\n this.processService\n .getProcessDefinitionVersions(processDefinitionKey)\n .subscribe((processDefinitionVersions: ProcessDefinition[]) => {\n this.processDefinitionVersions = processDefinitionVersions;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey: string): void {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId: string): void {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnViewer.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnViewer.attachTo(this.el.nativeElement);\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey: string): void {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version: string): void {\n const processDefinitionId = this.processDefinitionVersions.find(\n definition => definition.version === +version\n )?.id;\n\n if (processDefinitionId) {\n this.processDefinitionId = processDefinitionId;\n this.loadProcessDefinitionXml(this.processDefinitionId);\n }\n\n this.version = +version;\n }\n}\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\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","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, of, startWith, Subscription} from 'rxjs';\nimport {filter, map, switchMap, take, withLatestFrom} from 'rxjs/operators';\nimport {\n BuildingBlockInputMapping,\n BuildingBlockOutputMapping,\n BuildingBlockProcessLinkCreateDto,\n BuildingBlockProcessLinkUpdateDto,\n BuildingBlockSyncTiming,\n InputRowFormGroup,\n InputsFormGroup,\n OutputRowFormGroup,\n OutputsFormGroup,\n ProcessLink,\n} from '../../models';\nimport {\n BuildingBlockStateService,\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {\n ButtonModule,\n ComboBoxModule,\n IconModule,\n InputModule,\n LayerModule,\n RadioModule,\n} from 'carbon-components-angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n InputLabelModule,\n SelectItem,\n SelectModule,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {getBuildingBlockManagementRouteParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n standalone: true,\n selector: 'valtimo-configure-building-block-mappings',\n templateUrl: './configure-building-block-mappings.component.html',\n styleUrls: ['./configure-building-block-mappings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ComboBoxModule,\n RadioModule,\n InputModule,\n ValuePathSelectorComponent,\n InputLabelModule,\n TranslateModule,\n ButtonModule,\n IconModule,\n SelectModule,\n LayerModule,\n ],\n})\nexport class ConfigureBuildingBlockMappingsComponent implements OnInit, OnDestroy, AfterViewInit {\n public readonly buildingBlockFields$ = this.buildingBlockStateService.buildingBlockFields$;\n\n public readonly buildingBlockFieldItems$: Observable<Array<SelectItem>> =\n this.buildingBlockFields$.pipe(\n map(buildingBlockFields =>\n buildingBlockFields.map(buildingBlockField => {\n return {\n id: buildingBlockField.name,\n text: `doc:${buildingBlockField.name}`,\n };\n })\n )\n );\n\n public readonly inputsForm: InputsFormGroup = new FormGroup<InputsFormGroup['controls']>({\n inputs: new FormArray<InputRowFormGroup>([]),\n });\n public readonly outputsForm: OutputsFormGroup = new FormGroup<OutputsFormGroup['controls']>({\n outputs: new FormArray<OutputRowFormGroup>([]),\n });\n\n private readonly _rowItemsCache = new WeakMap<InputRowFormGroup, Observable<SelectItem[]>>();\n public getBuildingBlockFieldItemsForRow$(\n group: InputRowFormGroup\n ): Observable<Array<SelectItem>> {\n const cached = this._rowItemsCache.get(group);\n\n if (cached) return cached;\n\n const stream = combineLatest([\n this.buildingBlockFieldItems$,\n this.inputsForm.valueChanges.pipe(startWith(this.inputsForm.value)),\n group.valueChanges.pipe(startWith(group.value)),\n ]).pipe(\n map(([buildingBlockFieldItems, inputsFormValue, groupValue]) => {\n const usedInputTargets =\n inputsFormValue.inputs?.map(input => input.target).filter(Boolean) ?? [];\n\n return buildingBlockFieldItems.filter(item => {\n if (item.id === groupValue.target) return true;\n return !usedInputTargets.includes(`${item.id}`);\n });\n })\n );\n\n this._rowItemsCache.set(group, stream);\n\n return stream;\n }\n\n private readonly _outputTargetFiltersCache = new WeakMap<\n OutputRowFormGroup,\n Observable<string[]>\n >();\n public getUsedCaseTargetsForRow$(group: OutputRowFormGroup): Observable<string[]> {\n const cached = this._outputTargetFiltersCache.get(group);\n if (cached) return cached;\n\n const stream = combineLatest([\n this.outputsForm.valueChanges.pipe(startWith(this.outputsForm.value)),\n group.valueChanges.pipe(startWith(group.value)),\n ]).pipe(\n map(([outputsFormValue, groupValue]) => {\n const allTargets =\n outputsFormValue.outputs?.map(output => output.target).filter(Boolean) ?? [];\n\n return allTargets.filter(target => target !== groupValue.target);\n })\n );\n\n this._outputTargetFiltersCache.set(group, stream);\n\n return stream;\n }\n\n public readonly syncTimingItems: Array<{id: BuildingBlockSyncTiming; labelKey: string}> = [\n {\n id: 'CONTINUOUS' as BuildingBlockSyncTiming,\n labelKey: 'processLinkConfiguration.buildingBlock.sync.continuous',\n },\n {\n id: 'END' as BuildingBlockSyncTiming,\n labelKey: 'processLinkConfiguration.buildingBlock.sync.end',\n },\n ];\n\n public readonly params$ = getCaseManagementRouteParams(this.route);\n public readonly buildingBlockParams$ = getBuildingBlockManagementRouteParams(this.route);\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public readonly sourceIsCase$ = new BehaviorSubject<boolean>(true);\n public readonly sourceIsIndependent$ = new BehaviorSubject<boolean>(false);\n\n /**\n * Returns the name of the source/target context in mappings.\n * When in a building block context, shows the parent building block name.\n * When in a case context, shows the case name.\n * When in an independent process context, shows the process label.\n */\n public readonly sourceContextName$: Observable<string> = combineLatest([\n this.params$,\n this.buildingBlockParams$,\n ]).pipe(\n switchMap(([caseParams, bbParams]) => {\n if (bbParams?.buildingBlockDefinitionKey && bbParams?.buildingBlockDefinitionVersionTag) {\n this.sourceIsCase$.next(false);\n this.sourceIsIndependent$.next(false);\n // We're in a building block context - fetch the parent building block name\n return this.buildingBlockApiService\n .getBuildingBlockDefinition(\n bbParams.buildingBlockDefinitionKey,\n bbParams.buildingBlockDefinitionVersionTag\n )\n .pipe(map(def => def?.name ?? bbParams.buildingBlockDefinitionKey));\n } else if (caseParams?.caseDefinitionKey && caseParams?.caseDefinitionVersionTag) {\n this.sourceIsCase$.next(true);\n this.sourceIsIndependent$.next(false);\n // We're in a case context - fetch the case name\n return this.buildingBlockApiService\n .getCaseDefinition(caseParams.caseDefinitionKey, caseParams.caseDefinitionVersionTag)\n .pipe(map(def => def?.name ?? caseParams.caseDefinitionKey));\n }\n // We're in an independent process context\n this.sourceIsCase$.next(false);\n this.sourceIsIndependent$.next(true);\n return of(this.translateService.instant('processLinkConfiguration.buildingBlock.process'));\n })\n );\n\n /**\n * Returns the name of the building block being configured.\n */\n public readonly targetBuildingBlockName$: Observable<string> = combineLatest([\n this.buildingBlockStateService.definitionKey$,\n this.buildingBlockStateService.definitionVersionTag$,\n ]).pipe(\n switchMap(([key, versionTag]) => {\n if (key && versionTag) {\n return this.buildingBlockApiService\n .getBuildingBlockDefinition(key, versionTag)\n .pipe(map(def => def?.name ?? key));\n }\n return of(\n this.translateService.instant('processLinkConfiguration.buildingBlock.buildingBlock')\n );\n })\n );\n\n private readonly _subscriptions = new Subscription();\n private _syncingFromState = false;\n private _suppressValidation = false;\n private _inputRefreshHandle: number | null = null;\n private _destroyed = false;\n\n public get inputs(): FormArray<InputRowFormGroup> {\n return this.inputsForm.controls.inputs;\n }\n\n public get outputs(): FormArray<OutputRowFormGroup> {\n return this.outputsForm.controls.outputs;\n }\n\n public readonly allInputsMapped$: Observable<boolean> = combineLatest([\n this.buildingBlockFields$,\n this.inputsForm.valueChanges.pipe(startWith(this.inputsForm.value)),\n ]).pipe(\n map(([fields, inputsFormValue]) => {\n const allTargets =\n inputsFormValue.inputs?.map(input => input.target).filter((t): t is string => !!t) ?? [];\n\n if (!fields || fields.length === 0) {\n return false;\n }\n\n return fields.every(field => allTargets.includes(field.name));\n })\n );\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly processLinkService: ProcessLinkService,\n private readonly processLinkStateService: ProcessLinkStateService,\n private readonly translateService: TranslateService,\n private readonly route: ActivatedRoute,\n private readonly changeDetectorRef: ChangeDetectorRef,\n private readonly buildingBlockApiService: ProcessLinkBuildingBlockApiService,\n private readonly stateService: ProcessLinkStateService\n ) {}\n\n ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([\n this.buildingBlockFields$,\n this.buildingBlockStateService.inputMappings$,\n ]).subscribe(([fields, mappings]) => {\n this.syncInputsIfNeeded(fields, mappings);\n })\n );\n\n this.buildingBlockStateService.outputMappings$.pipe(take(1)).subscribe(mappings => {\n this.syncOutputsFromState(mappings);\n });\n\n this._subscriptions.add(\n combineLatest([this.inputsForm.statusChanges, this.outputsForm.statusChanges]).subscribe(\n () => {\n this.triggerValidation();\n }\n )\n );\n\n this.triggerValidation();\n\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigureBuildingBlockPluginsStep();\n })\n );\n\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.persistProcessLink();\n })\n );\n\n this._subscriptions.add(\n this.outputsForm.valueChanges.subscribe(() => {\n this.persistOutputFormState();\n })\n );\n\n this._subscriptions.add(\n this.inputsForm.valueChanges.subscribe(() => {\n this.persistInputFormState();\n })\n );\n }\n\n public ngAfterViewInit(): void {\n this.queueInputSourceRefresh();\n }\n\n public ngOnDestroy(): void {\n this._destroyed = true;\n if (this._inputRefreshHandle !== null) {\n clearTimeout(this._inputRefreshHandle);\n this._inputRefreshHandle = null;\n }\n this._subscriptions.unsubscribe();\n }\n\n private createInputGroup(mapping?: BuildingBlockInputMapping): InputRowFormGroup {\n return new FormGroup<InputRowFormGroup['controls']>({\n source: new FormControl(mapping?.source ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n target: new FormControl(mapping?.target ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n });\n }\n\n private createOutputGroup(\n mapping?: BuildingBlockOutputMapping,\n sourceOverride?: string\n ): OutputRowFormGroup {\n return new FormGroup<OutputRowFormGroup['controls']>({\n source: new FormControl(sourceOverride ?? mapping?.source ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n target: new FormControl(mapping?.target ?? '', {\n nonNullable: true,\n validators: [Validators.required],\n }),\n syncTiming: new FormControl<BuildingBlockSyncTiming>(\n (mapping?.syncTiming as BuildingBlockSyncTiming) ?? ('END' as BuildingBlockSyncTiming),\n {nonNullable: true, validators: [Validators.required]}\n ),\n });\n }\n\n public addInput(): void {\n this.inputs.push(this.createInputGroup());\n this.persistInputFormState();\n this.changeDetectorRef.detectChanges();\n }\n\n public deleteInput(index: number): void {\n this.inputs.removeAt(index);\n this.persistInputFormState();\n this.changeDetectorRef.detectChanges();\n }\n\n public addOutput(source?: string): void {\n this.outputs.push(this.createOutputGroup(undefined, source));\n this.persistOutputFormState();\n this.changeDetectorRef.detectChanges();\n }\n\n public deleteOutput(index: number): void {\n this.outputs.removeAt(index);\n this.persistOutputFormState();\n }\n\n private syncInputsFromState(\n fields: Array<{name: string; required: boolean}>,\n mappings: BuildingBlockInputMapping[]\n ): void {\n this._syncingFromState = true;\n const requiredTargets = fields.filter(f => f.required).map(f => f.name);\n const allMappings: BuildingBlockInputMapping[] = [\n ...requiredTargets.map(\n target => mappings.find(m => m.target === target) || {target: target, source: ''}\n ),\n ...mappings.filter(mapping => !requiredTargets.includes(mapping.target)),\n ];\n\n this.inputs.clear();\n allMappings.forEach(mapping => {\n this.inputs.push(this.createInputGroup(mapping));\n });\n this._syncingFromState = false;\n this.triggerValidation();\n this.queueInputSourceRefresh();\n }\n\n private syncInputsIfNeeded(\n fields: Array<{name: string; required: boolean}>,\n mappings: BuildingBlockInputMapping[]\n ): void {\n if (this._syncingFromState) {\n return;\n }\n\n const requiredTargets = fields.filter(f => f.required).map(f => f.name);\n const currentTargets =\n this.inputs.controls\n .map(group => group.controls.target.value)\n .filter((target): target is string => !!target) ?? [];\n const missingRequired = requiredTargets.some(target => !currentTargets.includes(target));\n const shouldSync =\n (this.inputs.length === 0 && (mappings.length > 0 || fields.length > 0)) || missingRequired;\n\n if (shouldSync) {\n this.syncInputsFromState(fields, mappings);\n return;\n }\n\n this.applyMappingSources(mappings);\n }\n\n private applyMappingSources(mappings: BuildingBlockInputMapping[]): void {\n const mappingByTarget = new Map<string, BuildingBlockInputMapping>(\n mappings.filter(mapping => !!mapping.target).map(mapping => [mapping.target, mapping])\n );\n let updated = false;\n\n this._syncingFromState = true;\n this.inputs.controls.forEach(group => {\n const target = group.controls.target.value;\n if (!target) return;\n const mapping = mappingByTarget.get(target);\n if (!mapping?.source) return;\n if (!group.controls.source.value) {\n group.controls.source.setValue(mapping.source);\n updated = true;\n }\n });\n this._syncingFromState = false;\n\n if (updated) {\n this.triggerValidation();\n this.queueInputSourceRefresh();\n }\n }\n\n private queueInputSourceRefresh(): void {\n if (this._inputRefreshHandle !== null) {\n clearTimeout(this._inputRefreshHandle);\n }\n this._inputRefreshHandle = window.setTimeout(() => {\n if (this._destroyed) return;\n this.inputs.controls.forEach(group => {\n const value = group.controls.source.value ?? '';\n group.controls.source.setValue(value, {emitEvent: false});\n });\n this.changeDetectorRef.detectChanges();\n this._inputRefreshHandle = null;\n }, 0);\n }\n\n public isSyncTimingSelected(group: OutputRowFormGroup, value: BuildingBlockSyncTiming): boolean {\n return group.controls.syncTiming.value === value;\n }\n\n private syncOutputsFromState(mappings: BuildingBlockOutputMapping[]): void {\n this._syncingFromState = true;\n this.outputs.clear();\n (mappings || []).forEach(mapping => {\n this.outputs.push(this.createOutputGroup(mapping));\n });\n this._syncingFromState = false;\n this.triggerValidation();\n }\n\n private persistInputFormState(): void {\n if (this._syncingFromState) {\n return;\n }\n const mapped: Array<BuildingBlockInputMapping> = this.inputs.controls.map(group => {\n return {source: group.value.source, target: group.value.target} as BuildingBlockInputMapping;\n });\n this.buildingBlockStateService.setInputMappings(mapped);\n this.triggerValidation();\n }\n\n private persistOutputFormState(): void {\n if (this._syncingFromState) {\n return;\n }\n const mapped: Array<BuildingBlockOutputMapping> = this.outputs.controls.map(group => {\n return {\n source: group.value.source,\n target: group.value.target,\n syncTiming: (group.value.syncTiming ?? 'END') as BuildingBlockSyncTiming,\n } as BuildingBlockOutputMapping;\n });\n this.buildingBlockStateService.setOutputMappings(mapped);\n this.triggerValidation();\n }\n\n private isValid(): boolean {\n const fields = this.buildingBlockStateService.getBuildingBlockFieldsSnapshot();\n this.clearCustomErrors();\n const inputsValid = this.validateInputs(fields);\n const outputsValid = this.validateOutputs();\n const overall = this.inputsForm.valid && this.outputsForm.valid && inputsValid && outputsValid;\n this.buttonService[overall ? 'enableSaveButton' : 'disableSaveButton']();\n return overall;\n }\n\n private validateInputs(fields: Array<{name: string; required: boolean}>): boolean {\n let valid = true;\n const requiredTargets = new Set(fields.filter(f => f.required).map(f => f.name));\n const targetCounts: Record<string, number> = {};\n\n this.inputs.controls.forEach(group => {\n const target = group.controls.target.value || '';\n const source = group.controls.source.value || '';\n if (target) {\n targetCounts[target] = (targetCounts[target] || 0) + 1;\n }\n if (!source) {\n group.controls.source.setErrors({required: true});\n valid = false;\n }\n if (!target) {\n group.controls.target.setErrors({required: true});\n valid = false;\n }\n });\n\n Object.entries(targetCounts).forEach(([target, count]) => {\n if (count > 1) {\n this.inputs.controls\n .filter(g => g.controls.target.value === target)\n .forEach(g => g.controls.target.setErrors({duplicateTarget: true}));\n valid = false;\n }\n });\n\n requiredTargets.forEach(reqTarget => {\n const match = this.inputs.controls.find(g => g.controls.target.value === reqTarget);\n if (!match || !match.controls.source.value) {\n valid = false;\n }\n });\n\n return valid;\n }\n\n private validateOutputs(): boolean {\n let valid = true;\n const targetCounts: Record<string, number> = {};\n\n this.outputs.controls.forEach(group => {\n const target = group.controls.target.value || '';\n const source = group.controls.source.value || '';\n const syncTiming = group.controls.syncTiming.value;\n if (target) {\n targetCounts[target] = (targetCounts[target] || 0) + 1;\n }\n if (!source) {\n group.controls.source.setErrors({required: true});\n valid = false;\n }\n if (!target) {\n group.controls.target.setErrors({required: true});\n valid = false;\n }\n if (!syncTiming) {\n group.controls.syncTiming.setErrors({required: true});\n valid = false;\n }\n });\n\n Object.entries(targetCounts).forEach(([target, count]) => {\n if (count > 1) {\n this.outputs.controls\n .filter(g => g.controls.target.value === target)\n .forEach(g => g.controls.target.setErrors({duplicateTarget: true}));\n valid = false;\n }\n });\n\n return valid;\n }\n\n private clearCustomErrors(): void {\n this.inputs.controls.forEach(group => {\n group.controls.source.setErrors(null);\n group.controls.target.setErrors(null);\n });\n this.outputs.controls.forEach(group => {\n group.controls.source.setErrors(null);\n group.controls.target.setErrors(null);\n group.controls.syncTiming.setErrors(null);\n });\n }\n\n private triggerValidation(): void {\n if (this._suppressValidation) return;\n this._suppressValidation = true;\n Promise.resolve().then(() => {\n this.isValid();\n this._suppressValidation = false;\n });\n }\n\n private persistProcessLink(): void {\n if (!this.isValid()) {\n this.buttonService.disableSaveButton();\n return;\n }\n this.buttonService.disableSaveButton();\n this.processLinkStateService.startSaving();\n this.processLinkStateService.selectedProcessLink$\n .pipe(take(1))\n .subscribe(selectedProcessLink => {\n if (selectedProcessLink && selectedProcessLink.processLinkType === 'building-block') {\n this.updateProcessLink(selectedProcessLink);\n } else {\n this.createProcessLink();\n }\n });\n }\n\n private createProcessLink(): void {\n this.processLinkStateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.processLinkStateService.stopSaving();\n return;\n }\n const activityId = modalParams.element?.id;\n\n if (!activityId) {\n this.processLinkStateService.stopSaving();\n return;\n }\n\n const request: BuildingBlockProcessLinkCreateDto = {\n processDefinitionId: modalParams.processDefinitionId ?? '-',\n activityId,\n activityType: modalParams.element?.activityListenerType ?? '',\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings:\n this.buildingBlockStateService.getPluginConfigurationMappingsSnapshot() as Record<\n string,\n string\n >,\n inputMappings: this.buildingBlockStateService.getInputMappingsSnapshot(),\n outputMappings: this.buildingBlockStateService.getOutputMappingsSnapshot(),\n };\n\n this.processLinkStateService.sendProcessLinkCreateEvent(request);\n });\n }\n\n private updateProcessLink(processLink: ProcessLink): void {\n this.processLinkStateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.processLinkStateService.stopSaving();\n return;\n }\n\n const activityId = modalParams.element?.id;\n\n const request: BuildingBlockProcessLinkUpdateDto = {\n id: processLink.id,\n activityId: activityId,\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings:\n this.buildingBlockStateService.getPluginConfigurationMappingsSnapshot() as Record<\n string,\n string\n >,\n inputMappings: this.buildingBlockStateService.getInputMappingsSnapshot(),\n outputMappings: this.buildingBlockStateService.getOutputMappingsSnapshot(),\n };\n\n this.processLinkStateService.sendProcessLinkUpdateEvent(request);\n });\n }\n\n public isRequiredTarget(\n fields: Array<{name: string; required: boolean}> | null,\n target: string\n ): boolean {\n if (!fields) return false;\n return fields.some(field => field.required && field.name === target);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@let obs =\n {\n fields: (buildingBlockFields$ | async),\n fieldItems: (buildingBlockFieldItems$ | async),\n params: (params$ | async),\n buildingBlockParams: (buildingBlockParams$ | async),\n sourceContextName: (sourceContextName$ | async),\n targetBuildingBlockName: (targetBuildingBlockName$ | async),\n sourceIsCase: (sourceIsCase$ | async),\n sourceIsIndependent: (sourceIsIndependent$ | async),\n caseLabelTranslation: ('Case' | translate),\n processLabelTranslation: ('processLinkConfiguration.buildingBlock.process' | translate),\n buildingBlockLabelTranslation:\n ('processLinkConfiguration.buildingBlock.selectLabel' | translate),\n };\n\n<div class=\"mapping-step\">\n <section class=\"mapping-section\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.inputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"inputsForm\">\n <div class=\"mapping-header input\">\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n </div>\n\n <div formArrayName=\"inputs\">\n @for (group of inputs.controls; let inputIndex = $index; track inputIndex) {\n <div class=\"mapping-row input\" [formGroup]=\"group\">\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"source\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [formControl]=\"group.get('source')\"\n ></valtimo-value-path-selector>\n }\n\n <div class=\"arrow\">→</div>\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n @if (isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <div class=\"required-target\">\n {{ 'doc:' + group.get('target')?.value }}\n </div>\n } @else {\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"target\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [items]=\"getBuildingBlockFieldItemsForRow$(group) | async\"\n [dropUp]=\"false\"\n >\n </v-select>\n }\n </div>\n\n <div class=\"mapping-cell-actions\">\n @if (!isRequiredTarget(obs.fields, group.get('target')?.value)) {\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteInput(inputIndex)\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n } @else {\n <div class=\"required-indicator\">*</div>\n\n <div>\n {{ 'interface.required' | translate }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addInput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addInput' | translate\"\n [disabled]=\"allInputsMapped$ | async\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addInput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n\n <section class=\"mapping-section\">\n <h4 class=\"section-header\">\n {{ 'processLinkConfiguration.buildingBlock.outputTitle' | translate }}\n </h4>\n\n <div class=\"mapping-table\" [formGroup]=\"outputsForm\">\n <div class=\"mapping-header output\">\n <v-input-label\n [title]=\"obs.buildingBlockLabelTranslation + ': ' + obs.targetBuildingBlockName\"\n />\n\n <v-input-label\n [title]=\"\n (obs.sourceIsIndependent\n ? obs.processLabelTranslation\n : obs.sourceIsCase\n ? obs.caseLabelTranslation\n : obs.buildingBlockLabelTranslation) +\n (obs.sourceIsIndependent ? '' : ': ' + obs.sourceContextName)\n \"\n />\n\n <div class=\"sync-options\" [style.display]=\"'none'\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.sync.title' | translate\"\n />\n </div>\n </div>\n\n <div formArrayName=\"outputs\">\n @for (group of outputs.controls; let outputIndex = $index; track outputIndex) {\n <div class=\"mapping-row output\" [formGroup]=\"group\">\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\">\n <v-select\n [cdsLayer]=\"2\"\n [appendInline]=\"false\"\n formControlName=\"source\"\n [items]=\"obs.fieldItems || []\"\n [placeholder]=\"\n 'processLinkConfiguration.buildingBlock.selectedBuildingBlockFieldPlaceholder'\n | translate\n \"\n [dropUp]=\"true\"\n >\n </v-select>\n </div>\n\n <div class=\"arrow\">→</div>\n </div>\n\n <div class=\"mapping-part\">\n @if (obs.sourceIsIndependent) {\n <input [cdsLayer]=\"2\" cdsText formControlName=\"target\" [placeholder]=\"'pv:'\" />\n } @else {\n <valtimo-value-path-selector\n [cdsLayer]=\"2\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [buildingBlockDefinitionKey]=\"obs.buildingBlockParams?.buildingBlockDefinitionKey\"\n [buildingBlockDefinitionVersionTag]=\"\n obs.buildingBlockParams?.buildingBlockDefinitionVersionTag\n \"\n [formControl]=\"group.get('target')\"\n [appendInline]=\"false\"\n [filterItems]=\"getUsedCaseTargetsForRow$(group) | async\"\n [dropUp]=\"true\"\n ></valtimo-value-path-selector>\n }\n </div>\n\n <div class=\"mapping-part\">\n <div class=\"mapping-cell\" [style.display]=\"'none'\">\n <cds-radio-group\n class=\"sync-radio-group\"\n formControlName=\"syncTiming\"\n [attr.name]=\"'syncTiming-' + outputIndex\"\n >\n @for (item of syncTimingItems; track item.id) {\n <cds-radio [value]=\"item.id\" [checked]=\"isSyncTimingSelected(group, item.id)\">\n {{ item.labelKey | translate }}\n </cds-radio>\n }\n </cds-radio-group>\n </div>\n\n <div class=\"mapping-cell-actions\">\n <button\n cdsButton=\"danger--ghost\"\n iconOnly\n size=\"sm\"\n (click)=\"deleteOutput(outputIndex)\"\n >\n <svg cdsIcon=\"trash-can\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <button\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"addOutput()\"\n [title]=\"'processLinkConfiguration.buildingBlock.addOutput' | translate\"\n >\n {{ 'processLinkConfiguration.buildingBlock.addOutput' | translate }}\n\n <svg cdsIcon=\"add\" class=\"cds--btn__icon\" size=\"16\"></svg>\n </button>\n </section>\n</div>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {ProcessLinkStateService} from '../../services';\nimport {UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-choose-process-link-type',\n templateUrl: './choose-process-link-type.component.html',\n styleUrls: ['./choose-process-link-type.component.scss'],\n})\nexport class ChooseProcessLinkTypeComponent {\n public readonly availableProcessLinkTypes$ =\n this.processLinkStateService.availableProcessLinkTypes$;\n\n constructor(private readonly processLinkStateService: ProcessLinkStateService) {}\n\n public getTooltipKey(processLinkTypeId: string): string {\n if (\n this.processLinkStateService.isBuildingBlockContext() &&\n UNSUPPORTED_PROCESS_LINK_TYPES_IN_BUILDING_BLOCK.includes(processLinkTypeId)\n ) {\n return 'processLinkTypeDisabledTooltip.buildingBlockUnsupported';\n }\n return 'processLinkTypeDisabledTooltip.' + processLinkTypeId;\n }\n\n public selectProcessLinkType(processLinkTypeId: string): void {\n this.processLinkStateService.selectProcessLinkType(processLinkTypeId);\n }\n}\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\n<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async,\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"getTooltipKey(processLinkTypeId) | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'ui-component'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListItem} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {FormDefinitionListItem, FormDisplayType, FormSize} from '../../models';\nimport {ProcessLinkButtonService, ProcessLinkStateService} from '../../services';\nimport {MultiInputValues} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-display-configuration',\n templateUrl: './form-display-configuration.component.html',\n})\nexport class FormDisplayConfigurationComponent implements OnInit, OnDestroy {\n @Input() public selectedFormDefinition: FormDefinitionListItem;\n\n @Output() public formDisplayValue = new EventEmitter<string>();\n @Output() public formSizeValue = new EventEmitter<string>();\n @Output() public subtitlesValue = new EventEmitter<string[]>();\n\n public readonly formDisplayValue$ = new BehaviorSubject<FormDisplayType | null>(null);\n public readonly formSizeValue$ = new BehaviorSubject<FormSize | null>(null);\n private readonly _subtitles$ = new BehaviorSubject<string[]>([]);\n public subtitles$: Observable<MultiInputValues> = this._subtitles$.pipe(\n map(subtitles => subtitles.map(subtitle => ({value: subtitle})))\n );\n public readonly disableFormSizeInput$ = new BehaviorSubject<boolean>(true);\n public readonly saving$ = this.stateService.saving$;\n public readonly isUserTask$ = new BehaviorSubject<boolean>(false);\n\n private readonly _DISPLAY_TYPE_OPTIONS: FormDisplayType[] = ['modal', 'panel'];\n private readonly _FORM_SIZE_OPTIONS: FormSize[] = ['extraSmall', 'small', 'medium', 'large'];\n private readonly _subscriptions = new Subscription();\n\n public readonly formDisplayTypeListItems$: Observable<ListItem[]> = combineLatest([\n this.formDisplayValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([formDisplayValue]) =>\n this._DISPLAY_TYPE_OPTIONS.map((key: string) => ({\n content: this.translateService.instant(`processLinkSteps.displayType.options.${key}`),\n key: key,\n selected: this.formDisplayValue$.getValue() === key,\n }))\n )\n );\n\n public readonly formSizeListItems$: Observable<ListItem[]> = combineLatest([\n this.formSizeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([formSizeValue]) =>\n this._FORM_SIZE_OPTIONS.map((key: string) => ({\n content: this.translateService.instant(`processLinkSteps.formSize.options.${key}`),\n key: key,\n selected: this.formSizeValue$.getValue() === key,\n }))\n )\n );\n\n constructor(\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stateService: ProcessLinkStateService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n combineLatest([\n this.stateService.modalParams$,\n this.stateService.selectedProcessLink$,\n ]).subscribe(([modalParams, selectedProcessLink]) => {\n this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');\n\n if (selectedProcessLink) {\n if (selectedProcessLink.formDisplayType) this.disableFormSizeInput$.next(false);\n if (selectedProcessLink.activityType.includes('bpmn:UserTask'))\n this.isUserTask$.next(true);\n this.formDisplayValue$.next(selectedProcessLink.formDisplayType ?? null);\n this.formSizeValue$.next(selectedProcessLink.formSize ?? null);\n this._subtitles$.next(selectedProcessLink.subtitles ?? []);\n }\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectFormDisplayType(event: ListItem): void {\n this.updateFormDisplayType(event?.key);\n this.enableSaveButtonWhenValid();\n }\n\n public selectFormSize(event: ListItem): void {\n this.updateFormSize(event?.key);\n this.enableSaveButtonWhenValid();\n }\n\n public onSubtitlesChange(subtitles: string[]): void {\n this.subtitlesValue.emit(subtitles);\n }\n\n private updateFormDisplayType(formDisplayType): void {\n formDisplayType ? this.disableFormSizeInput$.next(false) : this.resetFormSize();\n this.formDisplayValue$.next(formDisplayType);\n this.formDisplayValue.emit(formDisplayType);\n }\n\n private updateFormSize(formSize): void {\n this.formSizeValue$.next(formSize);\n this.formSizeValue.emit(formSize);\n }\n\n private resetFormSize(): void {\n this.disableFormSizeInput$.next(true);\n this.updateFormSize(null);\n }\n\n private enableSaveButtonWhenValid(): void {\n if (\n this.selectedFormDefinition &&\n this.formDisplayValue$.getValue() &&\n this.formSizeValue$.getValue()\n )\n this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {\n BuildingBlockManagementParams,\n CaseManagementParams,\n getBuildingBlockManagementRouteParams,\n getCaseManagementRouteParams,\n} from '@valtimo/shared';\nimport {FormDefinitionOption, FormService} from '@valtimo/form';\nimport {BehaviorSubject, combineLatest, map, mergeMap, Observable, Subscription, tap} from 'rxjs';\nimport {filter, take, withLatestFrom} from 'rxjs/operators';\nimport {\n FormDefinitionListItem,\n FormDisplayType,\n FormProcessLinkUpdateRequestDto,\n FormSize,\n} from '../../models';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-form',\n templateUrl: './select-form.component.html',\n styleUrls: ['./select-form.component.scss'],\n})\nexport class SelectFormComponent implements OnInit, OnDestroy {\n public formDisplayValue!: FormDisplayType;\n public formSizeValue!: FormSize;\n public subtitlesValue: string[] = [];\n public selectedFormDefinition!: FormDefinitionListItem;\n\n public readonly saving$ = this.stateService.saving$;\n public readonly caseDefinitionId$: Observable<CaseManagementParams | undefined> =\n getCaseManagementRouteParams(this.route);\n public readonly buildingBlockDefinitionId$: Observable<\n BuildingBlockManagementParams | undefined\n > = getBuildingBlockManagementRouteParams(this.route);\n\n private readonly formDefinitions$: Observable<Array<FormDefinitionOption>> = combineLatest([\n this.caseDefinitionId$,\n this.buildingBlockDefinitionId$,\n ]).pipe(\n mergeMap(([caseDefinitionId, buildingBlockDefinitionId]) => {\n if (!!buildingBlockDefinitionId) {\n return this.formService.getAllFormDefinitionsForBuildingBlock(\n buildingBlockDefinitionId.buildingBlockDefinitionKey,\n buildingBlockDefinitionId.buildingBlockDefinitionVersionTag\n );\n }\n if (!!caseDefinitionId) {\n return this.formService.getAllFormDefinitionsForCaseDefinition(\n caseDefinitionId.caseDefinitionKey,\n caseDefinitionId.caseDefinitionVersionTag\n );\n }\n return this.formService.getAllUnlinkedFormDefinitions();\n })\n );\n\n public readonly formDefinitionListItems$: Observable<Array<FormDefinitionListItem>> =\n combineLatest([this.stateService.selectedProcessLink$, this.formDefinitions$]).pipe(\n map(([selectedProcessLink, formDefinitions]) =>\n formDefinitions.map(definition => ({\n content: definition.name,\n id: definition.id,\n selected: selectedProcessLink\n ? selectedProcessLink.formDefinitionId === definition.id\n : false,\n }))\n ),\n tap(formDefinitionListItems => {\n const selectedItem = formDefinitionListItems.find(item => item.selected);\n\n if (selectedItem) {\n this.selectFormDefinition(selectedItem);\n }\n })\n );\n\n private _subscriptions = new Subscription();\n private isUserTask$ = new BehaviorSubject<boolean>(false);\n\n private readonly _DEFAULT_FORM_DISPLAY_TYPE: FormDisplayType = 'panel';\n private readonly _DEFAULT_FORM_DISPLAY_SIZE: FormSize = 'medium';\n\n constructor(\n private readonly formService: FormService,\n private readonly stateService: ProcessLinkStateService,\n private readonly processLinkService: ProcessLinkService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n this._subscriptions.add(\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.stateService.modalParams$,\n ]).subscribe(([selectedProcessLink, modalParams]) => {\n if (selectedProcessLink) {\n this.formDisplayValue = selectedProcessLink.formDisplayType;\n this.formSizeValue = selectedProcessLink.formSize;\n }\n\n this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectFormDefinition(formDefinition: FormDefinitionListItem): void {\n this.selectedFormDefinition = formDefinition?.id ? formDefinition : null;\n\n if (this.selectedFormDefinition) this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n\n public selectedFormDisplayValue(formDisplay: FormDisplayType): void {\n this.formDisplayValue = formDisplay;\n }\n\n public selectedFormSizeValue(formSize: FormSize): void {\n this.formSizeValue = formSize;\n }\n\n public selectedSubtitlesValue(subtitles: string[]): void {\n this.subtitlesValue = subtitles;\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.stateService.startSaving();\n this.saveProcessLink();\n })\n );\n }\n\n private saveProcessLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n if (selectedProcessLink) {\n this.updateProcessLink();\n } else {\n this.saveNewProcessLink();\n }\n });\n }\n\n private updateProcessLink(): void {\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.stateService.viewModelEnabled$,\n this.isUserTask$,\n ])\n .pipe(take(1))\n .subscribe(([selectedProcessLink, viewModelEnabled, isUserTask]) => {\n const updateProcessLinkRequest: FormProcessLinkUpdateRequestDto = {\n id: selectedProcessLink.id,\n formDefinitionId: this.selectedFormDefinition.id,\n activityId: selectedProcessLink.activityId,\n viewModelEnabled,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_TYPE}),\n ...(isUserTask && {subtitles: this.subtitlesValue}),\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);\n });\n }\n\n private saveNewProcessLink(): void {\n combineLatest([\n this.stateService.modalParams$,\n this.stateService.selectedProcessLinkTypeId$,\n this.stateService.viewModelEnabled$,\n this.isUserTask$,\n ])\n .pipe(take(1))\n .subscribe(([modalParams, processLinkTypeId, viewModelEnabled, isUserTask]) => {\n const createRequest = {\n formDefinitionId: this.selectedFormDefinition.id,\n activityType: modalParams.element.activityListenerType,\n processDefinitionId: modalParams.processDefinitionId,\n processLinkType: processLinkTypeId,\n activityId: modalParams.element.id,\n viewModelEnabled,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {\n formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE,\n }),\n ...(isUserTask && {\n subtitles: this.subtitlesValue,\n }),\n };\n\n this.stateService.sendProcessLinkCreateEvent(createRequest);\n });\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {CaseManagementParams, getCaseManagementRouteParams, Page} from '@valtimo/shared';\nimport {FormFlowService, ListFormFlowDefinition} from '@valtimo/form-flow-management';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription, tap} from 'rxjs';\nimport {filter, switchMap, take, withLatestFrom} from 'rxjs/operators';\n\nimport {\n FormDefinitionListItem,\n FormDisplayType,\n FormFlowProcessLinkCreateRequestDto,\n FormFlowProcessLinkUpdateRequestDto,\n FormSize,\n} from '../../models';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n} from '../../services';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-form-flow',\n templateUrl: './select-form-flow.component.html',\n styleUrls: ['./select-form-flow.component.scss'],\n})\nexport class SelectFormFlowComponent implements OnInit, OnDestroy {\n public formDisplayValue!: FormDisplayType;\n public formSizeValue!: FormSize;\n public selectedFormFlowDefinitionId: string;\n public subtitlesValue: string[] = [];\n public readonly saving$ = this.stateService.saving$;\n private readonly formFlowDefinitions$: Observable<ListFormFlowDefinition[]> =\n getCaseManagementRouteParams(this.route).pipe(\n switchMap((params: CaseManagementParams | undefined) =>\n this.formFlowService.getFormFlowDefinitions(\n params?.caseDefinitionKey ?? '',\n params?.caseDefinitionVersionTag ?? ''\n )\n ),\n map((formFlowDefinitions: Page<ListFormFlowDefinition>) => formFlowDefinitions.content)\n );\n\n public readonly formFlowDefinitionListItems$: Observable<Array<FormDefinitionListItem>> =\n combineLatest([this.stateService.selectedProcessLink$, this.formFlowDefinitions$]).pipe(\n map(([selectedProcessLink, formFlowDefinitions]) =>\n formFlowDefinitions.map(definition => ({\n content: definition.key,\n id: definition.key,\n selected: selectedProcessLink\n ? selectedProcessLink.formFlowDefinitionKey === definition.key\n : false,\n }))\n ),\n tap(formFlowDefinitionListItems => {\n const selectedItem = formFlowDefinitionListItems.find(item => item.selected);\n\n if (selectedItem) {\n this.selectFormFlowDefinition(selectedItem);\n }\n })\n );\n\n private _subscriptions = new Subscription();\n private isUserTask$ = new BehaviorSubject<boolean>(false);\n\n private readonly _DEFAULT_FORM_DISPLAY_TYPE: FormDisplayType = 'panel';\n private readonly _DEFAULT_FORM_DISPLAY_SIZE: FormSize = 'medium';\n\n constructor(\n private readonly formFlowService: FormFlowService,\n private readonly stateService: ProcessLinkStateService,\n private readonly processLinkService: ProcessLinkService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n this._subscriptions.add(\n combineLatest([\n this.stateService.selectedProcessLink$,\n this.stateService.modalParams$,\n ]).subscribe(([selectedProcessLink, modalParams]) => {\n if (selectedProcessLink) {\n this.formDisplayValue = selectedProcessLink.formDisplayType;\n this.formSizeValue = selectedProcessLink.formSize;\n }\n\n this.isUserTask$.next(modalParams?.element?.type === 'bpmn:UserTask');\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectedFormDisplayValue(formDisplay: FormDisplayType): void {\n this.formDisplayValue = formDisplay;\n }\n\n public selectedFormSizeValue(formSize: FormSize): void {\n this.formSizeValue = formSize;\n }\n\n public selectFormFlowDefinition(formFlowDefinition: any): void {\n if (!formFlowDefinition) return;\n this.selectedFormFlowDefinitionId = formFlowDefinition.id;\n\n if (this.selectedFormFlowDefinitionId) this.buttonService.enableSaveButton();\n else this.buttonService.disableSaveButton();\n }\n\n public selectedSubtitlesValue(subtitles: string[]): void {\n this.subtitlesValue = subtitles;\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.stateService.startSaving();\n this.saveFormFlowLink();\n })\n );\n }\n\n private saveFormFlowLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n if (selectedProcessLink) this.updateProcessLink();\n else this.saveNewProcessLink();\n });\n }\n\n private updateProcessLink(): void {\n combineLatest([this.stateService.selectedProcessLink$, this.isUserTask$])\n .pipe(take(1))\n .subscribe(([selectedProcessLink, isUserTask]) => {\n const updateProcessLinkRequest: FormFlowProcessLinkUpdateRequestDto = {\n id: selectedProcessLink.id,\n formFlowDefinitionId: this.selectedFormFlowDefinitionId,\n activityId: selectedProcessLink.activityId,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE}),\n ...(isUserTask && {subtitles: this.subtitlesValue}),\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateProcessLinkRequest);\n });\n }\n\n private saveNewProcessLink(): void {\n combineLatest([\n this.stateService.modalParams$,\n this.stateService.selectedProcessLinkTypeId$,\n this.isUserTask$,\n ])\n .pipe(take(1))\n .subscribe(([modalParams, processLinkTypeId, isUserTask]) => {\n const createRequest = {\n formFlowDefinitionKey: this.selectedFormFlowDefinitionId,\n activityType: modalParams.element.activityListenerType,\n processDefinitionId: modalParams.processDefinitionId,\n processLinkType: processLinkTypeId,\n activityId: modalParams.element.id,\n ...(isUserTask && {\n formDisplayType: this.formDisplayValue || this._DEFAULT_FORM_DISPLAY_TYPE,\n }),\n ...(isUserTask && {formSize: this.formSizeValue || this._DEFAULT_FORM_DISPLAY_SIZE}),\n ...(isUserTask && {subtitles: this.subtitlesValue}),\n } as FormFlowProcessLinkCreateRequestDto;\n\n this.stateService.sendProcessLinkCreateEvent(createRequest);\n });\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n withLatestFrom,\n} from 'rxjs';\nimport {FormCustomComponentConfig, UIComponentProcessLinkUpdateRequestDto} from '../../models';\nimport {ListItem} from 'carbon-components-angular';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n} from '../../services';\nimport {FORM_CUSTOM_COMPONENT_TOKEN} from '../../constants';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-ui-component',\n templateUrl: './select-ui-component.component.html',\n styleUrls: ['./select-ui-component.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectUIComponentComponent implements OnInit, OnDestroy {\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n public readonly formCustomComponentListItems$: Observable<Array<ListItem>> = combineLatest([\n this.stateService.selectedProcessLink$,\n this._formCustomComponentConfig$,\n ]).pipe(\n map(([selectedProcessLink, formCustomComponentConfigs]) =>\n Object.keys(formCustomComponentConfigs).map(key => ({\n content: key,\n selected: selectedProcessLink ? selectedProcessLink?.componentKey === key : false,\n }))\n ),\n tap(formCustomComponentListItems => {\n const selectedItem = formCustomComponentListItems.find(item => item.selected);\n if (selectedItem) {\n this.selectCustomComponent(selectedItem);\n }\n })\n );\n\n private readonly _subscriptions = new Subscription();\n\n private _selectedCustomComponent: ListItem;\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly processLinkService: ProcessLinkService,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig\n ) {\n this._formCustomComponentConfig$.next(this.formCustomComponentConfig);\n }\n\n public ngOnInit(): void {\n this.openBackButtonSubscription();\n this.openSaveButtonSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public selectCustomComponent(selectedCustomComponent: ListItem): void {\n this._selectedCustomComponent = selectedCustomComponent;\n this._selectedCustomComponent?.content\n ? this.buttonService.enableSaveButton()\n : this.buttonService.disableSaveButton();\n }\n\n private openBackButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n }\n\n private openSaveButtonSubscription(): void {\n this._subscriptions.add(\n this.buttonService.saveButtonClick$.subscribe(() => {\n this.stateService.startSaving();\n this.saveProcessLink();\n })\n );\n }\n\n private saveProcessLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n selectedProcessLink ? this.updateProcessLink() : this.saveNewProcessLink();\n });\n }\n\n private updateProcessLink(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n const updateRequest: UIComponentProcessLinkUpdateRequestDto = {\n id: selectedProcessLink.id,\n componentKey: this._selectedCustomComponent.content,\n activityId: selectedProcessLink.activityId,\n };\n\n this.stateService.sendProcessLinkUpdateEvent(updateRequest);\n });\n }\n\n private saveNewProcessLink(): void {\n combineLatest([this.stateService.modalParams$, this.stateService.selectedProcessLinkTypeId$])\n .pipe(\n take(1),\n switchMap(([modalParams, processLinkTypeId]) => {\n const createRequest = {\n componentKey: this._selectedCustomComponent.content,\n activityType: modalParams.element.activityListenerType || '',\n processDefinitionId: modalParams.processDefinitionId,\n processLinkType: processLinkTypeId,\n activityId: modalParams.element.id,\n };\n\n this.stateService.sendProcessLinkCreateEvent(createRequest);\n return [];\n })\n )\n .subscribe({\n next: () => this.stateService.closeModal(),\n error: () => this.stateService.stopSaving(),\n });\n }\n}\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<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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {\n BuildingBlockStateService,\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {BuildingBlockDefinitionDto} from '@valtimo/shared';\nimport {catchError, filter, map, Observable, of, shareReplay, Subscription, tap, withLatestFrom} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-select-building-block',\n templateUrl: './select-building-block.component.html',\n styleUrls: ['./select-building-block.component.scss'],\n})\nexport class SelectBuildingBlockComponent implements OnInit, OnDestroy {\n public readonly buildingBlocks$: Observable<Array<BuildingBlockDefinitionDto>> =\n this.processLinkBuildingBlockApiService\n .getBuildingBlockDefinitions({includeArtwork: true})\n .pipe(\n map(definitions => [...(definitions ?? [])]),\n map(definitions =>\n definitions.sort((a, b) => (a.name || a.key).localeCompare(b.name || b.key))\n ),\n catchError(() => of([])),\n tap(() => {\n this.loading = false;\n }),\n shareReplay(1)\n );\n\n public loading = true;\n public selectedKey: string | null = null;\n\n private readonly subscriptions = new Subscription();\n private buildingBlocks: Array<BuildingBlockDefinitionDto> = [];\n\n constructor(\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService,\n private readonly stateService: ProcessLinkStateService,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService\n ) {}\n\n public ngOnInit(): void {\n this.buttonService.disableNextButton();\n this.subscriptions.add(\n this.buildingBlocks$.subscribe(definitions => {\n this.buildingBlocks = definitions ?? [];\n\n if (this.selectedKey) {\n this.stepService.updateBuildingBlockSelectionStepLabel(\n this.getDefinitionLabel(this.findDefinitionByKey(this.selectedKey))\n );\n }\n })\n );\n\n this.subscriptions.add(\n this.buildingBlockStateService.definitionKey$.subscribe(key => {\n this.selectedKey = key;\n if (key) {\n this.stepService.updateBuildingBlockSelectionStepLabel(\n this.getDefinitionLabel(this.findDefinitionByKey(key))\n );\n this.buttonService.enableNextButton();\n } else {\n this.buttonService.disableNextButton();\n }\n })\n );\n\n this.subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stateService.setInitial();\n })\n );\n\n this.subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigureBuildingBlockPluginsStep(\n this.getDefinitionLabel(this.findDefinitionByKey(this.selectedKey))\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n public onSelectionChange(event: {value: BuildingBlockDefinitionDto}): void {\n const definition = event?.value;\n this.selectedKey = definition?.key ?? null;\n this.buildingBlockStateService.setDefinitionKey(definition?.key ?? null);\n this.stepService.updateBuildingBlockSelectionStepLabel(this.getDefinitionLabel(definition));\n if (definition?.key) {\n this.buttonService.enableNextButton();\n } else {\n this.buttonService.disableNextButton();\n }\n }\n\n public trackByKey(_: number, definition: BuildingBlockDefinitionDto): string {\n return definition.key;\n }\n\n private findDefinitionByKey(key: string | null): BuildingBlockDefinitionDto | undefined {\n if (!key) return undefined;\n return this.buildingBlocks.find(definition => definition.key === key);\n }\n\n private getDefinitionLabel(definition?: BuildingBlockDefinitionDto): string {\n if (!definition) return '';\n const name = definition.name || definition.key;\n return name;\n }\n}\n","<!--\n Copyright 2015-2025 Ritense BV\n Licensed under the EUPL, Version 1.2\n-->\n\n<div class=\"select-building-block\" *ngIf=\"!loading; else loadingState\">\n <ng-container *ngIf=\"buildingBlocks$ | async as buildingBlocks\">\n <ng-container *ngIf=\"buildingBlocks.length; else emptyState\">\n <div class=\"list-container\">\n <cds-structured-list (selected)=\"onSelectionChange($event)\" selection=\"true\">\n <cds-list-header>\n <cds-list-column nowrap=\"true\"></cds-list-column>\n <cds-list-column nowrap=\"true\">\n {{ 'processLinkConfiguration.buildingBlock.name' | translate }}\n </cds-list-column>\n <cds-list-column>\n {{ 'processLinkConfiguration.buildingBlock.description' | translate }}\n </cds-list-column>\n </cds-list-header>\n <cds-list-row *ngFor=\"let buildingBlock of buildingBlocks\" [value]=\"buildingBlock\">\n <cds-list-column>\n <div *ngIf=\"buildingBlock.imageBase64\">\n <img\n class=\"building-block-artwork\"\n [src]=\"'data:image/png;base64,' + buildingBlock.imageBase64\"\n [title]=\"buildingBlock.name\"\n />\n </div>\n </cds-list-column>\n <cds-list-column>{{ buildingBlock.name }}</cds-list-column>\n <cds-list-column>{{ buildingBlock.description }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingState>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #emptyState>\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.emptyState' | translate }}\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {\n ProcessLinkBuildingBlockApiService,\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {BuildingBlockStateService} from '../../services/building-block-state.service';\nimport {\n PluginConfiguration,\n PluginManagementService,\n PluginTranslationService,\n} from '@valtimo/plugin';\nimport {\n BuildingBlockProcessLinkCreateDto,\n BuildingBlockProcessLinkUpdateDto,\n PluginConfigurationViewModel,\n ProcessLink,\n ProcessLinkType,\n} from '../../models';\nimport {combineLatest, distinctUntilChanged, Observable, of, shareReplay, Subscription} from 'rxjs';\nimport {catchError, filter, map, switchMap, take, withLatestFrom} from 'rxjs/operators';\nimport {ListItem} from 'carbon-components-angular/dropdown';\nimport {TranslateService} from '@ngx-translate/core';\nimport {NotificationContent} from 'carbon-components-angular';\n\n@Component({\n standalone: false,\n selector: 'valtimo-configure-building-block-plugins',\n templateUrl: './configure-building-block-plugins.component.html',\n styleUrls: ['./configure-building-block-plugins.component.scss'],\n})\nexport class ConfigureBuildingBlockPluginsComponent implements OnInit, OnDestroy {\n public readonly pluginKeys$ = this.buildingBlockStateService.requiredPluginKeys$;\n public readonly isNestedBuildingBlock$ = this.buildingBlockStateService.isNestedBuildingBlock$;\n private readonly _pluginDependenciesWarningTranslationKey$: Observable<string> =\n this.buildingBlockStateService.pluginDependencies$.pipe(\n map(dependencies => {\n if (!dependencies || !dependencies.length) return '';\n\n const zaakInstanceLinkDependency = dependencies.includes('ZAAK_INSTANCE_LINK');\n const zaakTypeLinkDependency = dependencies.includes('ZAAK_TYPE_LINK');\n\n if (zaakInstanceLinkDependency && zaakTypeLinkDependency) {\n return 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.zaakInstanceAndTypeLink';\n } else if (zaakInstanceLinkDependency) {\n return 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.zaakInstanceLink';\n } else if (zaakTypeLinkDependency) {\n return 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.zaakTypeLink';\n }\n return '';\n })\n );\n\n public readonly dependenciesNotificationObject$: Observable<NotificationContent> = combineLatest([\n this._pluginDependenciesWarningTranslationKey$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([warningTranslationKey]) =>\n !warningTranslationKey\n ? null\n : {\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant(\n 'processLinkConfiguration.buildingBlock.pluginDependenciesWarning.title'\n ),\n message: this.translateService.instant(warningTranslationKey),\n showClose: false,\n }\n )\n );\n public readonly loading$ = this.buildingBlockStateService.requirementsLoading$;\n public readonly versions$ = this.buildingBlockStateService.versions$;\n public readonly definitionVersionTag$ = this.buildingBlockStateService.definitionVersionTag$;\n public readonly versionPlaceholder$ = this.translateService.stream(\n 'processLinkConfiguration.buildingBlock.versionPlaceholder'\n );\n public readonly configurationPlaceholder$ = this.translateService.stream(\n 'processLinkConfiguration.buildingBlock.configurationPlaceholder'\n );\n public readonly versionItems$: Observable<Array<ListItem>> = combineLatest([\n this.versions$,\n this.definitionVersionTag$,\n this.versionPlaceholder$,\n ]).pipe(\n map(([versions, selectedVersion, placeholder]) => {\n const normalizedSelectedVersion = selectedVersion || '';\n return [\n {\n id: '',\n content: placeholder,\n selected: normalizedSelectedVersion === '',\n },\n ...(versions || []).map(\n version =>\n ({\n id: version,\n content: version,\n selected: normalizedSelectedVersion === version,\n }) as ListItem\n ),\n ];\n })\n );\n public readonly pluginConfigurationViewModels$: Observable<Array<PluginConfigurationViewModel>> =\n combineLatest([\n this.pluginKeys$,\n this.buildingBlockStateService.pluginMappings$,\n this.configurationPlaceholder$,\n ]).pipe(\n switchMap(([pluginKeys, pluginMappings, placeholder]) => {\n if (!pluginKeys?.length) {\n return of([]);\n }\n\n return combineLatest(\n pluginKeys.map(pluginKey =>\n this.getConfigurationOptions(pluginKey).pipe(\n map(options => ({\n key: pluginKey,\n label: this.pluginLabel(pluginKey),\n dropdownItems: this.buildDropdownItems(\n options,\n pluginMappings?.[pluginKey],\n placeholder\n ),\n hasOptions: options.length > 0,\n }))\n )\n )\n );\n })\n );\n\n private readonly _subscriptions = new Subscription();\n private readonly _configurationOptionsCache = new Map<\n string,\n Observable<Array<PluginConfiguration>>\n >();\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly buildingBlockStateService: BuildingBlockStateService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly stepService: ProcessLinkStepService,\n private readonly pluginManagementService: PluginManagementService,\n private readonly pluginTranslationService: PluginTranslationService,\n private readonly processLinkService: ProcessLinkService,\n private readonly translateService: TranslateService,\n private readonly processLinkBuildingBlockApiService: ProcessLinkBuildingBlockApiService\n ) {}\n\n public ngOnInit(): void {\n // Check if we're configuring from within a building block process (nested building block)\n this._subscriptions.add(\n this.stateService.modalParams$\n .pipe(\n map(params => params?.processDefinitionId),\n distinctUntilChanged()\n )\n .subscribe(processDefinitionId => {\n if (processDefinitionId) {\n this.processLinkBuildingBlockApiService\n .isBuildingBlockProcess(processDefinitionId)\n .subscribe(isNested => {\n this.buildingBlockStateService.setIsNestedBuildingBlock(isNested);\n });\n }\n })\n );\n\n this._subscriptions.add(\n combineLatest([\n this.buildingBlockStateService.requiredPluginKeys$,\n this.buildingBlockStateService.mappingsComplete$,\n this.buildingBlockStateService.requirementsLoading$,\n this.definitionVersionTag$,\n ]).subscribe(([keys, complete, loading, version]) => {\n if (loading || !version) {\n this.buttonService.disableNextButton();\n return;\n }\n\n if (keys.length === 0 || complete) {\n this.buttonService.enableNextButton();\n } else {\n this.buttonService.disableNextButton();\n }\n })\n );\n\n this._subscriptions.add(\n this.buttonService.backButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setBuildingBlockSteps();\n })\n );\n\n this._subscriptions.add(\n this.buttonService.nextButtonClick$\n .pipe(\n withLatestFrom(this.stateService.isEditing$),\n filter(([, isEditing]) => !isEditing)\n )\n .subscribe(() => {\n this.stepService.setConfigureBuildingBlockMappingsStep(\n this.buildingBlockStateService.getDefinitionSnapshot().key ?? undefined\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private getConfigurationOptions(\n pluginDefinitionKey: string\n ): Observable<Array<PluginConfiguration>> {\n if (!this._configurationOptionsCache.has(pluginDefinitionKey)) {\n this._configurationOptionsCache.set(\n pluginDefinitionKey,\n this.pluginManagementService\n .getPluginConfigurationsByPluginDefinitionKey(pluginDefinitionKey)\n .pipe(\n catchError(() => of([])),\n shareReplay(1)\n )\n );\n }\n return this._configurationOptionsCache.get(pluginDefinitionKey) ?? of([]);\n }\n\n public onMappingChange(pluginDefinitionKey: string, configurationId: string): void {\n const normalizedValue = configurationId || null;\n this.buildingBlockStateService.setPluginConfigurationMapping(\n pluginDefinitionKey,\n normalizedValue\n );\n }\n\n public pluginLabel(pluginDefinitionKey: string): string {\n return (\n this.pluginTranslationService.instant('title', pluginDefinitionKey) || pluginDefinitionKey\n );\n }\n\n private buildDropdownItems(\n options: Array<PluginConfiguration>,\n selectedId: string | null | undefined,\n placeholder: string\n ): Array<ListItem> {\n return [\n {\n id: '',\n content: placeholder,\n selected: !selectedId,\n },\n ...options.map(\n option =>\n ({\n id: option.id,\n content: option.title,\n selected: selectedId === option.id || (options.length === 1 && !selectedId),\n }) as ListItem\n ),\n ];\n }\n\n private checkSingleBuildingBlockType(types: Array<ProcessLinkType>): boolean {\n if (!types?.length) return false;\n return types.length === 1 && types[0]?.processLinkType === 'building-block' && types[0].enabled;\n }\n\n public onVersionChange(versionTag: string): void {\n const normalizedValue = versionTag || null;\n this.buildingBlockStateService.setPluginConfigurationMappings(undefined);\n this.buildingBlockStateService.setDefinitionVersionTag(normalizedValue);\n }\n\n private createProcessLink(): void {\n this.stateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.stateService.stopSaving();\n return;\n }\n\n const activityId = modalParams.element?.id;\n\n if (!activityId) {\n this.stateService.stopSaving();\n return;\n }\n\n const request: BuildingBlockProcessLinkCreateDto = {\n processDefinitionId: modalParams.processDefinitionId ?? '-',\n activityId,\n activityType: modalParams.element?.activityListenerType ?? '',\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings: this.getMappingsForPayload(),\n inputMappings: [],\n outputMappings: [],\n };\n\n this.stateService.sendProcessLinkCreateEvent(request);\n });\n }\n\n private updateProcessLink(processLink: ProcessLink): void {\n this.stateService.modalParams$.pipe(take(1)).subscribe(modalParams => {\n const {key, versionTag} = this.buildingBlockStateService.getDefinitionSnapshot();\n if (!modalParams || !key || !versionTag) {\n this.stateService.stopSaving();\n return;\n }\n\n const activityId = modalParams.element?.id;\n\n const request: BuildingBlockProcessLinkUpdateDto = {\n id: processLink.id,\n activityId: activityId,\n processLinkType: 'building-block',\n buildingBlockDefinitionKey: key,\n buildingBlockDefinitionVersionTag: versionTag,\n pluginConfigurationMappings: this.getMappingsForPayload(),\n inputMappings: [],\n outputMappings: [],\n };\n\n this.stateService.sendProcessLinkUpdateEvent(request);\n });\n }\n\n private getMappingsForPayload(): Record<string, string> {\n const mappings = this.buildingBlockStateService.getPluginConfigurationMappingsSnapshot();\n return Object.entries(mappings).reduce(\n (acc, [pluginKey, configurationId]) => {\n if (configurationId) acc[pluginKey] = configurationId;\n return acc;\n },\n {} as Record<string, string>\n );\n }\n}\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\n<div class=\"configure-building-block-plugins\">\n <div\n *ngIf=\"dependenciesNotificationObject$ | async as dependenciesNotificationObject\"\n class=\"configure-building-block-plugins__warning\"\n >\n <cds-notification [notificationObj]=\"dependenciesNotificationObject\"> </cds-notification>\n </div>\n\n @if (versionItems$ | async; as versionItems) {\n @let versionPlaceholder = versionPlaceholder$ | async;\n <div class=\"version-select\">\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [label]=\"'processLinkConfiguration.buildingBlock.versionLabel' | translate\"\n [placeholder]=\"versionPlaceholder || ''\"\n (selected)=\"onVersionChange($event?.id || '')\"\n (clear)=\"onVersionChange('')\"\n >\n <cds-dropdown-list [items]=\"versionItems\"></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n\n @if (loading$ | async) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n } @else {\n <div class=\"plugin-list\">\n @if (definitionVersionTag$ | async) {\n @if (isNestedBuildingBlock$ | async) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.nestedBuildingBlockInfo' | translate }}\n </div>\n } @else {\n @if (pluginConfigurationViewModels$ | async; as pluginConfigurationViewModels) {\n @if (pluginConfigurationViewModels.length === 0) {\n <div class=\"empty-state\">\n {{ 'processLinkConfiguration.buildingBlock.noRequirements' | translate }}\n </div>\n } @else {\n @let configurationPlaceholder = configurationPlaceholder$ | async;\n\n <div class=\"plugin-row\">\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.pluginLabel' | translate\"\n >\n </v-input-label>\n <v-input-label\n [title]=\"'processLinkConfiguration.buildingBlock.configurationLabel' | translate\"\n required=\"true\"\n >\n </v-input-label>\n </div>\n\n @for (plugin of pluginConfigurationViewModels; track plugin.key) {\n <div class=\"plugin-row\">\n <div class=\"plugin-label\">\n {{ plugin.label }}\n </div>\n\n <cds-combo-box\n cdsLayer\n size=\"lg\"\n [appendInline]=\"true\"\n [placeholder]=\"configurationPlaceholder || ''\"\n (selected)=\"onMappingChange(plugin.key, $event?.id || '')\"\n (clear)=\"onMappingChange(plugin.key, '')\"\n >\n <cds-dropdown-list [items]=\"plugin.dropdownItems\"></cds-dropdown-list>\n </cds-combo-box>\n </div>\n }\n }\n }\n }\n }\n </div>\n }\n</div>\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\nimport {Component} from '@angular/core';\nimport {\n PluginStateService,\n ProcessLinkButtonService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {take} from 'rxjs/operators';\nimport {ConfigService} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n selector: 'valtimo-process-link-modal',\n templateUrl: './process-link-modal.component.html',\n styleUrls: ['./process-link-modal.component.scss'],\n})\nexport class ProcessLinkModalComponent {\n public readonly showModal$ = this.stateService.showModal$;\n public readonly processStepName$ = this.stateService.elementName$;\n public readonly steps$ = this.stepService.steps$;\n public readonly currentStepIndex$ = this.stepService.currentStepIndex$;\n public readonly currentStepId$ = this.stepService.currentStepId$;\n public readonly showSaveButton$ = this.buttonService.showSaveButton$;\n public readonly enableSaveButton$ = this.buttonService.enableSaveButton$;\n public readonly showBackButton$ = this.buttonService.showBackButton$;\n public readonly showNextButton$ = this.buttonService.showNextButton$;\n public readonly enableNextButton$ = this.buttonService.enableNextButton$;\n public readonly hideProgressIndicator$ = this.stateService.hideProgressIndicator$;\n public readonly saving$ = this.stateService.saving$;\n public readonly typeOfSelectedProcessLink$ = this.stateService.typeOfSelectedProcessLink$;\n public readonly viewModelEnabled$ = this.stateService.viewModelEnabled$;\n public readonly isEditing$ = this.stateService.isEditing$;\n public readonly selectedPluginConfiguration$ =\n this.pluginStateService.selectedPluginConfiguration$;\n\n public readonly showViewModelToggle =\n this.configService.config.featureToggles.enableFormViewModel;\n\n constructor(\n private readonly stateService: ProcessLinkStateService,\n private readonly stepService: ProcessLinkStepService,\n private readonly buttonService: ProcessLinkButtonService,\n private readonly pluginStateService: PluginStateService,\n private readonly processLinkStateService: ProcessLinkStateService,\n private readonly configService: ConfigService\n ) {}\n\n closeModal(): void {\n this.stateService.closeModal();\n }\n\n backButtonClick(): void {\n this.buttonService.clickBackButton();\n }\n\n saveButtonClick(): void {\n this.buttonService.clickSaveButton();\n }\n\n nextButtonClick(): void {\n this.buttonService.clickNextButton();\n }\n\n unlinkButtonClick(): void {\n this.stateService.selectedProcessLink$.pipe(take(1)).subscribe(selectedProcessLink => {\n this.processLinkStateService.sendProcessLinkDeleteEvent({\n activityId: selectedProcessLink.activityId,\n });\n });\n }\n\n public toggleCheckedChange(value: boolean): void {\n this.processLinkStateService.setViewModelEnabled(value);\n }\n}\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\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 isEditing: isEditing$ | 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\">\n <ng-container *ngTemplateOutlet=\"progressIndicator; context: {obs: obs}\"></ng-container>\n </div>\n </cds-modal-header>\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngTemplateOutlet=\"stepContent; context: {obs: obs}\"></ng-container>\n </section>\n <ng-template *ngTemplateOutlet=\"footer; context: {obs: obs}\"></ng-template>\n </cds-modal>\n</div>\n\n<ng-template #progressIndicator let-obs=\"obs\">\n <cds-progress-indicator\n *ngIf=\"obs.steps && !obs.hideProgressIndicator\"\n [steps]=\"obs.steps\"\n [current]=\"obs.currentStepIndex\"\n spacing=\"equal\"\n ></cds-progress-indicator>\n</ng-template>\n\n<ng-template #stepContent let-obs=\"obs\">\n <div class=\"cds-loading-container\" *ngIf=\"obs.saving\">\n <cds-loading></cds-loading>\n </div>\n <div [ngClass]=\"{hidden: obs.saving}\">\n <ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'chooseProcessLinkType'\">\n <valtimo-choose-process-link-type></valtimo-choose-process-link-type>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectForm'\">\n <valtimo-select-form></valtimo-select-form>\n <br />\n <cds-toggle\n *ngIf=\"showViewModelToggle\"\n [label]=\"'processLinkConfiguration.toggleViewModel.title' | translate\"\n [onText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [offText]=\"'processLinkConfiguration.toggleViewModel.checkboxDescription' | translate\"\n [checked]=\"viewModelEnabled$ | async\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </ng-container>\n <ng-container *ngIf=\"obs.currentStepId === 'selectFormFlow'\">\n <valtimo-select-form-flow></valtimo-select-form-flow>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n obs.currentStepId === 'choosePluginConfiguration' ||\n obs.currentStepId === 'choosePluginDefinition'\n \"\n >\n <valtimo-select-plugin-configuration></valtimo-select-plugin-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'selectBuildingBlock'\">\n <valtimo-select-building-block></valtimo-select-building-block>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'choosePluginAction'\">\n <valtimo-select-plugin-action></valtimo-select-plugin-action>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configurePluginAction'\">\n <valtimo-plugin-action-configuration\n [selectedPluginConfiguration$]=\"selectedPluginConfiguration$\"\n ></valtimo-plugin-action-configuration>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockPlugins'\">\n <valtimo-configure-building-block-plugins></valtimo-configure-building-block-plugins>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'configureBuildingBlockMappings'\">\n <valtimo-configure-building-block-mappings></valtimo-configure-building-block-mappings>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"obs.currentStepId === 'uiComponent'\">\n <valtimo-select-ui-component></valtimo-select-ui-component>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #footer let-obs=\"obs\">\n <cds-modal-footer *ngIf=\"!obs.saving\">\n <div class=\"cancel-button\">\n <button cdsButton=\"ghost\" (click)=\"closeModal()\" [disabled]=\"obs.disabled\">\n {{ 'processLinkConfiguration.cancel' | translate }}\n </button>\n </div>\n <div class=\"footer-spacer\"></div>\n <div class=\"action-buttons\">\n <button\n cdsButton=\"danger--primary\"\n *ngIf=\"obs.isEditing\"\n (click)=\"unlinkButtonClick()\"\n >\n {{ 'processLinkConfiguration.unlink' | translate }}\n </button>\n <button\n *ngIf=\"obs.showBackButton && !obs.saving\"\n cdsButton=\"secondary\"\n (click)=\"backButtonClick()\"\n >\n {{ 'processLinkConfiguration.back' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showNextButton && !obs.saving\"\n [disabled]=\"!obs.enableNextButton\"\n (click)=\"nextButtonClick()\"\n >\n {{ 'processLinkConfiguration.next' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.showSaveButton && !obs.saving\"\n [disabled]=\"!obs.enableSaveButton\"\n (click)=\"saveButtonClick()\"\n >\n {{ 'processLinkConfiguration.complete' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</ng-template>\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\nimport {Component} from '@angular/core';\nimport {ModalParams} from '../../models';\nimport {\n ProcessLinkButtonService,\n ProcessLinkService,\n ProcessLinkStateService,\n ProcessLinkStepService,\n} from '../../services';\nimport {of, switchMap, tap} from 'rxjs';\nimport {ModalService} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-process-link',\n templateUrl: './process-link.component.html',\n styleUrls: ['./process-link.component.scss'],\n providers: [ProcessLinkStateService, ProcessLinkStepService, ProcessLinkButtonService],\n})\nexport class ProcessLinkComponent {\n constructor(\n private readonly processLinkService: ProcessLinkService,\n private readonly stateService: ProcessLinkStateService,\n private readonly modalService: ModalService\n ) {}\n\n openModal(params: ModalParams): void {\n const activityType = params?.element?.activityListenerType;\n\n this.modalService.setModalData(params);\n\n if (activityType) {\n this.processLinkService\n .getProcessLink({\n activityId: params.element.id,\n processDefinitionId: params.processDefinitionId,\n })\n .pipe(\n switchMap(processLinks => {\n if (processLinks.length > 0) {\n return of({processLink: processLinks[0]});\n }\n\n return this.processLinkService.getProcessLinkCandidates(activityType);\n }),\n tap(res => {\n const result = res as any;\n const processLink = result.processLink;\n\n this.stateService.setModalParams(params);\n this.stateService.setElementName(params?.element?.name);\n\n if (processLink) {\n this.stateService.selectProcessLink(processLink);\n } else {\n this.stateService.setAvailableProcessLinkTypes(result);\n }\n\n if (result?.length > 0 || processLink) {\n this.stateService.showModal();\n }\n })\n )\n .subscribe();\n }\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {ProcessLinkComponent} from './components/process-link/process-link.component';\n\nconst routes: Routes = [\n {\n path: 'process-links',\n component: ProcessLinkComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Process links', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class ProcessLinkRoutingModule {}\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\nexport * from './choose-process-link-type.component';\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\nexport * from './select-form.component';\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\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {ChangeEvent, FormFlowCustomComponent} from '../../models';\nimport {FormFlowComponentService} from '../../services';\nimport {FormioSubmission} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-flow-configuration-container',\n templateUrl: './form-flow-configuration-container.component.html',\n})\nexport class FormFlowConfigurationContainerComponent\n implements OnInit, OnDestroy, FormFlowCustomComponent\n{\n @ViewChild('formFlowConfigurationComponent', {static: true, read: ViewContainerRef})\n private readonly _dynamicContainer: ViewContainerRef;\n @Input() public set disabled(disabledValue: boolean) {\n this._disabled$.next(disabledValue);\n }\n @Input() public set componentId(value: string) {\n this._componentId$.next(value);\n }\n @Input() public set formFlowInstanceId(value: string) {\n this._formFlowInstanceId$.next(value);\n }\n @Output() public changeEvent = new EventEmitter<ChangeEvent>();\n @Output() public submitEvent = new EventEmitter<FormioSubmission>();\n\n private _changeSubscription!: Subscription;\n private _submitSubscription!: Subscription;\n\n private readonly _subscriptions = new Subscription();\n private readonly _componentRef$ = new BehaviorSubject<\n ComponentRef<FormFlowCustomComponent> | undefined\n >(undefined);\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n private readonly _componentId$ = new BehaviorSubject<string>('');\n private readonly _formFlowInstanceId$ = new BehaviorSubject<string>('');\n\n constructor(private readonly formFlowComponentService: FormFlowComponentService) {}\n\n public ngOnInit(): void {\n this.openConfigurationComponentSubscription();\n this.openComponentInstanceSubscription();\n this.openDisabledSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openConfigurationComponentSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.formFlowComponentService.supportedComponents$, this._componentId$])\n .pipe(\n tap(([supportedComponents, componentId]) => {\n const configurationComponent = supportedComponents.find(\n component => component.id === componentId\n );\n\n this._dynamicContainer.clear();\n\n if (configurationComponent) {\n const componentRef = this._dynamicContainer.createComponent(\n configurationComponent.component\n );\n this._componentRef$.next(componentRef);\n }\n })\n )\n .subscribe()\n );\n }\n\n private openComponentInstanceSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._formFlowInstanceId$]).subscribe(\n ([ref, formFlowInstanceId]) => {\n const instance = ref?.instance;\n\n this._submitSubscription?.unsubscribe();\n this._changeSubscription?.unsubscribe();\n\n if (instance) {\n if (formFlowInstanceId) {\n instance.formFlowInstanceId = formFlowInstanceId;\n }\n\n this._changeSubscription = instance.changeEvent.subscribe(change => {\n this.changeEvent.emit(change);\n });\n\n this._submitSubscription = instance.submitEvent.subscribe(submit => {\n this.submitEvent.emit(submit);\n });\n }\n }\n )\n );\n }\n\n private openDisabledSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {\n const instance = ref?.instance;\n\n if (instance) {\n instance.disabled = disabled;\n }\n })\n );\n }\n}\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\n<ng-template #formFlowConfigurationComponent></ng-template>\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\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {FormioForm} from '@formio/angular';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ValtimoFormioOptions,\n ValtimoModalService,\n} from '@valtimo/components';\nimport {FormFlowService} from '../../services';\nimport {FormFlowInstance, FormFlowStepType} from '../../models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Step} from 'carbon-components-angular';\nimport {ConfigService} from '@valtimo/shared';\nimport {map} from 'rxjs/operators';\n\n@Component({\n standalone: false,\n selector: 'valtimo-form-flow',\n templateUrl: './form-flow.component.html',\n styleUrls: ['./form-flow.component.scss'],\n})\nexport class FormFlowComponent implements OnInit, OnDestroy {\n @ViewChild('form') public readonly form: FormioComponent;\n\n @Input() public readonly formIoFormData: BehaviorSubject<any | null> = new BehaviorSubject<any>(\n null\n );\n @Input() public set formFlowInstanceId(value: string | null) {\n this.formFlowInstanceId$.next(value);\n\n if (value) this.getBreadcrumbs();\n }\n\n @Output() public readonly formFlowComplete = new EventEmitter();\n @Output() public readonly formFlowChange = new EventEmitter();\n\n public formDefinition: FormioForm;\n public formioOptions: ValtimoFormioOptions;\n\n public readonly breadcrumbs$ = new BehaviorSubject<Step[]>([]);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly formFlowStepType$ = new BehaviorSubject<FormFlowStepType | null>(null);\n public readonly FormFlowCustomComponentId$ = new BehaviorSubject<string>('');\n public readonly currentStepIndex$ = new BehaviorSubject<number>(0);\n public readonly enableFormFlowBreadcrumbs$ = this.configService.getFeatureToggleObservable(\n 'enableFormFlowBreadcrumbs'\n );\n public readonly formFlowInstanceId$ = new BehaviorSubject<string | null>('');\n\n private formFlowStepInstanceId: string | null = null;\n\n private _breadcrumbsSubscription!: Subscription;\n\n constructor(\n private readonly formFlowService: FormFlowService,\n private readonly modalService: ValtimoModalService,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService\n ) {\n this.formioOptions = new FormioOptionsImpl();\n this.formioOptions.disableAlerts = true;\n }\n\n public ngOnInit() {\n this.getFormFlowStep();\n }\n\n public ngOnDestroy(): void {\n this._breadcrumbsSubscription?.unsubscribe();\n }\n\n public onChange(event: any): void {\n if (!event?.data) return;\n\n this.formIoFormData.next(event.data);\n this.formFlowChange.emit();\n }\n\n public onSubmit(submission: FormioSubmission): void {\n this.disable();\n\n if (submission.data) {\n this.formIoFormData.next(submission.data);\n }\n\n if (\n submission.data.submit &&\n this.formFlowInstanceId$.getValue() &&\n this.formFlowStepInstanceId\n ) {\n this.formFlowService\n .submitStep(\n this.formFlowInstanceId$.getValue(),\n this.formFlowStepInstanceId,\n this.formIoFormData.getValue()\n )\n .subscribe({\n next: (result: FormFlowInstance) => {\n this.handleFormFlowStep(result);\n },\n error: errors => {\n this.form?.showErrors(errors);\n this.enable();\n },\n });\n } else if (submission.data['back']) {\n this.back(submission.data);\n }\n }\n\n public onEvent(submission: any): void {\n if (submission.data['back'] || submission.type == 'back') {\n this.back(submission.data);\n }\n }\n\n public saveData(): void {\n const formIoFormDataValue = this.formIoFormData.getValue();\n\n if (formIoFormDataValue && this.formFlowInstanceId$.getValue()) {\n this.formFlowService.save(this.formFlowInstanceId$.getValue(), formIoFormDataValue).subscribe(\n () => null,\n errors => this.form.showErrors(errors)\n );\n }\n }\n\n public onStepSelected(event: {step: {stepInstanceId: string}; index: number}): void {\n const submissionData = this.formIoFormData.getValue().data;\n\n this.disable();\n\n this.currentStepIndex$.next(event.index);\n\n if (!this.formFlowInstanceId$.getValue() || !this.formFlowStepInstanceId) return;\n\n this.formFlowService\n .navigateToStep(\n this.formFlowInstanceId$.getValue(),\n this.formFlowStepInstanceId,\n event.step.stepInstanceId,\n submissionData\n )\n .subscribe({\n next: (result: FormFlowInstance) => this.handleFormFlowStep(result),\n error: errors => {\n this.form?.showErrors(errors);\n this.enable();\n },\n });\n }\n\n private getBreadcrumbs(): void {\n if (\n !this.formFlowInstanceId$.getValue() ||\n !this.configService.getFeatureToggle('enableFormFlowBreadcrumbs')\n ) {\n return;\n }\n\n this._breadcrumbsSubscription?.unsubscribe();\n\n this._breadcrumbsSubscription = combineLatest([\n this.formFlowService.getBreadcrumbs(this.formFlowInstanceId$.getValue()),\n this.translateService.stream('key'),\n ])\n .pipe(map(([breadcrumbs]) => breadcrumbs))\n .subscribe(breadcrumbs => {\n const classElement = document.getElementsByClassName('cds--progress-step--current');\n\n this.currentStepIndex$.next(breadcrumbs.currentStepIndex);\n\n this.breadcrumbs$.next(\n breadcrumbs.breadcrumbs.map(breadcrumb => ({\n label:\n breadcrumb.title ??\n this.translateService.instant(`formFlow.step.${breadcrumb.key}.title`) ??\n breadcrumb.key,\n disabled: breadcrumb.stepInstanceId === null,\n complete: breadcrumb.completed,\n stepInstanceId: breadcrumb.stepInstanceId,\n }))\n );\n\n if (classElement.length > 0) {\n classElement[0].scrollIntoView({behavior: 'smooth', inline: 'center'});\n }\n });\n }\n\n private getFormFlowStep(): void {\n if (!this.formFlowInstanceId$.getValue()) return;\n\n this.formFlowService\n .getFormFlowStep(this.formFlowInstanceId$.getValue())\n .subscribe((result: FormFlowInstance) => {\n this.handleFormFlowStep(result);\n });\n }\n\n private back(submissionData: any): void {\n if (!this.formFlowInstanceId$.getValue()) return;\n\n this.formFlowService.back(this.formFlowInstanceId$.getValue(), submissionData).subscribe({\n next: (result: FormFlowInstance) => this.handleFormFlowStep(result),\n error: errors => {\n this.form?.showErrors(errors);\n this.enable();\n },\n });\n }\n\n private handleFormFlowStep(formFlowInstance: FormFlowInstance): void {\n if (formFlowInstance.step === null) {\n this.formFlowStepType$.next(null);\n this.FormFlowCustomComponentId$.next('');\n this.formFlowInstanceId$.next(null);\n this.formFlowStepInstanceId = null;\n this.formFlowComplete.emit(null);\n } else {\n this.getBreadcrumbs();\n this.modalService.scrollToTop();\n this.formFlowStepType$.next(formFlowInstance.step?.type ?? null);\n this.FormFlowCustomComponentId$.next(formFlowInstance?.step?.typeProperties?.id || '');\n this.formFlowInstanceId$.next(formFlowInstance.id);\n this.formFlowStepInstanceId = formFlowInstance.step?.id ?? null;\n this.formDefinition = formFlowInstance.step?.typeProperties.definition;\n }\n\n this.enable();\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\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\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","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './select-form-flow.component';\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\nexport * from './form-flow-configuration-container.component';\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\nimport {NgModule} from '@angular/core';\nimport {FormLinkProcessDiagramComponent} from './components/form-link-process-diagram/form-link-process-diagram.component';\nimport {CommonModule} from '@angular/common';\nimport {ProcessLinkRoutingModule} from './process-link-routing.module';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n CarbonMultiInputModule,\n FormIoModule,\n InputLabelModule,\n ModalModule,\n ParagraphModule,\n RemoveClassnamesDirective,\n RenderInPageHeaderDirective,\n SearchableDropdownSelectModule,\n StepperModule,\n TooltipIconModule,\n TooltipModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorComponent,\n VModalModule,\n} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SelectPluginConfigurationComponent} from './components/select-plugin-configuration/select-plugin-configuration.component';\nimport {SelectPluginActionComponent} from './components/select-plugin-action/select-plugin-action.component';\nimport {PluginConfigurationContainerModule, PluginTranslatePipeModule} from '@valtimo/plugin';\nimport {PluginActionConfigurationComponent} from './components/plugin-action-configuration/plugin-action-configuration.component';\nimport {ProcessLinkComponent} from './components/process-link/process-link.component';\nimport {ProcessLinkModalComponent} from './components/process-link-modal/process-link-modal.component';\nimport {\n ButtonModule as CarbonButtonModule,\n ComboBoxModule,\n IconModule,\n InputModule,\n LayerModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n NotificationModule,\n ProgressIndicatorModule,\n RadioModule as CarbonRadioModule,\n SelectModule,\n StructuredListModule,\n TilesModule,\n ToggleModule,\n ToggletipModule,\n} from 'carbon-components-angular';\nimport {ChooseProcessLinkTypeComponent} from './components/choose-process-link-type';\nimport {SelectFormComponent} from './components/select-form';\nimport {FormFlowComponent} from './components/form-flow/form-flow.component';\nimport {SelectFormFlowComponent} from './components/select-form-flow';\nimport {FormFlowConfigurationContainerComponent} from './components/form-flow-configuration-container';\nimport {UrlValidatorService} from './services/url-validator.service';\nimport {UrlResolverService} from './services/url-resolver.service';\nimport {FormDisplayConfigurationComponent} from './components/form-display-configuration/form-display-configuration.component';\nimport {ImportPluginConfigurationComponent} from './components/import-plugin-configuration/import-plugin-configuration.component';\nimport {SelectUIComponentComponent} from './components/select-ui-component/select-ui-component.component';\nimport {SelectBuildingBlockComponent} from './components/select-building-block';\nimport {ConfigureBuildingBlockPluginsComponent} from './components/configure-building-block-plugins';\nimport {ConfigureBuildingBlockMappingsComponent} from './components/configure-building-block-mappings/configure-building-block-mappings.component';\n\n@NgModule({\n declarations: [\n ProcessLinkComponent,\n FormLinkProcessDiagramComponent,\n SelectPluginConfigurationComponent,\n SelectPluginActionComponent,\n PluginActionConfigurationComponent,\n ProcessLinkModalComponent,\n ChooseProcessLinkTypeComponent,\n SelectFormComponent,\n FormFlowComponent,\n SelectFormFlowComponent,\n FormFlowConfigurationContainerComponent,\n FormDisplayConfigurationComponent,\n SelectUIComponentComponent,\n ImportPluginConfigurationComponent,\n SelectBuildingBlockComponent,\n ConfigureBuildingBlockPluginsComponent,\n ],\n imports: [\n CommonModule,\n ProcessLinkRoutingModule,\n FormsModule,\n ReactiveFormsModule,\n ModalModule,\n SearchableDropdownSelectModule,\n TranslateModule,\n StepperModule,\n VModalModule,\n PluginTranslatePipeModule,\n ParagraphModule,\n PluginConfigurationContainerModule,\n CarbonModalModule,\n ProgressIndicatorModule,\n CarbonButtonModule,\n IconModule,\n TooltipModule,\n ComboBoxModule,\n InputModule,\n TooltipIconModule,\n LoadingModule,\n FormIoModule,\n ValtimoCdsModalDirective,\n StructuredListModule,\n TilesModule,\n RenderInPageHeaderDirective,\n SelectModule,\n ToggleModule,\n CarbonMultiInputModule,\n LayerModule,\n ToggletipModule,\n ComboBoxModule,\n TranslateModule,\n LayerModule,\n ToggletipModule,\n RemoveClassnamesDirective,\n ReactiveFormsModule,\n InputLabelModule,\n CarbonRadioModule,\n ValuePathSelectorComponent,\n ConfigureBuildingBlockMappingsComponent,\n NotificationModule,\n ],\n exports: [\n ProcessLinkComponent,\n SelectPluginConfigurationComponent,\n SelectPluginActionComponent,\n PluginActionConfigurationComponent,\n ProcessLinkModalComponent,\n FormFlowComponent,\n ],\n providers: [UrlValidatorService, UrlResolverService],\n})\nexport class ProcessLinkModule {}\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\nimport {ListItem} from 'carbon-components-angular';\n\ninterface FormSubmissionResult {\n errors: string[];\n documentId?: string;\n}\n\ninterface BpmnElement {\n id: string;\n type: string;\n activityListenerType?: string;\n activityType?: string;\n name?: string;\n}\n\ninterface FormFlowDefinition {\n id: string;\n name: string;\n}\n\ninterface FormFlowInstance {\n id: string;\n step?: FormFlowStep;\n}\n\ninterface FormFlowCreateRequest {\n documentId: string | null;\n documentDefinitionName: string | null;\n}\n\ninterface FormFlowCreateResult {\n formFlowInstanceId: string;\n}\n\ntype FormFlowStepType = 'form' | 'custom-component';\n\ninterface FormFlowStep {\n id: string;\n type: FormFlowStepType;\n typeProperties: FormTypeProperties;\n}\n\ninterface FormTypeProperties {\n definition?: any;\n id?: string;\n}\n\ninterface ModalParams {\n element: BpmnElement;\n processDefinitionKey: string;\n processDefinitionId: string;\n}\n\ninterface FormDefinitionListItem extends ListItem {\n id: string;\n}\n\ninterface FormFlowBreadcrumbs extends ListItem {\n currentStepIndex: number;\n breadcrumbs: Array<FormFlowBreadcrumb>;\n}\n\ninterface FormFlowBreadcrumb extends ListItem {\n title: string;\n key: string;\n stepInstanceId: string;\n completed: boolean;\n}\n\nexport {\n FormSubmissionResult,\n BpmnElement,\n FormFlowDefinition,\n FormFlowInstance,\n FormFlowStepType,\n FormFlowStep,\n FormTypeProperties,\n FormFlowCreateResult,\n FormFlowCreateRequest,\n ModalParams,\n FormDefinitionListItem,\n FormFlowBreadcrumbs,\n FormFlowBreadcrumb,\n};\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\nimport {EventEmitter, Type} from '@angular/core';\nimport {FormioSubmission} from '@valtimo/components';\n\ninterface ChangeEvent {\n data: object;\n}\n\ninterface FormFlowCustomComponent {\n formFlowInstanceId: string;\n componentId?: string;\n disabled: boolean;\n changeEvent: EventEmitter<ChangeEvent>;\n submitEvent: EventEmitter<FormioSubmission>;\n}\n\ninterface FormFlowCustomComponentDefinition {\n id: string;\n component: Type<FormFlowCustomComponent>;\n}\n\nexport {FormFlowCustomComponentDefinition, FormFlowCustomComponent, ChangeEvent};\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\nimport {EventEmitter, Type} from '@angular/core';\n\ninterface FormCustomComponent {\n taskInstanceId: string | null;\n processDefinitionKey: string | null;\n documentDefinitionName: string | null;\n submittedEvent: EventEmitter<any>;\n}\n\ninterface FormCustomComponentDefinition {\n id: string;\n component: FormCustomComponent;\n}\n\ninterface FormCustomComponentConfig {\n [id: string]: Type<FormCustomComponentDefinition>;\n}\n\nexport {FormCustomComponent, FormCustomComponentDefinition, FormCustomComponentConfig};\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\nimport {FormArray, FormControl, FormGroup} from '@angular/forms';\nimport {BuildingBlockSyncTiming} from './process-link.model';\n\ninterface BuildingBlockField {\n name: string;\n required: boolean;\n}\n\ntype InputRowFormGroup = FormGroup<{\n source: FormControl<string>;\n target: FormControl<string>;\n}>;\n\ntype OutputRowFormGroup = FormGroup<{\n source: FormControl<string>;\n target: FormControl<string>;\n syncTiming: FormControl<BuildingBlockSyncTiming>;\n}>;\n\ntype InputsFormGroup = FormGroup<{\n inputs: FormArray<InputRowFormGroup>;\n}>;\n\ntype OutputsFormGroup = FormGroup<{\n outputs: FormArray<OutputRowFormGroup>;\n}>;\n\nexport {\n BuildingBlockField,\n InputsFormGroup,\n OutputsFormGroup,\n InputRowFormGroup,\n OutputRowFormGroup,\n};\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\ninterface PluginsWithDependencies {\n plugins: {\n pluginDefinitionKey: string;\n dependencies: {\n key: string;\n }[];\n }[];\n}\n\nexport {PluginsWithDependencies};\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\nexport * from './form-link.model';\nexport * from './process-link.model';\nexport * from './form-flow.model';\nexport * from './form-custom-component.model';\nexport * from './building-block-field.model';\nexport * from './plugin.model';\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\n/*\n * Public API Surface of process-link\n */\n\nexport * from './lib/services';\nexport * from './lib/components/select-plugin-configuration/select-plugin-configuration.component';\nexport * from './lib/components/select-plugin-action/select-plugin-action.component';\nexport * from './lib/components/plugin-action-configuration/plugin-action-configuration.component';\nexport * from './lib/process-link.module';\nexport * from './lib/models';\nexport * from './lib/components/process-link/process-link.component';\nexport * from './lib/components/process-link-modal/process-link-modal.component';\nexport * from './lib/components/choose-process-link-type/choose-process-link-type.component';\nexport * from './lib/components/form-flow/form-flow.component';\nexport * from './lib/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ProcessLinkBuildingBlockApiService","i1","i2","map","i2.ProcessLinkButtonService","i3.PluginStateService","i4","i1.UrlResolverService","switchMap","filter","i2.PluginStateService","i3.ProcessLinkStateService","i3.ProcessLinkButtonService","i3.ProcessLinkStepService","i5","i6","i1.ProcessLinkButtonService","i1.PluginStateService","i1.ProcessLinkStepService","i1.ProcessLinkStateService","i3","i2.ProcessLinkService","i7","i1.ProcessLinkService","i3.ImportPluginConfigurationComponent","i2.BuildingBlockStateService","i2.ProcessLinkStepService","i2.ProcessLinkStateService","i2.ProcessLinkBuildingBlockApiService","i7.FormDisplayConfigurationComponent","i8","withLatestFrom","take","i1.BuildingBlockStateService","catchError","i6.ConfigureBuildingBlockMappingsComponent","i7.SelectPluginConfigurationComponent","i8.SelectPluginActionComponent","i9.PluginActionConfigurationComponent","i10.ChooseProcessLinkTypeComponent","i11.SelectFormComponent","i12.SelectFormFlowComponent","i13.SelectUIComponentComponent","i14.SelectBuildingBlockComponent","i15.ConfigureBuildingBlockPluginsComponent","i16","i3.FormLinkProcessDiagramComponent","i4.ProcessLinkModalComponent","tap","i1.FormFlowComponentService","i1.FormFlowService","i7.FormFlowConfigurationContainerComponent","CarbonModalModule","CarbonButtonModule","SelectModule","CarbonRadioModule"],"mappings":"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"}
|