@valtimo/process-management 13.12.0 → 13.13.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.
@@ -7,25 +7,25 @@ import { ReactiveFormsModule, Validators, FormsModule } from '@angular/forms';
7
7
  import * as i4 from '@ngx-translate/core';
8
8
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
9
9
  import * as i1$1 from '@valtimo/components';
10
- import { PendingChangesComponent, FitPageDirective, RenderInPageHeaderDirective, ViewType, CarbonListModule, ConfirmationModalModule, CARBON_CONSTANTS, WidgetModule } from '@valtimo/components';
10
+ import { FitPageDirective, RenderInPageHeaderDirective, ViewType, CarbonListModule, ConfirmationModalModule, CARBON_CONSTANTS, WidgetModule } from '@valtimo/components';
11
11
  import * as i5 from '@valtimo/process-link';
12
- import { ProcessLinkEditMode, ProcessLinkModule, ProcessLinkStateService, ProcessLinkStepService, ProcessLinkButtonService } from '@valtimo/process-link';
12
+ import { ProcessLinkModule, ProcessLinkStateService, ProcessLinkStepService, ProcessLinkButtonService } from '@valtimo/process-link';
13
13
  import * as i2$2 from 'carbon-components-angular';
14
14
  import { LoadingModule, DropdownModule, SelectModule, ButtonModule, IconModule, TagModule, DialogModule, ToggleModule, TooltipModule, FileUploaderModule, ModalModule, LayerModule, NotificationModule, RadioModule } from 'carbon-components-angular';
15
15
  import * as i2$1 from '@valtimo/shared';
16
- import { BaseApiService, getCaseManagementRouteParams, getCaseManagementRouteParamsAndContext, ROLE_ADMIN } from '@valtimo/shared';
16
+ import { BaseApiService, getCaseManagementRouteParams, getBuildingBlockManagementRouteParams, ROLE_ADMIN } from '@valtimo/shared';
17
17
  import { useService, BpmnPropertiesPanelModule, BpmnPropertiesProviderModule, CamundaPlatformPropertiesProviderModule } from 'bpmn-js-properties-panel';
18
18
  import Modeler from 'bpmn-js/lib/Modeler';
19
19
  import camundaPlatformBehaviors from 'camunda-bpmn-js-behaviors/lib/camunda-platform';
20
20
  import CamundaBpmnModdle from 'camunda-bpmn-moddle/resources/camunda.json';
21
21
  import { isEqual } from 'lodash';
22
- import { filter, BehaviorSubject, Subscription, Subject, combineLatest, switchMap, of, tap, map as map$1, startWith, from, take } from 'rxjs';
22
+ import { filter, BehaviorSubject, Subject, Subscription, combineLatest, switchMap, of, tap, map as map$1, startWith, from, take, merge } from 'rxjs';
23
23
  import { distinctUntilChanged, map, filter as filter$1 } from 'rxjs/operators';
24
24
  import * as i2 from '@valtimo/form';
25
25
  import { toObservable } from '@angular/core/rxjs-interop';
26
26
  import * as i1 from '@angular/common/http';
27
- import { html } from 'htm/preact';
28
27
  import { is } from 'bpmn-js/lib/util/ModelUtil';
28
+ import { html } from 'htm/preact';
29
29
  import * as i3 from 'ngx-logger';
30
30
  import * as i7 from '@valtimo/process';
31
31
  import * as i8 from '@angular/router';
@@ -112,6 +112,9 @@ class ProcessManagementEditorService {
112
112
  get openProcessLinkModalEvents$() {
113
113
  return this._openProcessLinkModalEvents$.asObservable();
114
114
  }
115
+ get deleteProcessLinkEvents$() {
116
+ return this._deleteProcessLinkEvents$.asObservable();
117
+ }
115
118
  setSelectedProcessDefinition(definition) {
116
119
  this._selectionProcessDefinitionSubject$.next(definition);
117
120
  }
@@ -123,26 +126,30 @@ class ProcessManagementEditorService {
123
126
  this.formService = formService;
124
127
  this._selectionProcessDefinitionSubject$ = new BehaviorSubject(null);
125
128
  this._processLinksForSelectedDefinition$ = new BehaviorSubject([]);
126
- this._processLinksFetchedForSelectedDefinition$ = new BehaviorSubject(false);
127
- this._subscriptions = new Subscription();
128
129
  this._openProcessLinkModalEvents$ = new Subject();
129
- this._caseManagementRouteParams$ = new BehaviorSubject(null);
130
+ this._deleteProcessLinkEvents$ = new Subject();
131
+ this._managementRouteParams$ = new BehaviorSubject(null);
130
132
  this._formDefinitionOptions$ = new BehaviorSubject([]);
131
133
  this._updatingBpmnView = false;
132
134
  this._activityIdBusinessIdMap = {};
135
+ this._subscriptions = new Subscription();
133
136
  this.openSelectedProcessDefinitionSubscription();
134
137
  this.openFormDefinitionOptionsSubscription();
135
138
  }
136
139
  ngOnDestroy() {
137
140
  this._subscriptions.unsubscribe();
138
141
  }
139
- setCaseManagementRouteParams(context, params) {
140
- this._caseManagementRouteParams$.next([context, params]);
142
+ setManagementRouteParams(context, params) {
143
+ this._managementRouteParams$.next([context, params]);
141
144
  }
142
145
  sendOpenProcessLinkModalEvent(event, updateBpmnViewFunction) {
143
146
  this._updateBpmnViewFunction = updateBpmnViewFunction;
144
147
  this._openProcessLinkModalEvents$.next(event);
145
148
  }
149
+ sendDeleteProcessLinkEvent(event, updateBpmnViewFunction) {
150
+ this._updateBpmnViewFunction = updateBpmnViewFunction;
151
+ this._deleteProcessLinkEvents$.next(event);
152
+ }
146
153
  updateProcessLink(event) {
147
154
  this.setProcessLinksForSelectedDefinition(this.processLinksForSelectedDefinition.map(processLink => {
148
155
  if (processLink.activityId === event.activityId) {
@@ -208,25 +215,31 @@ class ProcessManagementEditorService {
208
215
  this.updateBpmnView();
209
216
  }
210
217
  openFormDefinitionOptionsSubscription() {
211
- this._subscriptions.add(this._caseManagementRouteParams$
218
+ this._subscriptions.add(this._managementRouteParams$
212
219
  .pipe(filter((params) => params !== null))
213
220
  .subscribe(([context, params]) => {
214
- if (context === 'independent') {
215
- this.formService
216
- .getAllUnlinkedFormDefinitions()
217
- .subscribe(options => this._formDefinitionOptions$.next(options));
218
- }
219
- else {
220
- this.formService
221
- .getAllFormDefinitionsForCaseDefinition(params.caseDefinitionKey, params.caseDefinitionVersionTag)
222
- .subscribe(options => this._formDefinitionOptions$.next(options));
221
+ switch (context) {
222
+ case 'independent':
223
+ this.formService
224
+ .getAllUnlinkedFormDefinitions()
225
+ .subscribe(options => this._formDefinitionOptions$.next(options));
226
+ break;
227
+ case 'case':
228
+ this.formService
229
+ .getAllFormDefinitionsForCaseDefinition(params.caseDefinitionKey, params.caseDefinitionVersionTag)
230
+ .subscribe(options => this._formDefinitionOptions$.next(options));
231
+ break;
232
+ case 'buildingBlock':
233
+ // to do
234
+ this._formDefinitionOptions$.next([]);
235
+ break;
223
236
  }
224
237
  }));
225
238
  }
226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementEditorService, deps: [{ token: i5.ProcessLinkService }, { token: i2.FormService }], target: i0.ɵɵFactoryTarget.Injectable }); }
227
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementEditorService }); }
239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementEditorService, deps: [{ token: i5.ProcessLinkService }, { token: i2.FormService }], target: i0.ɵɵFactoryTarget.Injectable }); }
240
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementEditorService }); }
228
241
  }
229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementEditorService, decorators: [{
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementEditorService, decorators: [{
230
243
  type: Injectable
231
244
  }], ctorParameters: () => [{ type: i5.ProcessLinkService }, { type: i2.FormService }] });
232
245
 
@@ -265,10 +278,10 @@ class ProcessManagementStateService {
265
278
  reloadDefinitions() {
266
279
  this._reloadDefinitions$.next(null);
267
280
  }
268
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
269
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementStateService, providedIn: 'root' }); }
281
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
282
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementStateService, providedIn: 'root' }); }
270
283
  }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementStateService, decorators: [{
284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementStateService, decorators: [{
272
285
  type: Injectable,
273
286
  args: [{ providedIn: 'root' }]
274
287
  }] });
@@ -369,28 +382,28 @@ class ProcessManagementService extends BaseApiService {
369
382
  this.httpClient = httpClient;
370
383
  this.configService = configService;
371
384
  this._definitionKey$ = new BehaviorSubject(null);
372
- this._caseDefinitionVersionTag$ = new BehaviorSubject(null);
385
+ this._versionTag$ = new BehaviorSubject(null);
373
386
  this._$context = signal('independent');
374
387
  this.processes$ = combineLatest([
375
388
  this._definitionKey$,
376
- this._caseDefinitionVersionTag$,
389
+ this._versionTag$,
377
390
  toObservable(this._$context),
378
- ]).pipe(switchMap(([definitionKey, caseDefinitionVersionTag, context]) => {
391
+ ]).pipe(switchMap(([definitionKey, versionTag, context]) => {
379
392
  if (context === 'independent') {
380
393
  return this.getUnlinkedProcesses();
381
394
  }
382
- if (!!definitionKey && !!caseDefinitionVersionTag) {
383
- return this.getProcesses(definitionKey, caseDefinitionVersionTag);
395
+ if (!!definitionKey && !!versionTag) {
396
+ return this.getProcesses(definitionKey, versionTag);
384
397
  }
385
398
  return of([]);
386
399
  }));
387
400
  }
388
- setParams(caseDefinitionKey, caseDefinitionVersionTag) {
389
- this._definitionKey$.next(caseDefinitionKey);
390
- this._caseDefinitionVersionTag$.next(caseDefinitionVersionTag);
401
+ setParams(key, versionTag) {
402
+ this._definitionKey$.next(key);
403
+ this._versionTag$.next(versionTag);
391
404
  }
392
405
  deleteProcess(processDefinitionKey) {
393
- return this.httpClient.delete(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._caseDefinitionVersionTag$.getValue()}/process-definition/key/${processDefinitionKey}`));
406
+ return this.httpClient.delete(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._versionTag$.getValue()}/process-definition/key/${processDefinitionKey}`));
394
407
  }
395
408
  deleteUnlinkedProcess(processDefinitionKey) {
396
409
  return this.httpClient.delete(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/key/${processDefinitionKey}`));
@@ -402,20 +415,23 @@ class ProcessManagementService extends BaseApiService {
402
415
  type: 'application/json',
403
416
  }));
404
417
  return this.httpClient.post(this._$context() === 'case'
405
- ? this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._caseDefinitionVersionTag$.getValue()}/process-definition`)
418
+ ? this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${this._definitionKey$.getValue()}/version/${this._versionTag$.getValue()}/process-definition`)
406
419
  : this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}`), formData);
407
420
  }
408
421
  getProcessDefinitionForCase(caseDefinitionKey, caseDefinitionVersionTag, processDefinitionKey) {
409
422
  return this.httpClient.get(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process-definition/key/${processDefinitionKey}`));
410
423
  }
424
+ getBuildingBlockProcessDefinition(key, versionTag, processDefinitionId) {
425
+ return this.httpClient.get(this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/process-definition/${processDefinitionId}`));
426
+ }
411
427
  getUnlinkedProcessDefinitionsByKey(processDefinitionKey) {
412
428
  return this.httpClient.get(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/key/${processDefinitionKey}`));
413
429
  }
414
430
  updateProcessDefinitionCaseDefinitionProperties(caseDefinitionKey, caseDefinitionVersionTag, processDefinitionId, body) {
415
431
  return this.httpClient.put(this.getApiUrl(`/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/process/${processDefinitionId}/properties`), body);
416
432
  }
417
- getProcesses(definitionName, caseDefinitionVersionTag) {
418
- return this.httpClient.get(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${definitionName}/version/${caseDefinitionVersionTag}/process-definition`));
433
+ getProcesses(definitionName, versionTag) {
434
+ return this.httpClient.get(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}/${definitionName}/version/${versionTag}/process-definition`));
419
435
  }
420
436
  getUnlinkedProcesses() {
421
437
  return this.httpClient.get(this.getApiUrl(`${PROCESS_MANAGEMENT_ENDPOINTS[this._$context()]}`));
@@ -435,10 +451,10 @@ class ProcessManagementService extends BaseApiService {
435
451
  }
436
452
  return object;
437
453
  }
438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
439
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementService, providedIn: 'root' }); }
454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
455
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementService, providedIn: 'root' }); }
440
456
  }
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementService, decorators: [{
457
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementService, decorators: [{
442
458
  type: Injectable,
443
459
  args: [{
444
460
  providedIn: 'root',
@@ -487,6 +503,163 @@ function getContextObservable(route) {
487
503
  return route.data.pipe(map(data => (data && data['context']) || null), distinctUntilChanged());
488
504
  }
489
505
 
506
+ /*
507
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
508
+ *
509
+ * Licensed under EUPL, Version 1.2 (the "License");
510
+ * you may not use this file except in compliance with the License.
511
+ * You may obtain a copy of the License at
512
+ *
513
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
514
+ *
515
+ * Unless required by applicable law or agreed to in writing, software
516
+ * distributed under the License is distributed on an "AS IS" basis,
517
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
518
+ * See the License for the specific language governing permissions and
519
+ * limitations under the License.
520
+ */
521
+ const getLatestProcessDefinition = (processDefinitions) => {
522
+ if (!processDefinitions || processDefinitions.length === 0)
523
+ return null;
524
+ return processDefinitions.reduce((acc, version) => version.version > acc.version ? version : acc);
525
+ };
526
+ const initBreadcrumbsForContext = (breadcrumbService, translateService, params, context) => {
527
+ if (!params)
528
+ return;
529
+ if (context === 'case') {
530
+ const caseParams = params;
531
+ const route = `/case-management/case/${caseParams.caseDefinitionKey}/version/${caseParams.caseDefinitionVersionTag}`;
532
+ breadcrumbService.setThirdBreadcrumb({
533
+ route: [route],
534
+ content: `${caseParams.caseDefinitionKey} (${caseParams.caseDefinitionVersionTag})`,
535
+ href: route,
536
+ });
537
+ const routeWithProcesses = `${route}/processes`;
538
+ breadcrumbService.setFourthBreadcrumb({
539
+ route: [routeWithProcesses],
540
+ content: translateService.instant('caseManagement.tabs.processes'),
541
+ href: routeWithProcesses,
542
+ });
543
+ }
544
+ if (context === 'buildingBlock') {
545
+ const bbParams = params;
546
+ const route = `/building-block-management/building-block/${bbParams.buildingBlockDefinitionKey}/version/${bbParams.buildingBlockDefinitionVersionTag}`;
547
+ const generalRoute = `${route}/general`;
548
+ breadcrumbService.setThirdBreadcrumb({
549
+ route: [generalRoute],
550
+ content: `${bbParams.buildingBlockDefinitionKey} (${bbParams.buildingBlockDefinitionVersionTag})`,
551
+ href: generalRoute,
552
+ });
553
+ const processRoute = `${route}/process-definition`;
554
+ breadcrumbService.setFourthBreadcrumb({
555
+ route: [processRoute],
556
+ content: translateService.instant('buildingBlockManagement.tabs.processes'),
557
+ href: processRoute,
558
+ });
559
+ }
560
+ };
561
+ const DisableBpmnWriteModule = {
562
+ paletteProvider: ['value', {}],
563
+ contextPadProvider: ['value', {}],
564
+ directEditing: [
565
+ 'value',
566
+ {
567
+ registerProvider: () => { },
568
+ activate: () => { },
569
+ deactivate: () => { },
570
+ isActive: () => false,
571
+ },
572
+ ],
573
+ move: ['value', null],
574
+ resizeHandles: ['value', { addResizer: () => { }, removeResizers: () => { } }],
575
+ };
576
+ const disableCommands = (editor) => {
577
+ const commandStack = editor.get('commandStack');
578
+ const originalExecute = commandStack?.execute?.bind(commandStack);
579
+ if (commandStack?.execute) {
580
+ commandStack.execute = (command, context) => {
581
+ if (command === 'elements.delete' ||
582
+ command === 'elements.copy' ||
583
+ command === 'elements.paste' ||
584
+ command === 'elements.create') {
585
+ return;
586
+ }
587
+ originalExecute(command, context);
588
+ };
589
+ }
590
+ };
591
+ const applyBuildingBlockCalledElement = (editor, activityId, mainProcessDefinitionKey, versionTag) => {
592
+ if (!editor)
593
+ return;
594
+ const elementRegistry = editor.get('elementRegistry');
595
+ const modeling = editor.get('modeling');
596
+ const moddle = editor.get('moddle');
597
+ const element = elementRegistry.get(activityId);
598
+ if (!element || !is(element, 'bpmn:CallActivity')) {
599
+ return;
600
+ }
601
+ modeling.updateProperties(element, {
602
+ calledElement: mainProcessDefinitionKey,
603
+ 'camunda:calledElementBinding': 'versionTag',
604
+ 'camunda:calledElementVersionTag': versionTag,
605
+ 'camunda:calledElementType': 'BPMN',
606
+ });
607
+ let extensionElements = element.businessObject.extensionElements;
608
+ if (!extensionElements) {
609
+ extensionElements = moddle.create('bpmn:ExtensionElements', { values: [] });
610
+ modeling.updateProperties(element, {
611
+ extensionElements,
612
+ });
613
+ }
614
+ extensionElements.values = (extensionElements.values || []).filter((val) => !(val.$type === 'camunda:In' && val.businessKey));
615
+ const inWithBusinessKey = moddle.create('camunda:In', {
616
+ businessKey: '#{buildingBlockDocumentId}',
617
+ });
618
+ extensionElements.values.push(inWithBusinessKey);
619
+ modeling.updateProperties(element, {
620
+ extensionElements,
621
+ });
622
+ };
623
+ const clearBuildingBlockCalledElement = (editor, activityId) => {
624
+ const localEditor = editor;
625
+ if (!localEditor)
626
+ return;
627
+ const elementRegistry = localEditor.get('elementRegistry');
628
+ const modeling = localEditor.get('modeling');
629
+ const element = elementRegistry.get(activityId);
630
+ if (!element || !is(element, 'bpmn:CallActivity'))
631
+ return;
632
+ const bo = element.businessObject;
633
+ const versionTag = bo.get('camunda:calledElementVersionTag');
634
+ if (!versionTag || !versionTag.startsWith('BB:'))
635
+ return;
636
+ const props = {
637
+ calledElement: undefined,
638
+ 'camunda:calledElementBinding': undefined,
639
+ 'camunda:calledElementVersionTag': undefined,
640
+ 'camunda:calledElementType': undefined,
641
+ };
642
+ const extensionElements = bo.extensionElements;
643
+ if (extensionElements && Array.isArray(extensionElements.values)) {
644
+ // Keep all elements except camunda:In with businessKey (building block mapping)
645
+ extensionElements.values = extensionElements.values.filter((val) => val.$type !== 'camunda:In' || !val.businessKey);
646
+ if (extensionElements.values.length === 0) {
647
+ props.extensionElements = undefined;
648
+ }
649
+ else {
650
+ props.extensionElements = extensionElements;
651
+ }
652
+ }
653
+ modeling.updateProperties(element, props);
654
+ const attrs = bo.$attrs || {};
655
+ Object.keys(attrs).forEach(key => {
656
+ if (key.startsWith('camunda:calledElement'))
657
+ delete attrs[key];
658
+ if (key === 'calledElement')
659
+ delete attrs[key];
660
+ });
661
+ };
662
+
490
663
  /*
491
664
  * Copyright 2015-2025 Ritense BV, the Netherlands.
492
665
  *
@@ -575,39 +748,46 @@ class ValtimoPropertiesProvider {
575
748
  const CustomRootElement = (props) => {
576
749
  const { element, processLink, translateService, processManagementEditorService, pluginTranslationService, } = props;
577
750
  const modeling = useService('modeling');
751
+ const elementRegistry = useService('elementRegistry');
578
752
  const editProcessLinkText = translateService.instant('interface.edit');
579
753
  const unlinkText = translateService.instant('processLink.unlink');
580
754
  const createText = translateService.instant('processLink.create');
581
- const modalParams = {
582
- processDefinitionKey: processManagementEditorService.selectionProcessDefinition?.key,
583
- processDefinitionId: processManagementEditorService.selectionProcessDefinition?.id,
584
- element: {
585
- id: element.id,
586
- type: element.type,
587
- activityListenerType: mapActivityTypeToActivityListenerType(element.type),
588
- name: element.di.bpmnElement.name,
589
- },
755
+ const getModalParams = () => {
756
+ const currentElement = elementRegistry.get(element.id) || element;
757
+ return {
758
+ processDefinitionKey: processManagementEditorService.selectionProcessDefinition?.key,
759
+ processDefinitionId: processManagementEditorService.selectionProcessDefinition?.id,
760
+ element: {
761
+ id: currentElement.id,
762
+ type: currentElement.type,
763
+ activityListenerType: mapActivityTypeToActivityListenerType(currentElement.type),
764
+ name: currentElement.di?.bpmnElement?.name,
765
+ },
766
+ };
590
767
  };
591
768
  const handleCreateClick = () => {
592
769
  const event = {
593
- modalParams,
770
+ modalParams: getModalParams(),
594
771
  };
595
772
  processManagementEditorService.sendOpenProcessLinkModalEvent(event, () => {
596
- modeling.updateProperties(element, {});
773
+ // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase
774
+ setTimeout(() => modeling.updateProperties(element, {}), 0);
597
775
  });
598
776
  };
599
777
  const handleEditClick = () => {
600
778
  const event = {
601
779
  processLink,
602
- modalParams,
780
+ modalParams: getModalParams(),
603
781
  };
604
782
  processManagementEditorService.sendOpenProcessLinkModalEvent(event, () => {
605
- modeling.updateProperties(element, {});
783
+ // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase
784
+ setTimeout(() => modeling.updateProperties(element, {}), 0);
606
785
  });
607
786
  };
608
787
  const handleUnlinkClick = () => {
609
- processManagementEditorService.deleteProcessLink({ activityId: processLink.activityId }, () => {
610
- modeling.updateProperties(element, {});
788
+ processManagementEditorService.sendDeleteProcessLinkEvent({ activityId: processLink.activityId }, () => {
789
+ // Defer to avoid calling modeling.updateProperties during command stack execute/revert phase
790
+ setTimeout(() => modeling.updateProperties(element, {}), 0);
611
791
  });
612
792
  };
613
793
  const processLinkFormDefinitionId = processLink?.formDefinitionId;
@@ -675,6 +855,40 @@ const CustomRootElement = (props) => {
675
855
  </div>
676
856
  </div>`;
677
857
  }
858
+ const buildingBlockDefinitionKey = processLink?.buildingBlockDefinitionKey;
859
+ const buildingBlockDefinitionVersion = processLink?.buildingBlockDefinitionVersionTag;
860
+ if (buildingBlockDefinitionKey) {
861
+ return html `<div class="process-link-properties-panel">
862
+ <div class="process-link-properties-panel__header">
863
+ <span class="process-link-properties-panel__title"
864
+ >${buildingBlockDefinitionKey} (${buildingBlockDefinitionVersion})</span
865
+ >
866
+
867
+ <cds-tag
868
+ class="cds--tag cds--tag--green cds--tag--md cds--layout--size-md cds-tag--no-margin"
869
+ ><span class="cds--tag__label">
870
+ ${translateService.instant('processLinkType.building-block')}
871
+ </span>
872
+ </cds-tag>
873
+ </div>
874
+
875
+ <div class="process-link-properties-panel__buttons">
876
+ <button
877
+ class="cds--btn cds--btn--danger cds--btn--sm cds--layout--side-md"
878
+ onClick=${handleUnlinkClick}
879
+ >
880
+ ${unlinkText}
881
+ </button>
882
+
883
+ <button
884
+ class="cds--btn cds--btn--primary cds--btn--sm cds--layout--size-md"
885
+ onClick=${handleEditClick}
886
+ >
887
+ ${editProcessLinkText}
888
+ </button>
889
+ </div>
890
+ </div>`;
891
+ }
678
892
  const pluginActionKey = processLink?.pluginActionDefinitionKey;
679
893
  const pluginActionTranslation = pluginTranslationService.instantByPluginActionKey(pluginActionKey);
680
894
  const pluginTitleTranslation = pluginTranslationService.instantPluginTitleByPluginActionKey(pluginActionKey);
@@ -808,9 +1022,8 @@ const ValtimoPropertiesProviderModule = {
808
1022
  * See the License for the specific language governing permissions and
809
1023
  * limitations under the License.
810
1024
  */
811
- class ProcessManagementBuilderComponent extends PendingChangesComponent {
812
- constructor(breadcrumbService, iconService, logger, modalService, notificationService, pageHeaderService, pageTitleService, processLinkService, processLinkStateService, processManagementEditorService, processManagementService, processService, route, router, translateService, pluginTranslationService, editPermissionsService) {
813
- super();
1025
+ class ProcessManagementBuilderComponent {
1026
+ constructor(breadcrumbService, iconService, logger, modalService, notificationService, pageHeaderService, pageTitleService, processLinkService, processLinkStateService, processManagementEditorService, processManagementService, processService, route, router, translateService, pluginTranslationService, editPermissionsService, processLinkBuildingBlockApiService) {
814
1027
  this.breadcrumbService = breadcrumbService;
815
1028
  this.iconService = iconService;
816
1029
  this.logger = logger;
@@ -828,6 +1041,7 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
828
1041
  this.translateService = translateService;
829
1042
  this.pluginTranslationService = pluginTranslationService;
830
1043
  this.editPermissionsService = editPermissionsService;
1044
+ this.processLinkBuildingBlockApiService = processLinkBuildingBlockApiService;
831
1045
  this._selectedProcess$ = new BehaviorSubject(null);
832
1046
  this.loading$ = new BehaviorSubject(true);
833
1047
  this.isReadOnlyProcess$ = new BehaviorSubject(false);
@@ -836,7 +1050,7 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
836
1050
  this.startableByUser$ = new BehaviorSubject(false);
837
1051
  this.selectedProcessDefinitionXml$ = this.processManagementEditorService.selectionProcessDefinition$.pipe(filter(selectedProcessDefinition => !!selectedProcessDefinition?.id), distinctUntilChanged((previous, current) => isEqual(previous, current)), tap(selectedProcessDefinition => {
838
1052
  this.loading$.next(true);
839
- this.pageTitleService.setCustomPageTitle(selectedProcessDefinition.name);
1053
+ this.pageTitleService.setCustomPageTitle(selectedProcessDefinition?.name || '-');
840
1054
  }), switchMap(selectedProcessDefinition => this.processService.getProcessDefinitionXml(selectedProcessDefinition.id)), tap(result => {
841
1055
  this.cleanUpListenersOnModeler();
842
1056
  this._bpmnModeler?.importXML(result.bpmn20Xml);
@@ -852,25 +1066,24 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
852
1066
  return 'create';
853
1067
  }
854
1068
  const param = this.route.snapshot.paramMap.get('processDefinitionKey');
855
- return param ? param : null;
1069
+ const idParam = this.route.snapshot.paramMap.get('processDefinitionId');
1070
+ return param || idParam || null;
856
1071
  }), filter(editParam => !!editParam));
857
1072
  this.context$ = getContextObservable(this.route);
858
- this.managementParams$ = this.context$.pipe(filter(context => context === 'case'), switchMap(() => getCaseManagementRouteParams(this.route)));
859
- this.params$ = getCaseManagementRouteParams(this.route);
860
- this.hasEditPermissions$ = combineLatest([
861
- this.params$,
862
- this.context$,
863
- ]).pipe(switchMap(([params, context]) => this.editPermissionsService.hasPermissionsToEditBasedOnContext(params?.caseDefinitionKey, params?.caseDefinitionVersionTag, context)));
1073
+ this.managementParams$ = this.context$.pipe(filter(context => context === 'case' || context === 'buildingBlock'), switchMap(context => context === 'case'
1074
+ ? getCaseManagementRouteParams(this.route)
1075
+ : getBuildingBlockManagementRouteParams(this.route)));
1076
+ this.hasEditPermissions$ = this.context$.pipe(switchMap(context => {
1077
+ if (context === 'independent') {
1078
+ return of(true);
1079
+ }
1080
+ return this.managementParams$.pipe(switchMap(params => this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context)));
1081
+ }));
864
1082
  this._reload$ = new Subject();
865
- this.processDefinitionVersions$ = combineLatest([
866
- this.editParam$,
867
- this.context$,
868
- this._reload$.pipe(startWith(null)),
869
- ]).pipe(switchMap(([editParam, context]) => context === 'independent'
1083
+ this.processDefinitionVersions$ = combineLatest([this.editParam$, this.context$, this._reload$.pipe(startWith(null))]).pipe(switchMap(([editParam, context]) => context === 'independent'
870
1084
  ? this.processManagementService.getUnlinkedProcessDefinitionsByKey(editParam)
871
1085
  : of([])), map$1(result => result.map(resultItem => resultItem.processDefinition)), tap(processDefinitions => {
872
1086
  this.changesPending$.next(false);
873
- this.pendingChanges = false;
874
1087
  this.setSelectedProcessDefinitionToLatest(processDefinitions);
875
1088
  }));
876
1089
  this.processDefinitionVersionsListItems$ = combineLatest([
@@ -919,7 +1132,6 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
919
1132
  this.subscribeToProcessLinkUpdateEvents();
920
1133
  this.subscribeToProcessLinkCreateEvents();
921
1134
  this.subscribeToProcessLinkDeleteEvents();
922
- this.processLinkStateService.setEditMode(ProcessLinkEditMode.EMIT_EVENTS);
923
1135
  this.initEditing();
924
1136
  }
925
1137
  ngOnDestroy() {
@@ -954,19 +1166,22 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
954
1166
  ])
955
1167
  .pipe(take(1), switchMap(([result, processLinks, selectedProcessDefinition, context, params]) => {
956
1168
  if (context === 'case') {
957
- return this.processLinkService.deployProcessWithProcessLinksForCase(processLinks, selectedProcessDefinition.id, !isReadOnlyProcess ? (result?.xml ?? '') : null, params?.caseDefinitionKey ?? '', params?.caseDefinitionVersionTag ?? '', this.canInitializeDocument$.getValue(), this.startableByUser$.getValue());
1169
+ const caseManagementParams = params;
1170
+ return this.processLinkService.deployProcessWithProcessLinksForCase(processLinks, selectedProcessDefinition.id, !isReadOnlyProcess ? (result?.xml ?? '') : null, caseManagementParams?.caseDefinitionKey ?? '', caseManagementParams?.caseDefinitionVersionTag ?? '', this.canInitializeDocument$.getValue(), this.startableByUser$.getValue());
1171
+ }
1172
+ if (context === 'buildingBlock') {
1173
+ const buildingBlockManagementParams = params;
1174
+ return this.processLinkService.deployProcessWithProcessLinksForBuildingBlock(processLinks, selectedProcessDefinition.id, result?.xml, buildingBlockManagementParams.buildingBlockDefinitionKey, buildingBlockManagementParams.buildingBlockDefinitionVersionTag);
958
1175
  }
959
1176
  return this.processLinkService.deployProcessWithProcessLinks(processLinks, selectedProcessDefinition.id, !isReadOnlyProcess ? (result?.xml ?? '') : null);
960
1177
  }), switchMap(() => this.context$))
961
1178
  .subscribe({
962
1179
  next: context => {
963
1180
  if (context === 'independent') {
964
- this.pendingChanges = false;
965
1181
  this.reload();
966
1182
  this.showNotification('success');
967
1183
  }
968
1184
  else {
969
- this.pendingChanges = false;
970
1185
  this.navigateBack('success');
971
1186
  }
972
1187
  },
@@ -987,13 +1202,19 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
987
1202
  ...link,
988
1203
  processDefinitionId: '-',
989
1204
  }));
990
- return context === 'independent'
991
- ? this.processLinkService.deployProcessWithProcessLinks(mappedProcessLinks, null, result.xml ?? '')
992
- : this.processLinkService.deployProcessWithProcessLinksForCase(mappedProcessLinks, null, result.xml ?? '', params.caseDefinitionKey, params.caseDefinitionVersionTag, this.canInitializeDocument$.getValue(), this.startableByUser$.getValue());
1205
+ switch (context) {
1206
+ case 'independent':
1207
+ return this.processLinkService.deployProcessWithProcessLinks(mappedProcessLinks, null, result.xml ?? '');
1208
+ case 'buildingBlock':
1209
+ const buildingBlockParams = params;
1210
+ return this.processLinkService.deployProcessWithProcessLinksForBuildingBlock(mappedProcessLinks, null, result.xml ?? '', buildingBlockParams.buildingBlockDefinitionKey, buildingBlockParams.buildingBlockDefinitionVersionTag);
1211
+ case 'case':
1212
+ const caseManagementParams = params;
1213
+ return this.processLinkService.deployProcessWithProcessLinksForCase(mappedProcessLinks, null, result.xml ?? '', caseManagementParams.caseDefinitionKey, caseManagementParams.caseDefinitionVersionTag, this.canInitializeDocument$.getValue(), this.startableByUser$.getValue());
1214
+ }
993
1215
  }))
994
1216
  .subscribe({
995
1217
  next: () => {
996
- this.pendingChanges = false;
997
1218
  this.navigateBack('success');
998
1219
  },
999
1220
  error: () => {
@@ -1040,9 +1261,9 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1040
1261
  });
1041
1262
  }
1042
1263
  setSelectedProcessDefinitionToLatest(processDefinitions) {
1043
- if ((processDefinitions || []).length === 0)
1264
+ const latest = getLatestProcessDefinition(processDefinitions);
1265
+ if (!latest)
1044
1266
  return;
1045
- const latest = processDefinitions.reduce((acc, version) => version.version > acc.version ? version : acc);
1046
1267
  this.processManagementEditorService.setSelectedProcessDefinition(latest);
1047
1268
  }
1048
1269
  initModeler() {
@@ -1060,12 +1281,11 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1060
1281
  this._bpmnModeler?.attachTo(this.modelerElementRef.nativeElement);
1061
1282
  this._bpmnModeler.on('commandStack.changed', () => {
1062
1283
  this.changesPending$.next(true);
1063
- this.pendingChanges = true;
1064
1284
  });
1065
1285
  this._bpmnModeler.on('import.done', () => {
1066
1286
  const idMap = {};
1067
1287
  const elementRegistry = this._bpmnModeler.get('elementRegistry');
1068
- elementRegistry.forEach(element => {
1288
+ elementRegistry.forEach((element) => {
1069
1289
  const activityId = element?.di?.id;
1070
1290
  const businessId = element?.id;
1071
1291
  if (!activityId || !businessId)
@@ -1077,36 +1297,6 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1077
1297
  });
1078
1298
  }
1079
1299
  initViewer() {
1080
- const disableCommands = () => {
1081
- const commandStack = this._bpmnViewer.get('commandStack');
1082
- const originalExecute = commandStack?.execute?.bind(commandStack);
1083
- if (commandStack?.execute) {
1084
- commandStack.execute = (command, context) => {
1085
- if (command === 'elements.delete' ||
1086
- command === 'elements.copy' ||
1087
- command === 'elements.paste' ||
1088
- command === 'elements.create') {
1089
- return;
1090
- }
1091
- originalExecute(command, context);
1092
- };
1093
- }
1094
- };
1095
- const DisableBpmnWriteModule = {
1096
- paletteProvider: ['value', {}],
1097
- contextPadProvider: ['value', {}],
1098
- directEditing: [
1099
- 'value',
1100
- {
1101
- registerProvider: () => { },
1102
- activate: () => { },
1103
- deactivate: () => { },
1104
- isActive: () => false,
1105
- },
1106
- ],
1107
- move: ['value', null],
1108
- resizeHandles: ['value', { addResizer: () => { }, removeResizers: () => { } }],
1109
- };
1110
1300
  this._bpmnViewer = new Modeler({
1111
1301
  additionalModules: [
1112
1302
  DisableBpmnWriteModule,
@@ -1119,10 +1309,9 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1119
1309
  this._bpmnViewer?.attachTo(this.viewerElementRef.nativeElement);
1120
1310
  this._bpmnViewer.on('commandStack.changed', () => {
1121
1311
  this.changesPending$.next(true);
1122
- this.pendingChanges = true;
1123
1312
  });
1124
1313
  this._bpmnViewer.on('import.done', () => {
1125
- disableCommands();
1314
+ disableCommands(this._bpmnViewer);
1126
1315
  });
1127
1316
  }
1128
1317
  reload() {
@@ -1161,6 +1350,11 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1161
1350
  this.processManagementEditorService.updateProcessLink(event);
1162
1351
  this.processLinkStateService.stopSaving();
1163
1352
  this.processLinkStateService.closeModal();
1353
+ const buildingBlockProcessLinkUpdateDto = event;
1354
+ if (buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionKey &&
1355
+ buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionVersionTag) {
1356
+ this.setCalledElementForBuildingBlockProcessLink(buildingBlockProcessLinkUpdateDto.activityId, buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionKey, buildingBlockProcessLinkUpdateDto.buildingBlockDefinitionVersionTag);
1357
+ }
1164
1358
  }));
1165
1359
  }
1166
1360
  subscribeToProcessLinkCreateEvents() {
@@ -1168,13 +1362,19 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1168
1362
  this.processManagementEditorService.createProcessLink(event);
1169
1363
  this.processLinkStateService.stopSaving();
1170
1364
  this.processLinkStateService.closeModal();
1365
+ const buildingBlockProcessLinkCreateDto = event;
1366
+ if (buildingBlockProcessLinkCreateDto.buildingBlockDefinitionKey &&
1367
+ buildingBlockProcessLinkCreateDto.buildingBlockDefinitionVersionTag) {
1368
+ this.setCalledElementForBuildingBlockProcessLink(buildingBlockProcessLinkCreateDto.activityId, buildingBlockProcessLinkCreateDto.buildingBlockDefinitionKey, buildingBlockProcessLinkCreateDto.buildingBlockDefinitionVersionTag);
1369
+ }
1171
1370
  }));
1172
1371
  }
1173
1372
  subscribeToProcessLinkDeleteEvents() {
1174
- this._subscriptions.add(this.processLinkStateService.processLinkDeleteEvents$.subscribe(event => {
1373
+ this._subscriptions.add(merge(this.processManagementEditorService.deleteProcessLinkEvents$, this.processLinkStateService.processLinkDeleteEvents$).subscribe(event => {
1175
1374
  this.processManagementEditorService.deleteProcessLink(event);
1176
1375
  this.processLinkStateService.stopSaving();
1177
1376
  this.processLinkStateService.closeModal();
1377
+ this.unsetCalledElementForBuildingBlockProcessLink(event.activityId);
1178
1378
  }));
1179
1379
  }
1180
1380
  initIfCreate() {
@@ -1216,32 +1416,24 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1216
1416
  }));
1217
1417
  }
1218
1418
  openParamsAndContextSubscription() {
1219
- this._subscriptions.add(getCaseManagementRouteParamsAndContext(this.route).subscribe(([context, params]) => {
1419
+ this._subscriptions.add(combineLatest([
1420
+ getContextObservable(this.route),
1421
+ getCaseManagementRouteParams(this.route),
1422
+ getBuildingBlockManagementRouteParams(this.route),
1423
+ ]).subscribe(([context, caseManagementParams, buildingBlockManagementParams]) => {
1220
1424
  if (context)
1221
1425
  this.processManagementService.context = context;
1222
- if (params) {
1223
- this.processManagementService.setParams(params.caseDefinitionKey, params.caseDefinitionVersionTag);
1426
+ this.processLinkStateService.setContext(context);
1427
+ if (caseManagementParams) {
1428
+ this.processManagementService.setParams(caseManagementParams.caseDefinitionKey, caseManagementParams.caseDefinitionVersionTag);
1429
+ }
1430
+ if (buildingBlockManagementParams) {
1431
+ this.processManagementService.setParams(buildingBlockManagementParams.buildingBlockDefinitionKey, buildingBlockManagementParams.buildingBlockDefinitionVersionTag);
1224
1432
  }
1225
- this.initBreadcrumbs(params, context);
1226
- this.processManagementEditorService.setCaseManagementRouteParams(context, params);
1433
+ initBreadcrumbsForContext(this.breadcrumbService, this.translateService, caseManagementParams || buildingBlockManagementParams, context);
1434
+ this.processManagementEditorService.setManagementRouteParams(context, caseManagementParams || buildingBlockManagementParams);
1227
1435
  }));
1228
1436
  }
1229
- initBreadcrumbs(params, context) {
1230
- if (context === 'independent')
1231
- return;
1232
- const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;
1233
- this.breadcrumbService.setThirdBreadcrumb({
1234
- route: [route],
1235
- content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,
1236
- href: route,
1237
- });
1238
- const routeWithForms = `${route}/processes`;
1239
- this.breadcrumbService.setFourthBreadcrumb({
1240
- route: [routeWithForms],
1241
- content: this.translateService.instant('caseManagement.tabs.processes'),
1242
- href: routeWithForms,
1243
- });
1244
- }
1245
1437
  initEditing() {
1246
1438
  combineLatest([this.editParam$, this.managementParams$.pipe(startWith(null)), this.context$])
1247
1439
  .pipe(take(1), switchMap(([editParam, params, context]) => {
@@ -1250,11 +1442,18 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1250
1442
  this.initIfCreate();
1251
1443
  return of(null);
1252
1444
  }
1253
- return context === 'case'
1254
- ? this.processManagementService.getProcessDefinitionForCase(params.caseDefinitionKey, params.caseDefinitionVersionTag, editParam)
1255
- : this.processManagementService
1256
- .getUnlinkedProcessDefinitionsByKey(editParam)
1257
- .pipe(map$1(processDefinitionResults => processDefinitionResults[0]));
1445
+ switch (context) {
1446
+ case 'case':
1447
+ const caseManagementParams = params;
1448
+ return this.processManagementService.getProcessDefinitionForCase(caseManagementParams.caseDefinitionKey, caseManagementParams.caseDefinitionVersionTag, editParam);
1449
+ case 'independent':
1450
+ return this.processManagementService
1451
+ .getUnlinkedProcessDefinitionsByKey(editParam)
1452
+ .pipe(map$1(processDefinitionResults => processDefinitionResults[0]));
1453
+ case 'buildingBlock':
1454
+ const buildingBlockParams = params;
1455
+ return this.processManagementService.getBuildingBlockProcessDefinition(buildingBlockParams.buildingBlockDefinitionKey, buildingBlockParams.buildingBlockDefinitionVersionTag, editParam);
1456
+ }
1258
1457
  }), tap(res => {
1259
1458
  if (res) {
1260
1459
  this._selectedProcess$.next(res);
@@ -1266,15 +1465,36 @@ class ProcessManagementBuilderComponent extends PendingChangesComponent {
1266
1465
  }))
1267
1466
  .subscribe();
1268
1467
  }
1269
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementBuilderComponent, deps: [{ token: i1$1.BreadcrumbService }, { token: i2$2.IconService }, { token: i3.NGXLogger }, { token: i1$1.ModalService }, { token: i2$1.GlobalNotificationService }, { token: i1$1.PageHeaderService }, { token: i1$1.PageTitleService }, { token: i5.ProcessLinkService }, { token: i5.ProcessLinkStateService }, { token: ProcessManagementEditorService }, { token: ProcessManagementService }, { token: i7.ProcessService }, { token: i8.ActivatedRoute }, { token: i8.Router }, { token: i4.TranslateService }, { token: i10.PluginTranslationService }, { token: i2$1.EditPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
1270
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: ProcessManagementBuilderComponent, isStandalone: true, selector: "valtimo-process-management-builder", providers: [
1468
+ setCalledElementForBuildingBlockProcessLink(activityId, buildingBlockDefinitionKey, buildingBlockDefinitionVersionTag) {
1469
+ const editor = this._bpmnModeler || this._bpmnViewer;
1470
+ if (!editor) {
1471
+ return;
1472
+ }
1473
+ this.processLinkBuildingBlockApiService
1474
+ .getMainProcessDefinitionKeyForBuildingBlock(buildingBlockDefinitionKey, buildingBlockDefinitionVersionTag)
1475
+ .subscribe({
1476
+ next: (mainProcessDefinitionKey) => {
1477
+ const versionTag = `BB:${buildingBlockDefinitionKey}:${buildingBlockDefinitionVersionTag}`;
1478
+ applyBuildingBlockCalledElement(editor, activityId, mainProcessDefinitionKey, versionTag);
1479
+ },
1480
+ });
1481
+ }
1482
+ unsetCalledElementForBuildingBlockProcessLink(activityId) {
1483
+ const editor = this._bpmnModeler || this._bpmnViewer;
1484
+ if (!editor) {
1485
+ return;
1486
+ }
1487
+ clearBuildingBlockCalledElement(editor, activityId);
1488
+ }
1489
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementBuilderComponent, deps: [{ token: i1$1.BreadcrumbService }, { token: i2$2.IconService }, { token: i3.NGXLogger }, { token: i1$1.ModalService }, { token: i2$1.GlobalNotificationService }, { token: i1$1.PageHeaderService }, { token: i1$1.PageTitleService }, { token: i5.ProcessLinkService }, { token: i5.ProcessLinkStateService }, { token: ProcessManagementEditorService }, { token: ProcessManagementService }, { token: i7.ProcessService }, { token: i8.ActivatedRoute }, { token: i8.Router }, { token: i4.TranslateService }, { token: i10.PluginTranslationService }, { token: i2$1.EditPermissionsService }, { token: i5.ProcessLinkBuildingBlockApiService }], target: i0.ɵɵFactoryTarget.Component }); }
1490
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: ProcessManagementBuilderComponent, isStandalone: true, selector: "valtimo-process-management-builder", providers: [
1271
1491
  ProcessManagementEditorService,
1272
1492
  ProcessLinkStateService,
1273
1493
  ProcessLinkStepService,
1274
1494
  ProcessLinkButtonService,
1275
- ], viewQueries: [{ propertyName: "modelerElementRef", first: true, predicate: ["modeler"], descendants: true }, { propertyName: "modelerPanelElementRef", first: true, predicate: ["modelerPanel"], descendants: true }, { propertyName: "viewerElementRef", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "viewerPanelElementRef", first: true, predicate: ["viewerPanel"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n fitPage\n [spaceAdjustment]=\"$spaceAdjustment()\"\n [disableOverflow]=\"true\"\n *ngIf=\"{\n processDefinitionVersions: processDefinitionVersions$ | async,\n selectedProcessDefinitionXml: selectedProcessDefinitionXml$ | async,\n loading: loading$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n data-carbon-theme=\"g10\"\n class=\"bpmn__container\"\n>\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'none' : 'flex'\"\n >\n <div class=\"bpmn__modeler-canvas\" #modeler></div>\n\n <div class=\"bpmn__modeler-panel\" #modelerPanel></div>\n </div>\n\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'flex' : 'none'\"\n >\n <div class=\"bpmn__modeler-canvas\" #viewer></div>\n\n <div class=\"bpmn__modeler-panel\" #viewerPanel></div>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"page-header-actions\"\n *ngIf=\"{\n processDefinitionVersionsListItems: processDefinitionVersionsListItems$ | async,\n loading: loading$ | async,\n changesPending: changesPending$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n isSystemProcess: isSystemProcess$ | async,\n compactMode: compactMode$ | async,\n creatingNewProcess: creatingNewProcess$ | async,\n context: context$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n canInitializeDocument: canInitializeDocument$ | async,\n startableByUser: startableByUser$ | async,\n updatingProcessDefinitionCaseDefinition: updatingProcessDefinitionCaseDefinition$ | async,\n } as actionsObs\"\n >\n <div class=\"page-header-actions__left-container\">\n <cds-dropdown\n *ngIf=\"!actionsObs.creatingNewProcess && actionsObs?.context === 'independent'\"\n class=\"page-header-actions__version-dropdown\"\n (selected)=\"selectedVersionChange($event)\"\n [disabled]=\"\n actionsObs.loading ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 0 ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 1\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list\n [items]=\"actionsObs.processDefinitionVersionsListItems || []\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"page-header-actions__tags\">\n <cds-tag\n *ngIf=\"actionsObs.isReadOnlyProcess || !actionsObs.hasEditPermissions\"\n type=\"blue\"\n >{{ 'processManagement.readOnly' | translate }}</cds-tag\n >\n\n <cds-tag *ngIf=\"actionsObs.isSystemProcess\" type=\"red\">{{\n 'processManagement.systemProcess' | translate\n }}</cds-tag>\n </div>\n </div>\n\n <div class=\"page-header-actions__buttons\">\n @if (actionsObs.context === 'case') {\n <cds-tooltip\n [description]=\"'processCaseConnection.processCreatesCaseTooltip' | translate\"\n >\n <cds-toggle\n [onText]=\"'processManagement.canInitializeDocument' | translate\"\n [offText]=\"'processManagement.canInitializeDocument' | translate\"\n [checked]=\"actionsObs.canInitializeDocument\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('canInitializeDocument', $event)\"\n ></cds-toggle>\n </cds-tooltip>\n\n <cds-tooltip\n [description]=\"'processCaseConnection.startableWithinCaseTooltip' | translate\"\n >\n <cds-toggle\n [onText]=\"'processManagement.startableByUser' | translate\"\n [offText]=\"'processManagement.startableByUser' | translate\"\n [checked]=\"actionsObs.startableByUser\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('startableByUser', $event)\"\n ></cds-toggle\n ></cds-tooltip>\n }\n\n <button\n *ngIf=\"actionsObs.context === 'case'\"\n cdsButton=\"secondary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n\n <span>{{ 'interface.back' | translate }}</span>\n </button>\n\n <button\n [disabled]=\"!actionsObs.changesPending\"\n cdsButton=\"primary\"\n (click)=\"\n !actionsObs.creatingNewProcess\n ? deployChanges(actionsObs.isReadOnlyProcess)\n : deployNewProcessDefinition()\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n {{ 'processManagement.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"actionsObs.loading\"\n (selected)=\"export(actionsObs.isReadOnlyProcess)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:24px}.bpmn__container{position:relative;background-color:var(--cds-layer);width:100%}.bpmn__modeler{width:100%;height:100%;flex-direction:row;padding:1px;box-sizing:border-box;outline:1px solid var(--cds-border-subtle);outline-offset:-1px}.bpmn__modeler ::ng-deep .djs-container>svg{outline:none!important}.bpmn__modeler-canvas{width:100%}.bpmn__modeler-panel{width:481px;padding-left:1px;box-shadow:inset 1px 0 0 0 var(--cds-border-subtle);box-sizing:border-box}.bpmn__loading{width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:var(--cds-background-selected)}.page-header-actions{display:flex;width:100%;justify-content:space-between}.page-header-actions__left-container{display:flex;gap:24px;align-items:flex-end}.page-header-actions__tags{display:flex;gap:8px;align-items:flex-end}.page-header-actions__version-dropdown{width:150px}.page-header-actions__buttons{display:flex;gap:16px;align-items:center}.page-header-actions__buttons cds-toggle{height:24px}.page-header-actions__buttons ::ng-deep .cds--toggle__label-text{display:none}.valtimo-process-builder__header{display:flex;justify-content:space-between}.valtimo-process-builder__actions>*:not(:last-child){margin-right:8px}::ng-deep .process-link-properties-panel{padding:8px 12px 16px;width:100%;display:flex;flex-direction:column;gap:16px}::ng-deep .process-link-properties-panel__buttons,::ng-deep .process-link-properties-panel__header{width:100%;display:flex;gap:16px}::ng-deep .process-link-properties-panel__header{align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--cds-border-subtle-00);padding-bottom:8px;padding-left:8px;padding-right:8px}::ng-deep .process-link-properties-panel__title{color:var(--cds-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;margin:auto 0}::ng-deep .process-link-properties-panel__title-container{display:flex;flex-direction:column;gap:4px}::ng-deep .process-link-properties-panel__title-container :last-child{color:var(--cds-text-helper);font-style:italic}::ng-deep .process-link-properties-panel .cds--tag{margin:0}::ng-deep .process-link-properties-panel .cds--btn{flex-shrink:1;width:100%;display:flex;align-items:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "directive", type: FitPageDirective, selector: "[fitPage]", inputs: ["spaceAdjustment", "disabled", "disableOverflow"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2$2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SelectModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i2$2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "ngmodule", type: ProcessLinkModule }, { kind: "component", type: i5.ProcessLinkModalComponent, selector: "valtimo-process-link-modal" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$2.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i2$2.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i2$2.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "component", type: i2$2.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }] }); }
1495
+ ], viewQueries: [{ propertyName: "modelerElementRef", first: true, predicate: ["modeler"], descendants: true }, { propertyName: "modelerPanelElementRef", first: true, predicate: ["modelerPanel"], descendants: true }, { propertyName: "viewerElementRef", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "viewerPanelElementRef", first: true, predicate: ["viewerPanel"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n fitPage\n [spaceAdjustment]=\"$spaceAdjustment()\"\n [disableOverflow]=\"true\"\n *ngIf=\"{\n processDefinitionVersions: processDefinitionVersions$ | async,\n selectedProcessDefinitionXml: selectedProcessDefinitionXml$ | async,\n loading: loading$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n data-carbon-theme=\"g10\"\n class=\"bpmn__container\"\n>\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'none' : 'flex'\"\n >\n <div class=\"bpmn__modeler-canvas\" #modeler></div>\n\n <div class=\"bpmn__modeler-panel\" #modelerPanel></div>\n </div>\n\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'flex' : 'none'\"\n >\n <div class=\"bpmn__modeler-canvas\" #viewer></div>\n\n <div class=\"bpmn__modeler-panel\" #viewerPanel></div>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"page-header-actions\"\n *ngIf=\"{\n processDefinitionVersionsListItems: processDefinitionVersionsListItems$ | async,\n loading: loading$ | async,\n changesPending: changesPending$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n isSystemProcess: isSystemProcess$ | async,\n compactMode: compactMode$ | async,\n creatingNewProcess: creatingNewProcess$ | async,\n context: context$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n canInitializeDocument: canInitializeDocument$ | async,\n startableByUser: startableByUser$ | async,\n updatingProcessDefinitionCaseDefinition: updatingProcessDefinitionCaseDefinition$ | async,\n } as actionsObs\"\n >\n <div class=\"page-header-actions__left-container\">\n <cds-dropdown\n *ngIf=\"!actionsObs.creatingNewProcess && actionsObs?.context === 'independent'\"\n class=\"page-header-actions__version-dropdown\"\n (selected)=\"selectedVersionChange($event)\"\n [disabled]=\"\n actionsObs.loading ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 0 ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 1\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list\n [items]=\"actionsObs.processDefinitionVersionsListItems || []\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"page-header-actions__tags\">\n <cds-tag\n *ngIf=\"actionsObs.isReadOnlyProcess || !actionsObs.hasEditPermissions\"\n type=\"blue\"\n >{{ 'processManagement.readOnly' | translate }}</cds-tag\n >\n\n <cds-tag *ngIf=\"actionsObs.isSystemProcess\" type=\"red\">{{\n 'processManagement.systemProcess' | translate\n }}</cds-tag>\n </div>\n </div>\n\n <div class=\"page-header-actions__buttons\">\n @if (actionsObs.context === 'case') {\n <cds-tooltip\n [description]=\"'processCaseConnection.processCreatesCaseTooltip' | translate\"\n >\n <cds-toggle\n [onText]=\"'processManagement.canInitializeDocument' | translate\"\n [offText]=\"'processManagement.canInitializeDocument' | translate\"\n [checked]=\"actionsObs.canInitializeDocument\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('canInitializeDocument', $event)\"\n ></cds-toggle>\n </cds-tooltip>\n\n <cds-tooltip\n [description]=\"'processCaseConnection.startableWithinCaseTooltip' | translate\"\n >\n <cds-toggle\n [onText]=\"'processManagement.startableByUser' | translate\"\n [offText]=\"'processManagement.startableByUser' | translate\"\n [checked]=\"actionsObs.startableByUser\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('startableByUser', $event)\"\n ></cds-toggle\n ></cds-tooltip>\n }\n\n <button\n *ngIf=\"actionsObs.context === 'case'\"\n cdsButton=\"secondary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n\n <span>{{ 'interface.back' | translate }}</span>\n </button>\n\n <button\n [disabled]=\"!actionsObs.changesPending\"\n cdsButton=\"primary\"\n (click)=\"\n !actionsObs.creatingNewProcess\n ? deployChanges(actionsObs.isReadOnlyProcess)\n : deployNewProcessDefinition()\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n {{ 'processManagement.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"actionsObs.loading\"\n (selected)=\"export(actionsObs.isReadOnlyProcess)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:24px}.bpmn__container{position:relative;background-color:var(--cds-layer);width:100%}.bpmn__modeler{width:100%;height:100%;flex-direction:row;padding:1px;box-sizing:border-box;outline:1px solid var(--cds-border-subtle);outline-offset:-1px}.bpmn__modeler ::ng-deep .djs-container>svg{outline:none!important}.bpmn__modeler-canvas{width:100%}.bpmn__modeler-panel{width:481px;padding-left:1px;box-shadow:inset 1px 0 0 0 var(--cds-border-subtle);box-sizing:border-box}.bpmn__loading{width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:var(--cds-background-selected)}.page-header-actions{display:flex;width:100%;justify-content:space-between}.page-header-actions__left-container{display:flex;gap:24px;align-items:flex-end}.page-header-actions__tags{display:flex;gap:8px;align-items:flex-end}.page-header-actions__version-dropdown{width:150px}.page-header-actions__buttons{display:flex;gap:16px;align-items:center}.page-header-actions__buttons cds-toggle{height:24px}.page-header-actions__buttons ::ng-deep .cds--toggle__label-text{display:none}.valtimo-process-builder__header{display:flex;justify-content:space-between}.valtimo-process-builder__actions>*:not(:last-child){margin-right:8px}::ng-deep .process-link-properties-panel{padding:8px 12px 16px;width:100%;display:flex;flex-direction:column;gap:16px}::ng-deep .process-link-properties-panel__buttons,::ng-deep .process-link-properties-panel__header{width:100%;display:flex;gap:16px}::ng-deep .process-link-properties-panel__header{align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--cds-border-subtle-00);padding-bottom:8px;padding-left:8px;padding-right:8px}::ng-deep .process-link-properties-panel__title{color:var(--cds-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;margin:auto 0}::ng-deep .process-link-properties-panel__title-container{display:flex;flex-direction:column;gap:4px}::ng-deep .process-link-properties-panel__title-container :last-child{color:var(--cds-text-helper);font-style:italic}::ng-deep .process-link-properties-panel .cds--tag{margin:0}::ng-deep .process-link-properties-panel .cds--btn{flex-shrink:1;width:100%;display:flex;align-items:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "directive", type: FitPageDirective, selector: "[fitPage]", inputs: ["spaceAdjustment", "fitPageDisabled", "disableOverflow"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2$2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SelectModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i2$2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "ngmodule", type: ProcessLinkModule }, { kind: "component", type: i5.ProcessLinkModalComponent, selector: "valtimo-process-link-modal" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$2.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i2$2.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i2$2.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "component", type: i2$2.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }] }); }
1276
1496
  }
1277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementBuilderComponent, decorators: [{
1497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementBuilderComponent, decorators: [{
1278
1498
  type: Component,
1279
1499
  args: [{ selector: 'valtimo-process-management-builder', standalone: true, imports: [
1280
1500
  CommonModule,
@@ -1299,7 +1519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1299
1519
  ProcessLinkStepService,
1300
1520
  ProcessLinkButtonService,
1301
1521
  ], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n fitPage\n [spaceAdjustment]=\"$spaceAdjustment()\"\n [disableOverflow]=\"true\"\n *ngIf=\"{\n processDefinitionVersions: processDefinitionVersions$ | async,\n selectedProcessDefinitionXml: selectedProcessDefinitionXml$ | async,\n loading: loading$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n } as obs\"\n data-carbon-theme=\"g10\"\n class=\"bpmn__container\"\n>\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'none' : 'flex'\"\n >\n <div class=\"bpmn__modeler-canvas\" #modeler></div>\n\n <div class=\"bpmn__modeler-panel\" #modelerPanel></div>\n </div>\n\n <div\n class=\"bpmn__modeler\"\n [style.display]=\"obs.isReadOnlyProcess || !obs.hasEditPermissions ? 'flex' : 'none'\"\n >\n <div class=\"bpmn__modeler-canvas\" #viewer></div>\n\n <div class=\"bpmn__modeler-panel\" #viewerPanel></div>\n </div>\n</div>\n\n<valtimo-process-link-modal></valtimo-process-link-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"page-header-actions\"\n *ngIf=\"{\n processDefinitionVersionsListItems: processDefinitionVersionsListItems$ | async,\n loading: loading$ | async,\n changesPending: changesPending$ | async,\n isReadOnlyProcess: isReadOnlyProcess$ | async,\n isSystemProcess: isSystemProcess$ | async,\n compactMode: compactMode$ | async,\n creatingNewProcess: creatingNewProcess$ | async,\n context: context$ | async,\n hasEditPermissions: hasEditPermissions$ | async,\n canInitializeDocument: canInitializeDocument$ | async,\n startableByUser: startableByUser$ | async,\n updatingProcessDefinitionCaseDefinition: updatingProcessDefinitionCaseDefinition$ | async,\n } as actionsObs\"\n >\n <div class=\"page-header-actions__left-container\">\n <cds-dropdown\n *ngIf=\"!actionsObs.creatingNewProcess && actionsObs?.context === 'independent'\"\n class=\"page-header-actions__version-dropdown\"\n (selected)=\"selectedVersionChange($event)\"\n [disabled]=\"\n actionsObs.loading ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 0 ||\n (actionsObs.processDefinitionVersionsListItems || []).length === 1\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n <cds-dropdown-list\n [items]=\"actionsObs.processDefinitionVersionsListItems || []\"\n ></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"page-header-actions__tags\">\n <cds-tag\n *ngIf=\"actionsObs.isReadOnlyProcess || !actionsObs.hasEditPermissions\"\n type=\"blue\"\n >{{ 'processManagement.readOnly' | translate }}</cds-tag\n >\n\n <cds-tag *ngIf=\"actionsObs.isSystemProcess\" type=\"red\">{{\n 'processManagement.systemProcess' | translate\n }}</cds-tag>\n </div>\n </div>\n\n <div class=\"page-header-actions__buttons\">\n @if (actionsObs.context === 'case') {\n <cds-tooltip\n [description]=\"'processCaseConnection.processCreatesCaseTooltip' | translate\"\n >\n <cds-toggle\n [onText]=\"'processManagement.canInitializeDocument' | translate\"\n [offText]=\"'processManagement.canInitializeDocument' | translate\"\n [checked]=\"actionsObs.canInitializeDocument\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('canInitializeDocument', $event)\"\n ></cds-toggle>\n </cds-tooltip>\n\n <cds-tooltip\n [description]=\"'processCaseConnection.startableWithinCaseTooltip' | translate\"\n >\n <cds-toggle\n [onText]=\"'processManagement.startableByUser' | translate\"\n [offText]=\"'processManagement.startableByUser' | translate\"\n [checked]=\"actionsObs.startableByUser\"\n [disabled]=\"\n actionsObs.loading ||\n actionsObs.updatingProcessDefinitionCaseDefinition ||\n !actionsObs.hasEditPermissions\n \"\n (checkedChange)=\"onProcessToggleChange('startableByUser', $event)\"\n ></cds-toggle\n ></cds-tooltip>\n }\n\n <button\n *ngIf=\"actionsObs.context === 'case'\"\n cdsButton=\"secondary\"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n (click)=\"navigateBack(null)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n\n <span>{{ 'interface.back' | translate }}</span>\n </button>\n\n <button\n [disabled]=\"!actionsObs.changesPending\"\n cdsButton=\"primary\"\n (click)=\"\n !actionsObs.creatingNewProcess\n ? deployChanges(actionsObs.isReadOnlyProcess)\n : deployNewProcessDefinition()\n \"\n [size]=\"actionsObs.compactMode ? 'sm' : 'md'\"\n >\n {{ 'processManagement.deploy' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option\n [disabled]=\"actionsObs.loading\"\n (selected)=\"export(actionsObs.isReadOnlyProcess)\"\n >{{ 'interface.export' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:24px}.bpmn__container{position:relative;background-color:var(--cds-layer);width:100%}.bpmn__modeler{width:100%;height:100%;flex-direction:row;padding:1px;box-sizing:border-box;outline:1px solid var(--cds-border-subtle);outline-offset:-1px}.bpmn__modeler ::ng-deep .djs-container>svg{outline:none!important}.bpmn__modeler-canvas{width:100%}.bpmn__modeler-panel{width:481px;padding-left:1px;box-shadow:inset 1px 0 0 0 var(--cds-border-subtle);box-sizing:border-box}.bpmn__loading{width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:var(--cds-background-selected)}.page-header-actions{display:flex;width:100%;justify-content:space-between}.page-header-actions__left-container{display:flex;gap:24px;align-items:flex-end}.page-header-actions__tags{display:flex;gap:8px;align-items:flex-end}.page-header-actions__version-dropdown{width:150px}.page-header-actions__buttons{display:flex;gap:16px;align-items:center}.page-header-actions__buttons cds-toggle{height:24px}.page-header-actions__buttons ::ng-deep .cds--toggle__label-text{display:none}.valtimo-process-builder__header{display:flex;justify-content:space-between}.valtimo-process-builder__actions>*:not(:last-child){margin-right:8px}::ng-deep .process-link-properties-panel{padding:8px 12px 16px;width:100%;display:flex;flex-direction:column;gap:16px}::ng-deep .process-link-properties-panel__buttons,::ng-deep .process-link-properties-panel__header{width:100%;display:flex;gap:16px}::ng-deep .process-link-properties-panel__header{align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--cds-border-subtle-00);padding-bottom:8px;padding-left:8px;padding-right:8px}::ng-deep .process-link-properties-panel__title{color:var(--cds-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;margin:auto 0}::ng-deep .process-link-properties-panel__title-container{display:flex;flex-direction:column;gap:4px}::ng-deep .process-link-properties-panel__title-container :last-child{color:var(--cds-text-helper);font-style:italic}::ng-deep .process-link-properties-panel .cds--tag{margin:0}::ng-deep .process-link-properties-panel .cds--btn{flex-shrink:1;width:100%;display:flex;align-items:center}\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"] }]
1302
- }], ctorParameters: () => [{ type: i1$1.BreadcrumbService }, { type: i2$2.IconService }, { type: i3.NGXLogger }, { type: i1$1.ModalService }, { type: i2$1.GlobalNotificationService }, { type: i1$1.PageHeaderService }, { type: i1$1.PageTitleService }, { type: i5.ProcessLinkService }, { type: i5.ProcessLinkStateService }, { type: ProcessManagementEditorService }, { type: ProcessManagementService }, { type: i7.ProcessService }, { type: i8.ActivatedRoute }, { type: i8.Router }, { type: i4.TranslateService }, { type: i10.PluginTranslationService }, { type: i2$1.EditPermissionsService }], propDecorators: { modelerElementRef: [{
1522
+ }], ctorParameters: () => [{ type: i1$1.BreadcrumbService }, { type: i2$2.IconService }, { type: i3.NGXLogger }, { type: i1$1.ModalService }, { type: i2$1.GlobalNotificationService }, { type: i1$1.PageHeaderService }, { type: i1$1.PageTitleService }, { type: i5.ProcessLinkService }, { type: i5.ProcessLinkStateService }, { type: ProcessManagementEditorService }, { type: ProcessManagementService }, { type: i7.ProcessService }, { type: i8.ActivatedRoute }, { type: i8.Router }, { type: i4.TranslateService }, { type: i10.PluginTranslationService }, { type: i2$1.EditPermissionsService }, { type: i5.ProcessLinkBuildingBlockApiService }], propDecorators: { modelerElementRef: [{
1303
1523
  type: ViewChild,
1304
1524
  args: ['modeler', { static: false }]
1305
1525
  }], modelerPanelElementRef: [{
@@ -1352,7 +1572,7 @@ class ProcessManagementListComponent {
1352
1572
  getCaseManagementRouteParams(this.route),
1353
1573
  this.context$,
1354
1574
  ]).pipe(switchMap(([params, context]) => {
1355
- return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params?.caseDefinitionKey, params?.caseDefinitionVersionTag, context);
1575
+ return this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context);
1356
1576
  }));
1357
1577
  this.FIELDS = [
1358
1578
  { key: 'processDefinition.name', label: 'processManagement.name' },
@@ -1408,10 +1628,10 @@ class ProcessManagementListComponent {
1408
1628
  this.processToDelete$.next(process.processDefinition);
1409
1629
  this.showDeleteModal$.next(true);
1410
1630
  }
1411
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementListComponent, deps: [{ token: i2$2.IconService }, { token: i2$1.GlobalNotificationService }, { token: ProcessManagementService }, { token: ProcessManagementStateService }, { token: i4.TranslateService }, { token: i2$1.EnvironmentService }, { token: i8.ActivatedRoute }, { token: i2$1.EditPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
1412
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: ProcessManagementListComponent, isStandalone: true, selector: "valtimo-process-management-list", outputs: { processSelected: "processSelected" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [showActionItems]=\"hasEditPermissions$ | async\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"processDefinitions$ | async\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"editProcessDefinition($event)\"\n>\n <ng-container carbonToolbarContent>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"openModal()\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <ng-container [ngTemplateOutlet]=\"createProcess\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"createProcess\"\n [title]=\"'processManagement.noResults.title' | translate\"\n [description]=\"'processManagement.noResults.' + $context() + 'Description' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [outputOnConfirm]=\"processToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #createProcess>\n <button *ngIf=\"hasEditPermissions$ | async\" cdsButton=\"primary\" (click)=\"onCreateProcess()\">\n {{ 'processManagement.createProcess' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1631
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementListComponent, deps: [{ token: i2$2.IconService }, { token: i2$1.GlobalNotificationService }, { token: ProcessManagementService }, { token: ProcessManagementStateService }, { token: i4.TranslateService }, { token: i2$1.EnvironmentService }, { token: i8.ActivatedRoute }, { token: i2$1.EditPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
1632
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: ProcessManagementListComponent, isStandalone: true, selector: "valtimo-process-management-list", outputs: { processSelected: "processSelected" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [showActionItems]=\"hasEditPermissions$ | async\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"processDefinitions$ | async\"\n [loading]=\"loading$ | async\"\n (rowClicked)=\"editProcessDefinition($event)\"\n>\n <ng-container carbonToolbarContent>\n <button\n *ngIf=\"hasEditPermissions$ | async\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"openModal()\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <ng-container [ngTemplateOutlet]=\"createProcess\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"createProcess\"\n [title]=\"'processManagement.noResults.title' | translate\"\n [description]=\"'processManagement.noResults.' + $context() + 'Description' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [outputOnConfirm]=\"processToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #createProcess>\n <button *ngIf=\"hasEditPermissions$ | async\" cdsButton=\"primary\" (click)=\"onCreateProcess()\">\n {{ 'processManagement.createProcess' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1413
1633
  }
1414
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementListComponent, decorators: [{
1634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementListComponent, decorators: [{
1415
1635
  type: Component,
1416
1636
  args: [{ selector: 'valtimo-process-management-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
1417
1637
  CommonModule,
@@ -1482,10 +1702,10 @@ class ProcessManagementUploadComponent {
1482
1702
  },
1483
1703
  });
1484
1704
  }
1485
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementUploadComponent, deps: [{ token: i1$2.FormBuilder }, { token: i2$1.GlobalNotificationService }, { token: ProcessManagementService }, { token: ProcessManagementStateService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
1486
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: ProcessManagementUploadComponent, isStandalone: true, selector: "valtimo-process-management-upload", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"modalOpen$ | async\" size=\"sm\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'processManagement.upload.modalTitle' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"ACCEPTED_FILES\"\n [buttonText]=\"'processManagement.upload.buttonText' | translate\"\n [description]=\"'processManagement.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'processManagement.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n >\n </cds-file-uploader>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"(fileSelected$ | async) === false\"\n (click)=\"uploadProcessBpmn()\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i2$2.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2$2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2$2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2$2.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2$2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2$2.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$2.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1705
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementUploadComponent, deps: [{ token: i1$2.FormBuilder }, { token: i2$1.GlobalNotificationService }, { token: ProcessManagementService }, { token: ProcessManagementStateService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
1706
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: ProcessManagementUploadComponent, isStandalone: true, selector: "valtimo-process-management-upload", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"modalOpen$ | async\" size=\"sm\" (close)=\"closeModal()\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'processManagement.upload.modalTitle' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"ACCEPTED_FILES\"\n [buttonText]=\"'processManagement.upload.buttonText' | translate\"\n [description]=\"'processManagement.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'processManagement.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n >\n </cds-file-uploader>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"(fileSelected$ | async) === false\"\n (click)=\"uploadProcessBpmn()\"\n >\n {{ 'interface.upload' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i2$2.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2$2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2$2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2$2.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2$2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2$2.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$2.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1487
1707
  }
1488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementUploadComponent, decorators: [{
1708
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementUploadComponent, decorators: [{
1489
1709
  type: Component,
1490
1710
  args: [{ selector: 'valtimo-process-management-upload', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
1491
1711
  CommonModule,
@@ -1545,10 +1765,10 @@ class ProcessManagementComponent {
1545
1765
  this.paramsAreSet$.next(true);
1546
1766
  }));
1547
1767
  }
1548
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementComponent, deps: [{ token: ProcessManagementService }, { token: i8.ActivatedRoute }, { token: i8.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: ProcessManagementComponent, isStandalone: true, selector: "valtimo-process-management", providers: [TranslateService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n paramsAreSet: paramsAreSet$ | async,\n } as obs\"\n>\n @if (obs.paramsAreSet) {\n <valtimo-process-management-list\n (processSelected)=\"onProcessSelected($event)\"\n ></valtimo-process-management-list>\n\n <valtimo-process-management-upload></valtimo-process-management-upload>\n } @else {\n <cds-loading></cds-loading>\n }\n</ng-container>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: ProcessManagementListComponent, selector: "valtimo-process-management-list", outputs: ["processSelected"] }, { kind: "component", type: ProcessManagementUploadComponent, selector: "valtimo-process-management-upload" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i2$2.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: NotificationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1768
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementComponent, deps: [{ token: ProcessManagementService }, { token: i8.ActivatedRoute }, { token: i8.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1769
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: ProcessManagementComponent, isStandalone: true, selector: "valtimo-process-management", providers: [TranslateService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n paramsAreSet: paramsAreSet$ | async,\n } as obs\"\n>\n @if (obs.paramsAreSet) {\n <valtimo-process-management-list\n (processSelected)=\"onProcessSelected($event)\"\n ></valtimo-process-management-list>\n\n <valtimo-process-management-upload></valtimo-process-management-upload>\n } @else {\n <cds-loading></cds-loading>\n }\n</ng-container>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: ProcessManagementListComponent, selector: "valtimo-process-management-list", outputs: ["processSelected"] }, { kind: "component", type: ProcessManagementUploadComponent, selector: "valtimo-process-management-upload" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i2$2.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: NotificationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1550
1770
  }
1551
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementComponent, decorators: [{
1771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementComponent, decorators: [{
1552
1772
  type: Component,
1553
1773
  args: [{ selector: 'valtimo-process-management', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
1554
1774
  CommonModule,
@@ -1629,11 +1849,11 @@ const routes = [
1629
1849
  },
1630
1850
  ];
1631
1851
  class ProcessManagementRoutingModule {
1632
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1633
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementRoutingModule, imports: [CommonModule, i8.RouterModule], exports: [RouterModule] }); }
1634
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
1852
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1853
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementRoutingModule, imports: [CommonModule, i8.RouterModule], exports: [RouterModule] }); }
1854
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
1635
1855
  }
1636
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementRoutingModule, decorators: [{
1856
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementRoutingModule, decorators: [{
1637
1857
  type: NgModule,
1638
1858
  args: [{
1639
1859
  declarations: [],
@@ -1658,8 +1878,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1658
1878
  * limitations under the License.
1659
1879
  */
1660
1880
  class ProcessManagementModule {
1661
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1662
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementModule, imports: [CommonModule,
1881
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1882
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementModule, imports: [CommonModule,
1663
1883
  ProcessManagementRoutingModule,
1664
1884
  WidgetModule,
1665
1885
  FormsModule,
@@ -1678,7 +1898,7 @@ class ProcessManagementModule {
1678
1898
  ModalModule,
1679
1899
  FileUploaderModule,
1680
1900
  LayerModule] }); }
1681
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementModule, imports: [CommonModule,
1901
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementModule, imports: [CommonModule,
1682
1902
  ProcessManagementRoutingModule,
1683
1903
  WidgetModule,
1684
1904
  FormsModule,
@@ -1698,7 +1918,7 @@ class ProcessManagementModule {
1698
1918
  FileUploaderModule,
1699
1919
  LayerModule] }); }
1700
1920
  }
1701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ProcessManagementModule, decorators: [{
1921
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ProcessManagementModule, decorators: [{
1702
1922
  type: NgModule,
1703
1923
  args: [{
1704
1924
  imports: [