@valtimo/case-management 13.39.0 → 13.41.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.
@@ -12,7 +12,7 @@ import * as i7 from '@valtimo/components';
12
12
  import { WidgetLayout, runAfterCarbonModalClosed, ViewType, CARBON_CONSTANTS, ValuePathSelectorPrefix, SelectModule, MuuriItemComponent, WIDGET_LAYOUT_VALUES, WIDGET_LAYOUT_TRANSLATION_KEYS, ValtimoCdsModalDirective, WidgetLayoutInfoComponent, RenderInPageHeaderDirective, TooltipModule, CarbonListModule, ConfirmationModalModule, WidgetModule, DropzoneModule, ModalModule as ModalModule$1, MultiselectDropdownModule, ParagraphModule, SpinnerModule, InputModule as InputModule$1, FormModule, TooltipIconModule, CarbonMultiInputModule, TableModule, OverflowMenuComponent, OverflowMenuOptionComponent, EditorModule, ValuePathSelectorComponent, EllipsisPipe, MuuriDirectiveModule, ReadOnlyDirective, JsonEditorComponent, AutoKeyInputComponent } from '@valtimo/components';
13
13
  import { FormManagementComponent, FormManagementEditComponent } from '@valtimo/form-management';
14
14
  import * as i2$1 from '@valtimo/shared';
15
- import { BaseApiService, InterceptorSkip, getCaseManagementRouteParams, CASE_MANAGEMENT_TAB_TOKEN, InterceptorSkipHeader, TagColor, getDisplayTypeParametersView, CASE_CONFIGURATION_EXTENSIONS_TOKEN, ROLE_ADMIN, ConfigModule } from '@valtimo/shared';
15
+ import { BaseApiService, InterceptorSkip, getCaseManagementRouteParams, InterceptorSkipHeader, CASE_MANAGEMENT_TAB_TOKEN, TagColor, getDisplayTypeParametersView, CASE_CONFIGURATION_EXTENSIONS_TOKEN, ROLE_ADMIN, ConfigModule } from '@valtimo/shared';
16
16
  import * as i2 from 'carbon-components-angular';
17
17
  import { NotificationModule, Tab, ButtonModule, IconModule, LayerModule, ModalModule, InputModule, TabsModule, ComboBoxModule, ProgressIndicatorModule, LoadingModule, TagModule, DropdownModule, CheckboxModule, LinkModule, DialogModule, FileUploaderModule, ProgressBarModule, ToggleModule, TooltipModule as TooltipModule$1, NumberModule } from 'carbon-components-angular';
18
18
  import * as i2$2 from '@angular/router';
@@ -377,6 +377,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
377
377
  args: [WIDGET_MANAGEMENT_SERVICE]
378
378
  }] }, { type: i2$2.ActivatedRoute }] });
379
379
 
380
+ /*
381
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
382
+ *
383
+ * Licensed under EUPL, Version 1.2 (the "License");
384
+ * you may not use this file except in compliance with the License.
385
+ * You may obtain a copy of the License at
386
+ *
387
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
388
+ *
389
+ * Unless required by applicable law or agreed to in writing, software
390
+ * distributed under the License is distributed on an "AS IS" basis,
391
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
392
+ * See the License for the specific language governing permissions and
393
+ * limitations under the License.
394
+ */
395
+ class CaseManagementService extends BaseApiService {
396
+ constructor(httpClient, configService) {
397
+ super(httpClient, configService);
398
+ this.httpClient = httpClient;
399
+ this.configService = configService;
400
+ }
401
+ getCaseDefinitions(params) {
402
+ return this.httpClient.get(this.getApiUrl('management/v1/case-definition'), { params });
403
+ }
404
+ getCaseDefinitionVersions(caseDefinitionKey) {
405
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version`), {
406
+ params: { size: 100 },
407
+ });
408
+ }
409
+ createDraftVersion(payload) {
410
+ return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/draft`), payload);
411
+ }
412
+ isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag) {
413
+ return this.httpClient
414
+ .get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`), {
415
+ headers: new HttpHeaders().set(InterceptorSkip, '403'),
416
+ })
417
+ .pipe(map(caseDefinition => !caseDefinition.final));
418
+ }
419
+ getGlobalActiveCase(caseDefinitionKey) {
420
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}`), { headers: new HttpHeaders().set(InterceptorSkip, '404') });
421
+ }
422
+ setGlobalActiveCaseVersion(caseDefinitionKey, caseDefinitionVersionTag) {
423
+ return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/active`), {});
424
+ }
425
+ getAllCaseVersions(params) {
426
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition`), { params });
427
+ }
428
+ finalizeDraftCaseVersion(caseDefinitionKey, caseDefinitionVersionTag) {
429
+ return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalize`), {});
430
+ }
431
+ deleteDraftCaseVersion(caseDefinitionKey, caseDefinitionVersionTag) {
432
+ return this.httpClient.delete(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`));
433
+ }
434
+ getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag) {
435
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`), {
436
+ headers: new HttpHeaders().set(InterceptorSkip, '403'),
437
+ });
438
+ }
439
+ previewImport(file) {
440
+ return this.httpClient.post(this.getApiUrl('management/v1/case/import/preview'), file, { headers: new HttpHeaders().set(InterceptorSkip, '400') });
441
+ }
442
+ importDocumentDefinitionZip(file, key, name, pluginConfigurationMappings) {
443
+ let params = new HttpParams();
444
+ if (key)
445
+ params = params.set('key', key);
446
+ if (name)
447
+ params = params.set('name', name);
448
+ if (pluginConfigurationMappings) {
449
+ file.set('pluginConfigurationMappings', new Blob([JSON.stringify(pluginConfigurationMappings)], { type: 'application/json' }));
450
+ }
451
+ return this.httpClient.post(this.getApiUrl('management/v1/case/import'), file, { params });
452
+ }
453
+ exportDocumentDefinition(caseDefinitionKey, caseDefinitionVersionTag = '0') {
454
+ return this.httpClient.get(this.getApiUrl(`management/v1/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/export`), { observe: 'response', responseType: 'blob', headers: InterceptorSkipHeader });
455
+ }
456
+ getConfigurationIssues(caseDefinitionKey, caseDefinitionVersionTag) {
457
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/configuration-issues`));
458
+ }
459
+ getDanglingPluginConfigurations(caseDefinitionKey, caseDefinitionVersionTag) {
460
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/dangling-plugin-configurations`));
461
+ }
462
+ resolvePluginConfigurationMappings(caseDefinitionKey, caseDefinitionVersionTag, mappings) {
463
+ return this.httpClient.put(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/plugin-configuration-mappings`), mappings);
464
+ }
465
+ getCaseDefinitionFinalizationCheck(caseDefinitionKey, caseDefinitionVersionTag) {
466
+ return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalizable`));
467
+ }
468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
469
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementService, providedIn: 'root' }); }
470
+ }
471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementService, decorators: [{
472
+ type: Injectable,
473
+ args: [{
474
+ providedIn: 'root',
475
+ }]
476
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2$1.ConfigService }] });
477
+
380
478
  /*
381
479
  * Copyright 2015-2025 Ritense BV, the Netherlands.
382
480
  *
@@ -414,7 +512,11 @@ class CaseDetailService {
414
512
  get documentDefinitionModel$() {
415
513
  return this._documentDefinitionModel$.pipe(distinctUntilChanged());
416
514
  }
417
- constructor(documentService, pageTitleService) {
515
+ get caseDefinition$() {
516
+ return this._caseDefinition$.asObservable();
517
+ }
518
+ constructor(caseManagementService, documentService, pageTitleService) {
519
+ this.caseManagementService = caseManagementService;
418
520
  this.documentService = documentService;
419
521
  this.pageTitleService = pageTitleService;
420
522
  this._loadingDocumentDefinition$ = new BehaviorSubject(true);
@@ -422,6 +524,7 @@ class CaseDetailService {
422
524
  this._selectedCaseDefinitionVersionTag$ = new BehaviorSubject(null);
423
525
  this._selectedCaseDefinitionKey$ = new BehaviorSubject('');
424
526
  this._documentDefinition$ = new BehaviorSubject(null);
527
+ this._caseDefinition$ = new BehaviorSubject(null);
425
528
  this._documentDefinitionModel$ = this.documentDefinition$.pipe(map((definition) => ({
426
529
  value: JSON.stringify(definition?.schema, null, 2),
427
530
  language: 'json',
@@ -429,6 +532,7 @@ class CaseDetailService {
429
532
  this._reloadDocumentDefinition$ = new Subject();
430
533
  this._subscriptions = new Subscription();
431
534
  this.openDocumentDefinitionSubscription();
535
+ this.openCaseDefinitionSubscription();
432
536
  }
433
537
  ngOnDestroy() {
434
538
  this._subscriptions.unsubscribe();
@@ -454,22 +558,28 @@ class CaseDetailService {
454
558
  this.selectedCaseDefinitionKey$,
455
559
  this._reloadDocumentDefinition$.pipe(startWith(null)),
456
560
  ])
457
- .pipe(tap(() => {
458
- this.pageTitleService.setCustomPageTitleSet(false);
459
- this.setLoadingDocumentDefinition(true);
460
- }), switchMap(([selectedVersionTag, selectedKey]) => this.documentService.getDocumentDefinitionByVersion(selectedKey, selectedVersionTag)), tap(res => {
561
+ .pipe(tap(() => this.setLoadingDocumentDefinition(true)), switchMap(([selectedVersionTag, selectedKey]) => this.documentService.getDocumentDefinitionByVersion(selectedKey, selectedVersionTag)), tap(res => {
461
562
  this._documentDefinition$.next(res);
462
- this.pageTitleService.setCustomPageTitle(res?.schema?.title || '-', true);
463
563
  this.setLoadingDocumentDefinition(false);
464
564
  }))
465
565
  .subscribe());
466
566
  }
467
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailService, deps: [{ token: i1$2.DocumentService }, { token: i7.PageTitleService }], target: i0.ɵɵFactoryTarget.Injectable }); }
567
+ openCaseDefinitionSubscription() {
568
+ this._subscriptions.add(combineLatest([this.selectedCaseDefinitionKey$, this.selectedCaseDefinitionVersionTag$])
569
+ .pipe(tap(() => this.pageTitleService.setCustomPageTitleSet(false)), switchMap(([selectedKey, selectedVersionTag]) => this.caseManagementService
570
+ .getCaseDefinition(selectedKey, selectedVersionTag ?? '')
571
+ .pipe(catchError(() => of(null)))), tap(caseDefinition => {
572
+ this._caseDefinition$.next(caseDefinition);
573
+ this.pageTitleService.setCustomPageTitle(caseDefinition?.name || '-', true);
574
+ }))
575
+ .subscribe());
576
+ }
577
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailService, deps: [{ token: CaseManagementService }, { token: i1$2.DocumentService }, { token: i7.PageTitleService }], target: i0.ɵɵFactoryTarget.Injectable }); }
468
578
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailService }); }
469
579
  }
470
580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailService, decorators: [{
471
581
  type: Injectable
472
- }], ctorParameters: () => [{ type: i1$2.DocumentService }, { type: i7.PageTitleService }] });
582
+ }], ctorParameters: () => [{ type: CaseManagementService }, { type: i1$2.DocumentService }, { type: i7.PageTitleService }] });
473
583
 
474
584
  class TabManagementService {
475
585
  constructor(configService, http) {
@@ -710,104 +820,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
710
820
  }]
711
821
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2$1.ConfigService }] });
712
822
 
713
- /*
714
- * Copyright 2015-2026 Ritense BV, the Netherlands.
715
- *
716
- * Licensed under EUPL, Version 1.2 (the "License");
717
- * you may not use this file except in compliance with the License.
718
- * You may obtain a copy of the License at
719
- *
720
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
721
- *
722
- * Unless required by applicable law or agreed to in writing, software
723
- * distributed under the License is distributed on an "AS IS" basis,
724
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
725
- * See the License for the specific language governing permissions and
726
- * limitations under the License.
727
- */
728
- class CaseManagementService extends BaseApiService {
729
- constructor(httpClient, configService) {
730
- super(httpClient, configService);
731
- this.httpClient = httpClient;
732
- this.configService = configService;
733
- }
734
- getCaseDefinitions(params) {
735
- return this.httpClient.get(this.getApiUrl('management/v1/case-definition'), { params });
736
- }
737
- getCaseDefinitionVersions(caseDefinitionKey) {
738
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version`), {
739
- params: { size: 100 },
740
- });
741
- }
742
- createDraftVersion(payload) {
743
- return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/draft`), payload);
744
- }
745
- isDraftVersion(caseDefinitionKey, caseDefinitionVersionTag) {
746
- return this.httpClient
747
- .get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`), {
748
- headers: new HttpHeaders().set(InterceptorSkip, '403'),
749
- })
750
- .pipe(map(caseDefinition => !caseDefinition.final));
751
- }
752
- getGlobalActiveCase(caseDefinitionKey) {
753
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}`), { headers: new HttpHeaders().set(InterceptorSkip, '404') });
754
- }
755
- setGlobalActiveCaseVersion(caseDefinitionKey, caseDefinitionVersionTag) {
756
- return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/active`), {});
757
- }
758
- getAllCaseVersions(params) {
759
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition`), { params });
760
- }
761
- finalizeDraftCaseVersion(caseDefinitionKey, caseDefinitionVersionTag) {
762
- return this.httpClient.post(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalize`), {});
763
- }
764
- deleteDraftCaseVersion(caseDefinitionKey, caseDefinitionVersionTag) {
765
- return this.httpClient.delete(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`));
766
- }
767
- getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag) {
768
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}`), {
769
- headers: new HttpHeaders().set(InterceptorSkip, '403'),
770
- });
771
- }
772
- previewImport(file) {
773
- return this.httpClient.post(this.getApiUrl('management/v1/case/import/preview'), file, { headers: new HttpHeaders().set(InterceptorSkip, '400') });
774
- }
775
- importDocumentDefinitionZip(file, key, name, pluginConfigurationMappings) {
776
- let params = new HttpParams();
777
- if (key)
778
- params = params.set('key', key);
779
- if (name)
780
- params = params.set('name', name);
781
- if (pluginConfigurationMappings) {
782
- file.set('pluginConfigurationMappings', new Blob([JSON.stringify(pluginConfigurationMappings)], { type: 'application/json' }));
783
- }
784
- return this.httpClient.post(this.getApiUrl('management/v1/case/import'), file, { params });
785
- }
786
- exportDocumentDefinition(caseDefinitionKey, caseDefinitionVersionTag = '0') {
787
- return this.httpClient.get(this.getApiUrl(`management/v1/case/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/export`), { observe: 'response', responseType: 'blob', headers: InterceptorSkipHeader });
788
- }
789
- getConfigurationIssues(caseDefinitionKey, caseDefinitionVersionTag) {
790
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/configuration-issues`));
791
- }
792
- getDanglingPluginConfigurations(caseDefinitionKey, caseDefinitionVersionTag) {
793
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/dangling-plugin-configurations`));
794
- }
795
- resolvePluginConfigurationMappings(caseDefinitionKey, caseDefinitionVersionTag, mappings) {
796
- return this.httpClient.put(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/plugin-configuration-mappings`), mappings);
797
- }
798
- getCaseDefinitionFinalizationCheck(caseDefinitionKey, caseDefinitionVersionTag) {
799
- return this.httpClient.get(this.getApiUrl(`management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/finalizable`));
800
- }
801
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
802
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementService, providedIn: 'root' }); }
803
- }
804
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementService, decorators: [{
805
- type: Injectable,
806
- args: [{
807
- providedIn: 'root',
808
- }]
809
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2$1.ConfigService }] });
810
-
811
823
  class StartableItemApiService extends BaseApiService {
812
824
  constructor(configService, httpClient) {
813
825
  super(httpClient, configService);
@@ -3539,13 +3551,13 @@ class CaseManagementDeploymentComponent {
3539
3551
  return (globalActiveCase?.caseDefinitionKey === caseDefinitionKey &&
3540
3552
  globalActiveCase?.caseDefinitionVersionTag === caseDefinitionVersionTag);
3541
3553
  }));
3542
- this._caseDefinitionTitle$ = this.globalActiveCase$.pipe(map(result => result?.name ?? ''));
3543
3554
  this.caseDefinition$ = combineLatest([
3544
3555
  this.caseDefinitionKey$,
3545
3556
  this.caseDefinitionVersionTag$,
3546
3557
  ]).pipe(switchMap(([caseDefinitionKey, caseDefinitionVersionTag]) => this.caseManagementService.getCaseDefinition(caseDefinitionKey, caseDefinitionVersionTag)), tap$1(caseDefinition => {
3547
3558
  this.hasConflictingVersions$.next(!!caseDefinition.conflictingVersions);
3548
- }));
3559
+ }), shareReplay(1));
3560
+ this._caseDefinitionTitle$ = this.caseDefinition$.pipe(map(caseDefinition => caseDefinition?.name ?? ''));
3549
3561
  this.isDraftVersion$ = combineLatest([
3550
3562
  this.caseDefinitionKey$,
3551
3563
  this.caseDefinitionVersionTag$,
@@ -3628,6 +3640,7 @@ class CaseManagementDeploymentComponent {
3628
3640
  }
3629
3641
  ngOnDestroy() {
3630
3642
  this._subscriptions.unsubscribe();
3643
+ this.breadcrumbService.clearThirdBreadcrumb();
3631
3644
  }
3632
3645
  ngAfterViewInit() {
3633
3646
  this.initBreadcrumbs();
@@ -3953,12 +3966,13 @@ class CaseManagementDetailActionsComponent {
3953
3966
  set caseDefinitionKey(value) {
3954
3967
  this.caseDetailService.setSelectedCaseDefinitionKey(value);
3955
3968
  }
3956
- constructor(document, caseManagementService, caseDetailService, notificationService, iconService, pageHeaderService, route, router, translateService, configurationIssueService) {
3969
+ constructor(document, caseManagementService, caseDetailService, notificationService, iconService, menuService, pageHeaderService, route, router, translateService, configurationIssueService) {
3957
3970
  this.document = document;
3958
3971
  this.caseManagementService = caseManagementService;
3959
3972
  this.caseDetailService = caseDetailService;
3960
3973
  this.notificationService = notificationService;
3961
3974
  this.iconService = iconService;
3975
+ this.menuService = menuService;
3962
3976
  this.pageHeaderService = pageHeaderService;
3963
3977
  this.route = route;
3964
3978
  this.router = router;
@@ -3972,10 +3986,14 @@ class CaseManagementDetailActionsComponent {
3972
3986
  this.exporting$ = new BehaviorSubject(false);
3973
3987
  this.selectedVersionNumber$ = this.caseDetailService.selectedCaseDefinitionVersionTag$;
3974
3988
  this.selectedVersion$ = new BehaviorSubject('');
3989
+ this._refreshGlobalActiveCase$ = new BehaviorSubject(null);
3975
3990
  this.params$ = getCaseManagementRouteParams(this.route).pipe(tap(({ caseDefinitionVersionTag }) => this.selectedVersion$.next(caseDefinitionVersionTag)));
3976
3991
  this.caseDefinitionKey$ = this.params$.pipe(map(params => params.caseDefinitionKey || ''));
3977
3992
  this.caseDefinitionVersionTag$ = this.params$.pipe(map(params => params.caseDefinitionVersionTag || ''));
3978
- this.globalActiveVersion$ = this.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => this.caseManagementService.getGlobalActiveCase(caseDefinitionKey).pipe(map(result => result.caseDefinitionVersionTag), catchError(() => of(null)))));
3993
+ this.globalActiveVersion$ = combineLatest([
3994
+ this.caseDefinitionKey$,
3995
+ this._refreshGlobalActiveCase$,
3996
+ ]).pipe(switchMap(([caseDefinitionKey]) => this.caseManagementService.getGlobalActiveCase(caseDefinitionKey).pipe(map(result => result.caseDefinitionVersionTag), catchError(() => of(null)))));
3979
3997
  this.selectedVersionIsGloballyActive$ = combineLatest([
3980
3998
  this.selectedVersion$,
3981
3999
  this.globalActiveVersion$,
@@ -3989,7 +4007,10 @@ class CaseManagementDetailActionsComponent {
3989
4007
  this.loadingVersion$ = new BehaviorSubject(true);
3990
4008
  this.showGlobalVersionModal$ = new BehaviorSubject(false);
3991
4009
  this.showGlobalVersionConfirmationModal$ = new BehaviorSubject(false);
3992
- this._globalActiveCase$ = this.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => this.caseManagementService
4010
+ this._globalActiveCase$ = combineLatest([
4011
+ this.caseDefinitionKey$,
4012
+ this._refreshGlobalActiveCase$,
4013
+ ]).pipe(switchMap(([caseDefinitionKey]) => this.caseManagementService
3993
4014
  .getGlobalActiveCase(caseDefinitionKey)
3994
4015
  .pipe(catchError(() => of(null)))));
3995
4016
  this._caseDefinitionTitle$ = this._globalActiveCase$.pipe(map(result => result?.name ?? ''));
@@ -4123,6 +4144,8 @@ class CaseManagementDetailActionsComponent {
4123
4144
  .subscribe({
4124
4145
  next: response => {
4125
4146
  this.closeCurrentNotification();
4147
+ this._refreshGlobalActiveCase$.next(null);
4148
+ this.menuService.reload();
4126
4149
  this._currentNotification = this.notificationService.showNotification({
4127
4150
  type: 'success',
4128
4151
  title: this.translateService.instant('caseManagement.setGlobalActiveVersionSuccessTitle'),
@@ -4187,7 +4210,7 @@ class CaseManagementDetailActionsComponent {
4187
4210
  relativeTo: this.route,
4188
4211
  });
4189
4212
  }
4190
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementDetailActionsComponent, deps: [{ token: DOCUMENT }, { token: CaseManagementService }, { token: CaseDetailService }, { token: i2$1.GlobalNotificationService }, { token: i2.IconService }, { token: i7.PageHeaderService }, { token: i2$2.ActivatedRoute }, { token: i2$2.Router }, { token: i3.TranslateService }, { token: i2$1.ConfigurationIssueService }], target: i0.ɵɵFactoryTarget.Component }); }
4213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementDetailActionsComponent, deps: [{ token: DOCUMENT }, { token: CaseManagementService }, { token: CaseDetailService }, { token: i2$1.GlobalNotificationService }, { token: i2.IconService }, { token: i7.MenuService }, { token: i7.PageHeaderService }, { token: i2$2.ActivatedRoute }, { token: i2$2.Router }, { token: i3.TranslateService }, { token: i2$1.ConfigurationIssueService }], target: i0.ɵɵFactoryTarget.Component }); }
4191
4214
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: CaseManagementDetailActionsComponent, isStandalone: false, selector: "valtimo-case-management-detail-actions", inputs: { documentDefinitionTitle: "documentDefinitionTitle", caseDefinitionKey: "caseDefinitionKey" }, outputs: { versionSet: "versionSet" }, viewQueries: [{ propertyName: "_exportMessageTemplateRef", first: true, predicate: ["exportingMessage"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"case-actions\"\n *ngIf=\"{\n exporting: exporting$ | async,\n loadingVersion: loadingVersion$ | async,\n versionItems: versionSelectorItems$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n selectedDocumentDefinitionIsReadOnly: selectedDocumentDefinitionIsReadOnly$ | async,\n selectedVersionIsGloballyActive: selectedVersionIsGloballyActive$ | async,\n setActiveDisabled: setActiveDisabled$ | async,\n hasUnresolvedConfigurationIssues: hasUnresolvedConfigurationIssues$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n>\n <div class=\"case-metadata\">\n <ng-container *ngTemplateOutlet=\"versionSelection; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"readOnly; context: {obs: obs}\"></ng-container>\n </div>\n\n <div class=\"case-buttons\">\n <ng-container *ngTemplateOutlet=\"deploymentButton; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"exportMenu; context: {obs: obs}\"></ng-container>\n </div>\n</div>\n\n<ng-template #versionSelection let-obs=\"obs\">\n <cds-dropdown\n class=\"version-selector\"\n [attr.data-test-id]=\"testIds.versionSelectDropdown\"\n selectionFeedback=\"fixed\"\n [displayValue]=\"versionItemTemplate\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n [appendInline]=\"false\"\n [disabled]=\"!obs?.versionItems?.length || obs?.versionItems?.length === 1\"\n [skeleton]=\"obs.loadingVersion\"\n (selected)=\"selectVersion($event)\"\n >\n <cds-dropdown-list\n [items]=\"obs?.versionItems || []\"\n [listTpl]=\"versionItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</ng-template>\n\n<ng-template #versionItemTemplate let-item=\"item\">\n <div\n [attr.data-test-id]=\"item?.['data-test-id']\"\n *ngIf=\"item?.isAllVersionsOption; else regularVersionTemplate\"\n >\n <span>{{ item?.content }}</span>\n <svg cdsIcon=\"version\" size=\"16\"></svg>\n </div>\n\n <ng-template #regularVersionTemplate>\n <div [attr.data-test-id]=\"item?.['data-test-id']\" class=\"version-selector-dropdown-template\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"item?.tagType\" [title]=\"item?.content\">\n {{ item?.draft ? 'DRAFT: ' + item?.content : item?.content }}\n </cds-tag>\n\n <cds-tag\n *ngIf=\"item?.active\"\n [attr.data-test-id]=\"testIds.globallyActiveCaseVersion\"\n class=\"cds-tag--no-margin\"\n type=\"high-contrast\"\n >\n {{ 'caseManagement.globallyActive' | translate }}\n </cds-tag>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #deploymentButton let-obs=\"obs\">\n <button\n cdsButton=\"secondary\"\n [attr.data-test-id]=\"testIds.versionManagementButton\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"redirectToDeployment()\"\n >\n {{ 'caseManagement.deployment.title' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"deploy\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #exportMenu let-obs=\"obs\">\n <v-overflow-menu [menuWidth]=\"250\" placement=\"bottom-end\" class=\"overflow-button\">\n <button\n overflowTrigger\n cdsButton=\"tertiary\"\n [attr.data-test-id]=\"testIds.moreButton\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n >\n {{ 'caseManagement.more' | translate }}\n\n <svg\n class=\"cds--btn__icon case-management-overflow-icon\"\n cdsIcon=\"overflow-menu--vertical\"\n size=\"16\"\n ></svg>\n </button>\n\n <v-overflow-menu-option\n [attr.data-test-id]=\"testIds.exportButton\"\n optionId=\"exportDocumentDefinition\"\n [disabled]=\"obs.exporting || obs.loadingVersion\"\n (selected)=\"export()\"\n >{{ 'caseManagement.export' | translate: {value: documentDefinitionTitle} }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n [attr.data-test-id]=\"testIds.setActiveVersionButton\"\n optionId=\"setGlobalActiveVersion\"\n [disabled]=\"obs.setActiveDisabled\"\n (selected)=\"openGlobalActiveVersionModal()\"\n >{{ 'caseManagement.setGlobalActiveVersion' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n</ng-template>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'caseManagement.preparingDownload' | translate\n }}</span>\n\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #readOnly let-obs=\"obs\">\n <cds-tag *ngIf=\"obs.selectedDocumentDefinitionIsReadOnly\" type=\"blue\">{{\n 'caseManagement.readonly' | translate\n }}</cds-tag>\n</ng-template>\n\n<valtimo-case-management-select-version-modal\n [open]=\"showAllVersionsModal$ | async\"\n [caseDefinitionTitle]=\"_caseDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [previousSelectedVersion]=\"selectedVersion$ | async\"\n (closeEvent)=\"closeAllVersionsModal()\"\n (selectedVersion)=\"selectVersionFromModal($event)\"\n></valtimo-case-management-select-version-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showGlobalVersionModal$\"\n cancelButtonType=\"ghost\"\n cancelButtonTextTranslationKey=\"caseManagement.globalActiveVersionModal.cancel\"\n confirmButtonTextTranslationKey=\"caseManagement.globalActiveVersionModal.continue\"\n titleTranslationKey=\"caseManagement.globalActiveVersionModal.title\"\n contentTranslationKey=\"caseManagement.globalActiveVersionModal.description\"\n (cancelEvent)=\"closeGlobalVersionCaseModal()\"\n (confirmEvent)=\"openGlobalCaseVersionConfirmationModal()\"\n>\n <cds-notification\n *ngIf=\"isOlderVersionSelected$ | async\"\n class=\"full-width-notification\"\n [notificationObj]=\"{\n type: 'warning',\n title: 'caseManagement.globalActiveVersionModal.warningTitle' | translate,\n message: 'caseManagement.globalActiveVersionModal.warningMessage' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n >\n </cds-notification>\n</valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showGlobalVersionConfirmationModal$\"\n cancelButtonType=\"ghost\"\n cancelButtonTextTranslationKey=\"caseManagement.confirmationGlobalVersionModal.cancel\"\n confirmButtonType=\"danger\"\n confirmButtonTextTranslationKey=\"caseManagement.confirmationGlobalVersionModal.confirm\"\n contentTranslationKey=\"caseManagement.confirmationGlobalVersionModal.description\"\n titleTranslationKey=\"caseManagement.confirmationGlobalVersionModal.title\"\n (cancelEvent)=\"closeGlobalCaseConfirmationModal()\"\n (confirmEvent)=\"setGlobalActiveCaseVersion()\"\n></valtimo-confirmation-modal>\n", styles: [".case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end}.case-actions.--compact{align-items:center}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.exporting-message{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px}.case-metadata{display:flex;gap:24px;align-items:flex-end}.case-buttons{display:flex;align-items:center;gap:16px}::ng-deep .version-selector{margin-bottom:0;width:300px}::ng-deep .version-selector-dropdown-template{display:flex}::ng-deep .version-selector-dropdown-template .cds--tag{margin:0 8px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px;max-width:100%}::ng-deep .cds--list-box__field{display:flex;justify-content:space-between}::ng-deep .cds--list-box__menu-item__option{display:flex;justify-content:space-between;padding-inline-end:0}::ng-deep .cds--list-box__menu-item__option>div{margin-top:-4px}.full-width-notification{max-inline-size:100%;min-inline-size:100%}.case-management-overflow-icon{fill:var(--vcds-color-60)!important}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2.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.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i2.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i7.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i7.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i7.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "component", type: i2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: CaseManagementSelectVersionModalComponent, selector: "valtimo-case-management-select-version-modal", inputs: ["open", "previousSelectedVersion", "caseDefinitionKey", "caseDefinitionTitle"], outputs: ["closeEvent", "selectedVersion"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4192
4215
  }
4193
4216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementDetailActionsComponent, decorators: [{
@@ -4196,7 +4219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
4196
4219
  }], ctorParameters: () => [{ type: Document, decorators: [{
4197
4220
  type: Inject,
4198
4221
  args: [DOCUMENT]
4199
- }] }, { type: CaseManagementService }, { type: CaseDetailService }, { type: i2$1.GlobalNotificationService }, { type: i2.IconService }, { type: i7.PageHeaderService }, { type: i2$2.ActivatedRoute }, { type: i2$2.Router }, { type: i3.TranslateService }, { type: i2$1.ConfigurationIssueService }], propDecorators: { _exportMessageTemplateRef: [{
4222
+ }] }, { type: CaseManagementService }, { type: CaseDetailService }, { type: i2$1.GlobalNotificationService }, { type: i2.IconService }, { type: i7.MenuService }, { type: i7.PageHeaderService }, { type: i2$2.ActivatedRoute }, { type: i2$2.Router }, { type: i3.TranslateService }, { type: i2$1.ConfigurationIssueService }], propDecorators: { _exportMessageTemplateRef: [{
4200
4223
  type: ViewChild,
4201
4224
  args: ['exportingMessage']
4202
4225
  }], documentDefinitionTitle: [{
@@ -4223,8 +4246,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
4223
4246
  * limitations under the License.
4224
4247
  */
4225
4248
  class CaseManagementDetailComponent {
4226
- constructor(route, caseDetailService, caseManagementService, configService, configurationIssueService, iconService, pageTitleService, router, sseService, tabService) {
4249
+ constructor(route, breadcrumbService, caseDetailService, caseManagementService, configService, configurationIssueService, iconService, pageTitleService, router, sseService, tabService) {
4227
4250
  this.route = route;
4251
+ this.breadcrumbService = breadcrumbService;
4228
4252
  this.caseDetailService = caseDetailService;
4229
4253
  this.caseManagementService = caseManagementService;
4230
4254
  this.configService = configService;
@@ -4259,22 +4283,31 @@ class CaseManagementDetailComponent {
4259
4283
  this.iconService.registerAll([WarningFilled16]);
4260
4284
  }
4261
4285
  ngOnInit() {
4262
- this._subscriptions.add(this.caseDetailService.documentDefinition$.subscribe((documentDefinition) => {
4263
- if (!documentDefinition)
4264
- return;
4265
- this.pageTitleService.setCustomPageTitle(documentDefinition.schema.title);
4266
- }));
4267
4286
  this.openActiveVersionSubscription();
4268
4287
  this.openConfigurationIssueSseSubscription();
4269
4288
  this.openConfigurationIssueSubscription();
4270
4289
  this.pageTitleService.disableReset();
4271
4290
  this.openParamsSubscription();
4291
+ this.openBreadcrumbSubscription();
4272
4292
  }
4273
4293
  ngOnDestroy() {
4274
4294
  this.tabService.currentTab = TabEnum.GENERAL;
4275
4295
  this._subscriptions.unsubscribe();
4276
4296
  this.pageTitleService.enableReset();
4277
4297
  this.configurationIssueService.setUnresolvedIssueTypes([]);
4298
+ this.breadcrumbService.clearThirdBreadcrumb();
4299
+ }
4300
+ openBreadcrumbSubscription() {
4301
+ this._subscriptions.add(this.caseDetailService.caseDefinition$.subscribe(caseDefinition => {
4302
+ if (!caseDefinition)
4303
+ return;
4304
+ const route = `/case-management/case/${caseDefinition.caseDefinitionKey}/version/${caseDefinition.caseDefinitionVersionTag}`;
4305
+ this.breadcrumbService.setThirdBreadcrumb({
4306
+ route: [route],
4307
+ content: caseDefinition.name,
4308
+ href: route,
4309
+ });
4310
+ }));
4278
4311
  }
4279
4312
  hasTabIssues$(issueTypes) {
4280
4313
  const cacheKey = issueTypes.slice().sort().join(',');
@@ -4338,13 +4371,13 @@ class CaseManagementDetailComponent {
4338
4371
  //TODO: Fix pending changes with new routing
4339
4372
  // this._documentDefinitionTab?.onCanDeactivate();
4340
4373
  }
4341
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementDetailComponent, deps: [{ token: i2$2.ActivatedRoute }, { token: CaseDetailService }, { token: CaseManagementService }, { token: i2$1.ConfigService }, { token: i2$1.ConfigurationIssueService }, { token: i2.IconService }, { token: i7.PageTitleService }, { token: i2$2.Router }, { token: i7$1.SseService }, { token: TabService }], target: i0.ɵɵFactoryTarget.Component }); }
4374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementDetailComponent, deps: [{ token: i2$2.ActivatedRoute }, { token: i7.BreadcrumbService }, { token: CaseDetailService }, { token: CaseManagementService }, { token: i2$1.ConfigService }, { token: i2$1.ConfigurationIssueService }, { token: i2.IconService }, { token: i7.PageTitleService }, { token: i2$2.Router }, { token: i7$1.SseService }, { token: TabService }], target: i0.ɵɵFactoryTarget.Component }); }
4342
4375
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: CaseManagementDetailComponent, isStandalone: false, selector: "ng-component", providers: [CaseDetailService], viewQueries: [{ propertyName: "_tabs", predicate: Tab, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"case-management-detail-container\"\n>\n @if (configurationIssues$ | async; as issues) {\n @if (issues.length > 0) {\n <cds-notification\n class=\"environment-config-warning\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('caseManagement.environmentConfig.bannerTitle' | translate),\n message: ('caseManagement.environmentConfig.bannerMessage' | translate),\n showClose: false,\n lowContrast: true\n }\"\n ></cds-notification>\n }\n }\n\n <cds-tabs class=\"case-management-tabs\" type=\"inline\" [attr.data-test-id]=\"testIds.tabs\">\n <ng-template #generalTabHeading>\n {{ 'caseManagement.tabs.general' | translate }}\n @if (hasPluginProcessLinkIssue$ | async) {\n <svg cdsIcon=\"warning--filled\" size=\"16\" class=\"tab-warning-icon\"></svg>\n }\n </ng-template>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.GENERAL\"\n [active]=\"obs.currentTab === TabEnum.GENERAL\"\n [heading]=\"generalTabHeading\"\n [title]=\"'caseManagement.tabs.general' | translate\"\n (selected)=\"navigateToTab(TabEnum.GENERAL)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.PROCESSES\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'caseManagement.tabs.processes' | translate\"\n (selected)=\"navigateToTab(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.ACTIONS\"\n [active]=\"obs.currentTab === TabEnum.ACTIONS\"\n [heading]=\"'caseManagement.tabs.actions' | translate\"\n (selected)=\"navigateToTab(TabEnum.ACTIONS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.DECISIONS\"\n [active]=\"obs.currentTab === TabEnum.DECISIONS\"\n [heading]=\"'caseManagement.tabs.decision' | translate\"\n (selected)=\"navigateToTab(TabEnum.DECISIONS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.DOCUMENT\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'caseManagement.tabs.document' | translate\"\n (selected)=\"navigateToTab(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORMS\"\n [active]=\"obs.currentTab === TabEnum.FORMS\"\n [heading]=\"'caseManagement.tabs.forms' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORMS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORM_FLOWS\"\n [active]=\"obs.currentTab === TabEnum.FORM_FLOWS\"\n [heading]=\"'caseManagement.tabs.formFlows' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORM_FLOWS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.TASKS\"\n [active]=\"obs.currentTab === TabEnum.TASKS\"\n [heading]=\"'caseManagement.tabs.tasks' | translate\"\n (selected)=\"navigateToTab(TabEnum.TASKS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_LIST\"\n [active]=\"obs.currentTab === TabEnum.CASE_LIST\"\n [heading]=\"'caseManagement.tabs.caseListTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_DETAILS\"\n [active]=\"obs.currentTab === TabEnum.CASE_DETAILS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_DETAILS)\"\n >\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n @if (injectedTab.enabled$ | async) {\n <ng-template #injectedTabHeading>\n {{ injectedTab.translationKey | translate }}\n @if (injectedTab.issueTypes?.length && (hasTabIssues$(injectedTab.issueTypes) | async)) {\n <svg cdsIcon=\"warning--filled\" size=\"16\" class=\"tab-warning-icon\"></svg>\n }\n </ng-template>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === (injectedTab.tabRoute ?? injectedTab.translationKey)\"\n [heading]=\"injectedTabHeading\"\n [title]=\"injectedTab.translationKey | translate\"\n (selected)=\"navigateToTab(injectedTab.tabRoute ?? injectedTab.translationKey)\"\n >\n </cds-tab>\n }\n }\n </cds-tabs>\n\n <div class=\"case-management-detail-container__content\">\n <router-outlet></router-outlet>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-case-management-detail-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-case-management-detail-actions>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep .case-management-tabs .cds--tab-content{background-color:var(--cds-layer);padding:0!important;margin-top:24px}::ng-deep .case-management-tabs .cds--tab-content:focus{outline:none}::ng-deep .case-management-tabs .no-padding-left-right .cds--tab-content{padding-left:0;padding-right:0}::ng-deep .case-management-tabs .no-padding-top-bottom .cds--tab-content{padding-top:0;padding-bottom:0}::ng-deep .case-management-tabs .no-padding-bottom .cds--tab-content{padding-bottom:0}.tab-container{min-height:300px}.case-management-detail-container{display:flex;flex-direction:column;width:100%}.environment-config-warning{max-width:100%;margin-bottom:16px}.tab-warning-icon{margin-left:4px;vertical-align:middle;fill:var(--cds-support-warning)}.tab-warning-icon ::ng-deep [data-icon-path=inner-path]{fill:#000;opacity:1}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i7.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i2.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: CaseManagementDetailActionsComponent, selector: "valtimo-case-management-detail-actions", inputs: ["documentDefinitionTitle", "caseDefinitionKey"], outputs: ["versionSet"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4343
4376
  }
4344
4377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseManagementDetailComponent, decorators: [{
4345
4378
  type: Component,
4346
4379
  args: [{ standalone: false, providers: [CaseDetailService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"case-management-detail-container\"\n>\n @if (configurationIssues$ | async; as issues) {\n @if (issues.length > 0) {\n <cds-notification\n class=\"environment-config-warning\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('caseManagement.environmentConfig.bannerTitle' | translate),\n message: ('caseManagement.environmentConfig.bannerMessage' | translate),\n showClose: false,\n lowContrast: true\n }\"\n ></cds-notification>\n }\n }\n\n <cds-tabs class=\"case-management-tabs\" type=\"inline\" [attr.data-test-id]=\"testIds.tabs\">\n <ng-template #generalTabHeading>\n {{ 'caseManagement.tabs.general' | translate }}\n @if (hasPluginProcessLinkIssue$ | async) {\n <svg cdsIcon=\"warning--filled\" size=\"16\" class=\"tab-warning-icon\"></svg>\n }\n </ng-template>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.GENERAL\"\n [active]=\"obs.currentTab === TabEnum.GENERAL\"\n [heading]=\"generalTabHeading\"\n [title]=\"'caseManagement.tabs.general' | translate\"\n (selected)=\"navigateToTab(TabEnum.GENERAL)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.PROCESSES\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'caseManagement.tabs.processes' | translate\"\n (selected)=\"navigateToTab(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.ACTIONS\"\n [active]=\"obs.currentTab === TabEnum.ACTIONS\"\n [heading]=\"'caseManagement.tabs.actions' | translate\"\n (selected)=\"navigateToTab(TabEnum.ACTIONS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [id]=\"TabEnum.DECISIONS\"\n [active]=\"obs.currentTab === TabEnum.DECISIONS\"\n [heading]=\"'caseManagement.tabs.decision' | translate\"\n (selected)=\"navigateToTab(TabEnum.DECISIONS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.DOCUMENT\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'caseManagement.tabs.document' | translate\"\n (selected)=\"navigateToTab(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORMS\"\n [active]=\"obs.currentTab === TabEnum.FORMS\"\n [heading]=\"'caseManagement.tabs.forms' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORMS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.FORM_FLOWS\"\n [active]=\"obs.currentTab === TabEnum.FORM_FLOWS\"\n [heading]=\"'caseManagement.tabs.formFlows' | translate\"\n (selected)=\"navigateToTab(TabEnum.FORM_FLOWS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [id]=\"TabEnum.TASKS\"\n [active]=\"obs.currentTab === TabEnum.TASKS\"\n [heading]=\"'caseManagement.tabs.tasks' | translate\"\n (selected)=\"navigateToTab(TabEnum.TASKS)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_LIST\"\n [active]=\"obs.currentTab === TabEnum.CASE_LIST\"\n [heading]=\"'caseManagement.tabs.caseListTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [id]=\"TabEnum.CASE_DETAILS\"\n [active]=\"obs.currentTab === TabEnum.CASE_DETAILS\"\n [heading]=\"'caseManagement.tabs.caseDetailsTab.title' | translate\"\n (selected)=\"navigateToTab(TabEnum.CASE_DETAILS)\"\n >\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n @if (injectedTab.enabled$ | async) {\n <ng-template #injectedTabHeading>\n {{ injectedTab.translationKey | translate }}\n @if (injectedTab.issueTypes?.length && (hasTabIssues$(injectedTab.issueTypes) | async)) {\n <svg cdsIcon=\"warning--filled\" size=\"16\" class=\"tab-warning-icon\"></svg>\n }\n </ng-template>\n\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === (injectedTab.tabRoute ?? injectedTab.translationKey)\"\n [heading]=\"injectedTabHeading\"\n [title]=\"injectedTab.translationKey | translate\"\n (selected)=\"navigateToTab(injectedTab.tabRoute ?? injectedTab.translationKey)\"\n >\n </cds-tab>\n }\n }\n </cds-tabs>\n\n <div class=\"case-management-detail-container__content\">\n <router-outlet></router-outlet>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-case-management-detail-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-case-management-detail-actions>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep .case-management-tabs .cds--tab-content{background-color:var(--cds-layer);padding:0!important;margin-top:24px}::ng-deep .case-management-tabs .cds--tab-content:focus{outline:none}::ng-deep .case-management-tabs .no-padding-left-right .cds--tab-content{padding-left:0;padding-right:0}::ng-deep .case-management-tabs .no-padding-top-bottom .cds--tab-content{padding-top:0;padding-bottom:0}::ng-deep .case-management-tabs .no-padding-bottom .cds--tab-content{padding-bottom:0}.tab-container{min-height:300px}.case-management-detail-container{display:flex;flex-direction:column;width:100%}.environment-config-warning{max-width:100%;margin-bottom:16px}.tab-warning-icon{margin-left:4px;vertical-align:middle;fill:var(--cds-support-warning)}.tab-warning-icon ::ng-deep [data-icon-path=inner-path]{fill:#000;opacity:1}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
4347
- }], ctorParameters: () => [{ type: i2$2.ActivatedRoute }, { type: CaseDetailService }, { type: CaseManagementService }, { type: i2$1.ConfigService }, { type: i2$1.ConfigurationIssueService }, { type: i2.IconService }, { type: i7.PageTitleService }, { type: i2$2.Router }, { type: i7$1.SseService }, { type: TabService }], propDecorators: { _tabs: [{
4380
+ }], ctorParameters: () => [{ type: i2$2.ActivatedRoute }, { type: i7.BreadcrumbService }, { type: CaseDetailService }, { type: CaseManagementService }, { type: i2$1.ConfigService }, { type: i2$1.ConfigurationIssueService }, { type: i2.IconService }, { type: i7.PageTitleService }, { type: i2$2.Router }, { type: i7$1.SseService }, { type: TabService }], propDecorators: { _tabs: [{
4348
4381
  type: ViewChildren,
4349
4382
  args: [Tab]
4350
4383
  }] } });
@@ -5096,6 +5129,7 @@ class CaseManagementWidgetTabComponent extends ManagementWidgetDetailsComponent
5096
5129
  WidgetType.METROLINE,
5097
5130
  WidgetType.HIGHLIGHT,
5098
5131
  WidgetType.IMAGE,
5132
+ WidgetType.TEXT,
5099
5133
  ];
5100
5134
  }
5101
5135
  ngOnInit() {