@valtimo/building-block-management 13.14.0 → 13.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,16 +14,17 @@ import * as i3 from '@angular/router';
14
14
  import { RouterModule } from '@angular/router';
15
15
  import * as i3$1 from 'carbon-components-angular';
16
16
  import { ModalModule, ButtonModule, IconModule, InputModule, TooltipModule, LayerModule, FileUploaderModule, ProgressBarModule, NotificationModule, CheckboxModule, LoadingModule, TagModule, DropdownModule, DialogModule, TabsModule } from 'carbon-components-angular';
17
- import * as i4$1 from '@ngx-translate/core';
17
+ import * as i2$3 from '@ngx-translate/core';
18
18
  import { TranslatePipe, TranslateModule } from '@ngx-translate/core';
19
19
  import * as i2$2 from '@angular/forms';
20
20
  import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
21
- import { WarningFilled16, Upload16, TrashCan16, Download16 } from '@carbon/icons';
21
+ import { WarningFilled16, Upload16, TrashCan16, Download16, Add16 } from '@carbon/icons';
22
22
  import { toObservable } from '@angular/core/rxjs-interop';
23
23
  import { AuthGuardService } from '@valtimo/security';
24
- import * as i2$3 from '@valtimo/plugin';
24
+ import * as i2$4 from '@valtimo/plugin';
25
25
  import { take as take$1 } from 'rxjs/operators';
26
26
  import * as i3$2 from '@valtimo/process-link';
27
+ import { FormManagementCreateComponent, FormManagementEditComponent } from '@valtimo/form-management';
27
28
  import { ProcessManagementBuilderComponent } from '@valtimo/process-management';
28
29
 
29
30
  /*
@@ -127,6 +128,12 @@ class BuildingBlockManagementApiService extends BaseApiService {
127
128
  observe: 'response',
128
129
  });
129
130
  }
131
+ getBuildingBlockFormDefinitions(key, versionTag, params) {
132
+ return this.httpClient.get(this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/form`), { params: params });
133
+ }
134
+ deleteBuildingBlockFormDefinition(key, versionTag, formDefinitionId) {
135
+ return this.httpClient.delete(this.getApiUrl(`management/v1/building-block/${key}/version/${versionTag}/form/${formDefinitionId}`));
136
+ }
130
137
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementApiService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
131
138
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementApiService, providedIn: 'root' }); }
132
139
  }
@@ -186,6 +193,9 @@ class BuildingBlockManagementDetailService {
186
193
  get reloadProcessDefinitions$() {
187
194
  return this._reloadProcessDefinitions$.asObservable();
188
195
  }
196
+ get reloadFormDefinitions$() {
197
+ return this._reloadFormDefinitions$.asObservable();
198
+ }
189
199
  constructor(buildingBlockManagementApiService, pageTitleService, router) {
190
200
  this.buildingBlockManagementApiService = buildingBlockManagementApiService;
191
201
  this.pageTitleService = pageTitleService;
@@ -198,6 +208,7 @@ class BuildingBlockManagementDetailService {
198
208
  this._reload$ = new BehaviorSubject(null);
199
209
  this._reloadVersions$ = new BehaviorSubject(null);
200
210
  this._reloadProcessDefinitions$ = new BehaviorSubject(null);
211
+ this._reloadFormDefinitions$ = new BehaviorSubject(null);
201
212
  this._subscriptions = new Subscription();
202
213
  this._subscriptions.add(combineLatest([
203
214
  this.buildingBlockDefinitionKey$,
@@ -255,6 +266,9 @@ class BuildingBlockManagementDetailService {
255
266
  reloadProcessDefinitions() {
256
267
  this._reloadProcessDefinitions$.next(null);
257
268
  }
269
+ reloadFormDefinitions() {
270
+ this._reloadFormDefinitions$.next(null);
271
+ }
258
272
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailService, deps: [{ token: BuildingBlockManagementApiService }, { token: i2$1.PageTitleService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
259
273
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailService }); }
260
274
  }
@@ -348,6 +362,7 @@ const BUILDING_BLOCK_MANAGEMENT_TABS = {
348
362
  GENERAL: 'general',
349
363
  PROCESSES: 'process-definition',
350
364
  DOCUMENT: 'document',
365
+ FORMS: 'forms',
351
366
  };
352
367
 
353
368
  /*
@@ -670,8 +685,8 @@ class BuildingBlockManagementUploadModalComponent {
670
685
  this.showCheckboxError$.next(false);
671
686
  }, CARBON_CONSTANTS.modalAnimationMs);
672
687
  }
673
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementUploadModalComponent, deps: [{ token: BuildingBlockManagementApiService }, { token: BuildingBlockManagementService }, { token: i2$2.FormBuilder }, { token: i3$1.IconService }, { token: i4$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
674
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementUploadModalComponent, isStandalone: true, selector: "valtimo-building-block-management-upload-modal", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n showUploadModal: showUploadModal$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"obs.showUploadModal\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'buildingBlockManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-building-block-management-upload-step\n [message]=\"\n 'buildingBlockManagement.importDefinition.steps.' + obs.activeStep + '.message'\n | translate\n \"\n [title]=\"\n 'buildingBlockManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-building-block-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'buildingBlockManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'buildingBlockManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'buildingBlockManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.FILE_SELECT\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'buildingBlockManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n {{ 'buildingBlockManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'buildingBlockManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'buildingBlockManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\n \"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'buildingBlockManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.FILE_UPLOAD\n \"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i3$1.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: i3$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i3$1.ProgressBar, selector: "cds-progress-bar, ibm-progress-bar", inputs: ["value", "id", "label", "helperText", "max", "type", "status", "size"] }, { kind: "ngmodule", type: NotificationModule }, { kind: "component", type: i3$1.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3$1.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "component", type: BuildingBlockManagementUploadStepComponent, selector: "valtimo-building-block-management-upload-step", inputs: ["illustration", "message", "title"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
688
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementUploadModalComponent, deps: [{ token: BuildingBlockManagementApiService }, { token: BuildingBlockManagementService }, { token: i2$2.FormBuilder }, { token: i3$1.IconService }, { token: i2$3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
689
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementUploadModalComponent, isStandalone: true, selector: "valtimo-building-block-management-upload-modal", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n showUploadModal: showUploadModal$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"obs.showUploadModal\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'buildingBlockManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-building-block-management-upload-step\n [message]=\"\n 'buildingBlockManagement.importDefinition.steps.' + obs.activeStep + '.message'\n | translate\n \"\n [title]=\"\n 'buildingBlockManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-building-block-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'buildingBlockManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'buildingBlockManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'buildingBlockManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.FILE_SELECT\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'buildingBlockManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n {{ 'buildingBlockManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'buildingBlockManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'buildingBlockManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\n \"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'buildingBlockManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.FILE_UPLOAD\n \"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i3$1.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: i3$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ProgressBarModule }, { kind: "component", type: i3$1.ProgressBar, selector: "cds-progress-bar, ibm-progress-bar", inputs: ["value", "id", "label", "helperText", "max", "type", "status", "size"] }, { kind: "ngmodule", type: NotificationModule }, { kind: "component", type: i3$1.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3$1.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "component", type: BuildingBlockManagementUploadStepComponent, selector: "valtimo-building-block-management-upload-step", inputs: ["illustration", "message", "title"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
675
690
  }
676
691
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementUploadModalComponent, decorators: [{
677
692
  type: Component,
@@ -687,7 +702,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
687
702
  BuildingBlockManagementUploadStepComponent,
688
703
  ReactiveFormsModule,
689
704
  ], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n showUploadModal: showUploadModal$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"obs.showUploadModal\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'buildingBlockManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-building-block-management-upload-step\n [message]=\"\n 'buildingBlockManagement.importDefinition.steps.' + obs.activeStep + '.message'\n | translate\n \"\n [title]=\"\n 'buildingBlockManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-building-block-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'buildingBlockManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'buildingBlockManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'buildingBlockManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"obs.activeStep === UPLOAD_STEP.FILE_SELECT\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'buildingBlockManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n {{ 'buildingBlockManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'buildingBlockManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'buildingBlockManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\n \"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'buildingBlockManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"\n obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.FILE_UPLOAD\n \"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\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"] }]
690
- }], ctorParameters: () => [{ type: BuildingBlockManagementApiService }, { type: BuildingBlockManagementService }, { type: i2$2.FormBuilder }, { type: i3$1.IconService }, { type: i4$1.TranslateService }] });
705
+ }], ctorParameters: () => [{ type: BuildingBlockManagementApiService }, { type: BuildingBlockManagementService }, { type: i2$2.FormBuilder }, { type: i3$1.IconService }, { type: i2$3.TranslateService }] });
691
706
 
692
707
  /*
693
708
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -989,13 +1004,13 @@ class BuildingBlockManagementPluginsComponent {
989
1004
  return pluginKeys.map(pluginDefinitionForBuildingBlock => pluginDefinitions.find(pluginDefinition => pluginDefinition.key === pluginDefinitionForBuildingBlock)?.title ?? pluginDefinitionForBuildingBlock);
990
1005
  }), tap(() => this.loading$.next(false)));
991
1006
  }
992
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementPluginsComponent, deps: [{ token: BuildingBlockManagementApiService }, { token: i2$3.PluginManagementService }, { token: BuildingBlockManagementDetailService }], target: i0.ɵɵFactoryTarget.Component }); }
1007
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementPluginsComponent, deps: [{ token: BuildingBlockManagementApiService }, { token: i2$4.PluginManagementService }, { token: BuildingBlockManagementDetailService }], target: i0.ɵɵFactoryTarget.Component }); }
993
1008
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: BuildingBlockManagementPluginsComponent, isStandalone: true, selector: "valtimo-building-block-management-plugins", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"building-block-management-plugins\"\n *ngIf=\"{usedPluginTitles: usedPluginTitles$ | async, loading: loading$ | async} as obs\"\n>\n <h4 class=\"building-block-management-plugins__title\">\n {{ 'buildingBlockManagement.plugins.title' | translate }}\n </h4>\n\n @if (obs.loading) {\n <div class=\"loading-container\"><cds-loading size=\"sm\"></cds-loading></div>\n }\n\n @if (!obs.loading && obs.usedPluginTitles.length > 0) {\n <div class=\"building-block-management-plugins__tags\">\n @for (pluginTitle of obs.usedPluginTitles; track pluginTitle) {\n <cds-tag type=\"blue\">{{ pluginTitle }}</cds-tag>\n }\n </div>\n }\n\n @if (!obs.loading && obs.usedPluginTitles.length === 0) {\n <p class=\"building-block-management-plugins__description cds--label-description\">\n {{ 'buildingBlockManagement.plugins.noPluginsUsed' | translate }}\n </p>\n }\n</div>\n", styles: [".building-block-management-plugins{display:flex;padding:16px 24px;width:100%;background-color:var(--cds-layer-01);align-items:center;gap:16px}.building-block-management-plugins__title{font-size:16px;line-height:24px;font-weight:600;flex-shrink:0}.building-block-management-plugins__tags{display:flex;flex-flow:row wrap;height:100%;gap:8px}.building-block-management-plugins__description{padding:0;margin:0}.loading-container{display:flex;width:100%;justify-content: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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i3$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }] }); }
994
1009
  }
995
1010
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementPluginsComponent, decorators: [{
996
1011
  type: Component,
997
1012
  args: [{ standalone: true, selector: 'valtimo-building-block-management-plugins', imports: [CommonModule, LoadingModule, TranslatePipe, TagModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"building-block-management-plugins\"\n *ngIf=\"{usedPluginTitles: usedPluginTitles$ | async, loading: loading$ | async} as obs\"\n>\n <h4 class=\"building-block-management-plugins__title\">\n {{ 'buildingBlockManagement.plugins.title' | translate }}\n </h4>\n\n @if (obs.loading) {\n <div class=\"loading-container\"><cds-loading size=\"sm\"></cds-loading></div>\n }\n\n @if (!obs.loading && obs.usedPluginTitles.length > 0) {\n <div class=\"building-block-management-plugins__tags\">\n @for (pluginTitle of obs.usedPluginTitles; track pluginTitle) {\n <cds-tag type=\"blue\">{{ pluginTitle }}</cds-tag>\n }\n </div>\n }\n\n @if (!obs.loading && obs.usedPluginTitles.length === 0) {\n <p class=\"building-block-management-plugins__description cds--label-description\">\n {{ 'buildingBlockManagement.plugins.noPluginsUsed' | translate }}\n </p>\n }\n</div>\n", styles: [".building-block-management-plugins{display:flex;padding:16px 24px;width:100%;background-color:var(--cds-layer-01);align-items:center;gap:16px}.building-block-management-plugins__title{font-size:16px;line-height:24px;font-weight:600;flex-shrink:0}.building-block-management-plugins__tags{display:flex;flex-flow:row wrap;height:100%;gap:8px}.building-block-management-plugins__description{padding:0;margin:0}.loading-container{display:flex;width:100%;justify-content: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"] }]
998
- }], ctorParameters: () => [{ type: BuildingBlockManagementApiService }, { type: i2$3.PluginManagementService }, { type: BuildingBlockManagementDetailService }] });
1013
+ }], ctorParameters: () => [{ type: BuildingBlockManagementApiService }, { type: i2$4.PluginManagementService }, { type: BuildingBlockManagementDetailService }] });
999
1014
 
1000
1015
  /*
1001
1016
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -1215,8 +1230,8 @@ class BuildingBlockManagementProcessUploadComponent {
1215
1230
  return (this.getDuplicateKeyMessage(error) ||
1216
1231
  this.translateService.instant('processManagement.upload.replaceContent'));
1217
1232
  }
1218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementProcessUploadComponent, deps: [{ token: i2$2.FormBuilder }, { token: i1.GlobalNotificationService }, { token: i3$2.ProcessLinkService }, { token: BuildingBlockManagementDetailService }, { token: i4$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
1219
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementProcessUploadComponent, isStandalone: true, selector: "valtimo-building-block-management-process-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\n<valtimo-render-in-body>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"processManagement.upload.replaceConfirm\"\n confirmButtonType=\"danger\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [content]=\"replaceModalContent\"\n [showModalSubject$]=\"showReplaceConfirmationModal$\"\n titleTranslationKey=\"processManagement.upload.replaceTitle\"\n (confirmEvent)=\"confirmReplace()\"\n (cancelEvent)=\"clearReplaceModal()\"\n ></valtimo-confirmation-modal>\n</valtimo-render-in-body>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i3$1.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: i3$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i3$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i2$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"] }, { kind: "component", type: RenderInBodyComponent, selector: "valtimo-render-in-body" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementProcessUploadComponent, deps: [{ token: i2$2.FormBuilder }, { token: i1.GlobalNotificationService }, { token: i3$2.ProcessLinkService }, { token: BuildingBlockManagementDetailService }, { token: i2$3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
1234
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementProcessUploadComponent, isStandalone: true, selector: "valtimo-building-block-management-process-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\n<valtimo-render-in-body>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"processManagement.upload.replaceConfirm\"\n confirmButtonType=\"danger\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [content]=\"replaceModalContent\"\n [showModalSubject$]=\"showReplaceConfirmationModal$\"\n titleTranslationKey=\"processManagement.upload.replaceTitle\"\n (confirmEvent)=\"confirmReplace()\"\n (cancelEvent)=\"clearReplaceModal()\"\n ></valtimo-confirmation-modal>\n</valtimo-render-in-body>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FileUploaderModule }, { kind: "component", type: i3$1.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: i3$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i3$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i2$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"] }, { kind: "component", type: RenderInBodyComponent, selector: "valtimo-render-in-body" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1220
1235
  }
1221
1236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementProcessUploadComponent, decorators: [{
1222
1237
  type: Component,
@@ -1231,7 +1246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1231
1246
  ConfirmationModalModule,
1232
1247
  RenderInBodyComponent,
1233
1248
  ], 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\n<valtimo-render-in-body>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"processManagement.upload.replaceConfirm\"\n confirmButtonType=\"danger\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [content]=\"replaceModalContent\"\n [showModalSubject$]=\"showReplaceConfirmationModal$\"\n titleTranslationKey=\"processManagement.upload.replaceTitle\"\n (confirmEvent)=\"confirmReplace()\"\n (cancelEvent)=\"clearReplaceModal()\"\n ></valtimo-confirmation-modal>\n</valtimo-render-in-body>\n" }]
1234
- }], ctorParameters: () => [{ type: i2$2.FormBuilder }, { type: i1.GlobalNotificationService }, { type: i3$2.ProcessLinkService }, { type: BuildingBlockManagementDetailService }, { type: i4$1.TranslateService }] });
1249
+ }], ctorParameters: () => [{ type: i2$2.FormBuilder }, { type: i1.GlobalNotificationService }, { type: i3$2.ProcessLinkService }, { type: BuildingBlockManagementDetailService }, { type: i2$3.TranslateService }] });
1235
1250
 
1236
1251
  /*
1237
1252
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -1371,8 +1386,8 @@ class BuildingBlockManagementProcessesComponent {
1371
1386
  deleteDisabled(process) {
1372
1387
  return process.main || this._buildingBlockProcessDefinitionItems.length === 1;
1373
1388
  }
1374
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementProcessesComponent, deps: [{ token: BuildingBlockManagementDetailService }, { token: BuildingBlockManagementApiService }, { token: i4$1.TranslateService }, { token: i3$1.IconService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementProcessesComponent, isStandalone: true, selector: "valtimo-building-block-management-processes", 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 [fields]=\"FIELDS\"\n [actionItems]=\"ACTION_ITEMS\"\n [items]=\"buildingBlockProcessDefinitionItems$ | async\"\n [loading]=\"$loading()\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <div carbonToolbarContent>\n <div class=\"valtimo-building-block-management-list__actions\">\n <button\n cdsButton=\"ghost\"\n (click)=\"showUploadModal()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"onCreateClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </div>\n</valtimo-carbon-list>\n\n<valtimo-building-block-management-process-upload></valtimo-building-block-management-process-upload>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-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: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: BuildingBlockManagementProcessUploadComponent, selector: "valtimo-building-block-management-process-upload" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i2$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"] }] }); }
1389
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementProcessesComponent, deps: [{ token: BuildingBlockManagementDetailService }, { token: BuildingBlockManagementApiService }, { token: i2$3.TranslateService }, { token: i3$1.IconService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1390
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementProcessesComponent, isStandalone: true, selector: "valtimo-building-block-management-processes", 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 [fields]=\"FIELDS\"\n [actionItems]=\"ACTION_ITEMS\"\n [items]=\"buildingBlockProcessDefinitionItems$ | async\"\n [loading]=\"$loading()\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <div carbonToolbarContent>\n <div class=\"valtimo-building-block-management-list__actions\">\n <button\n cdsButton=\"ghost\"\n (click)=\"showUploadModal()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"onCreateClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </div>\n</valtimo-carbon-list>\n\n<valtimo-building-block-management-process-upload></valtimo-building-block-management-process-upload>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-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: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: BuildingBlockManagementProcessUploadComponent, selector: "valtimo-building-block-management-process-upload" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i2$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"] }] }); }
1376
1391
  }
1377
1392
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementProcessesComponent, decorators: [{
1378
1393
  type: Component,
@@ -1385,7 +1400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1385
1400
  BuildingBlockManagementProcessUploadComponent,
1386
1401
  ConfirmationModalModule,
1387
1402
  ], 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 [fields]=\"FIELDS\"\n [actionItems]=\"ACTION_ITEMS\"\n [items]=\"buildingBlockProcessDefinitionItems$ | async\"\n [loading]=\"$loading()\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <div carbonToolbarContent>\n <div class=\"valtimo-building-block-management-list__actions\">\n <button\n cdsButton=\"ghost\"\n (click)=\"showUploadModal()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'Upload' | translate }}\n\n <svg cdsIcon=\"upload\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"onCreateClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </div>\n</valtimo-carbon-list>\n\n<valtimo-building-block-management-process-upload></valtimo-building-block-management-process-upload>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"processManagement.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"processManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-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"] }]
1388
- }], ctorParameters: () => [{ type: BuildingBlockManagementDetailService }, { type: BuildingBlockManagementApiService }, { type: i4$1.TranslateService }, { type: i3$1.IconService }, { type: i3.Router }] });
1403
+ }], ctorParameters: () => [{ type: BuildingBlockManagementDetailService }, { type: BuildingBlockManagementApiService }, { type: i2$3.TranslateService }, { type: i3$1.IconService }, { type: i3.Router }] });
1389
1404
 
1390
1405
  /*
1391
1406
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -1577,7 +1592,7 @@ class BuildingBlockManagementDetailActionsComponent {
1577
1592
  duration: 5000,
1578
1593
  });
1579
1594
  }
1580
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailActionsComponent, deps: [{ token: BuildingBlockManagementApiService }, { token: BuildingBlockManagementDetailService }, { token: i2$2.FormBuilder }, { token: i1.GlobalNotificationService }, { token: i4$1.TranslateService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
1595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailActionsComponent, deps: [{ token: BuildingBlockManagementApiService }, { token: BuildingBlockManagementDetailService }, { token: i2$2.FormBuilder }, { token: i1.GlobalNotificationService }, { token: i2$3.TranslateService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
1581
1596
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementDetailActionsComponent, isStandalone: true, selector: "valtimo-building-block-management-detail-actions", viewQueries: [{ propertyName: "_exportMessageTemplateRef", first: true, predicate: ["exportingMessage"], 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 class=\"building-block-actions\"\n *ngIf=\"{\n isFinal: isFinal$ | async,\n } as obs\"\n>\n <div class=\"building-block-metadata\">\n <valtimo-building-block-management-version-selector></valtimo-building-block-management-version-selector>\n </div>\n\n <div class=\"building-block-buttons\">\n <ng-template #trigger>\n <button cdsButton=\"tertiary\">\n {{ 'buildingBlockManagement.actions.more' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <cds-overflow-menu\n [customTrigger]=\"trigger\"\n class=\"overflow-button\"\n valtimoCdsOverflowButton\n [width]=\"250\"\n [offset]=\"{y: 48, x: 37}\"\n >\n <cds-overflow-menu-option\n [id]=\"'exportBuildingBlock'\"\n (selected)=\"export()\"\n [disabled]=\"(actionInProgress$ | async) || (exporting$ | async)\"\n >\n {{\n 'buildingBlockManagement.overflowMenu.export'\n | translate: {value: buildingBlockName$ | async}\n }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n *ngIf=\"!obs.isFinal\"\n [disabled]=\"actionInProgress$ | async\"\n (selected)=\"finalizeDraft()\"\n >\n {{ 'buildingBlockManagement.actions.makeFinal' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n *ngIf=\"obs.isFinal\"\n [disabled]=\"actionInProgress$ | async\"\n (selected)=\"openDraftModal()\"\n >\n {{ 'buildingBlockManagement.actions.createDraft' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n</div>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'buildingBlockManagement.overflowMenu.preparingDownload' | translate\n }}</span>\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<cds-modal\n *ngIf=\"{open: showDraftModal$ | async} as obs\"\n [open]=\"obs.open\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"closeDraftModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeDraftModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'buildingBlockManagement.actions.draft.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"draftForm\" cdsModalContent class=\"bb-management-actions__modal\" [cdsLayer]=\"1\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"draftForm.disabled\"\n [invalid]=\"versionTag.touched && versionTag.invalid\"\n >\n <span class=\"label-with-tooltip select-label\">\n {{ 'buildingBlockManagement.actions.draft.version' | translate }}\n </span>\n\n <input\n formControlName=\"versionTag\"\n cdsText\n placeholder=\"{{ 'buildingBlockManagement.actions.draft.placeholder' | translate }}\"\n />\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeDraftModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"draftForm.invalid || (actionInProgress$ | async)\"\n (click)=\"createDraft()\"\n >\n {{ 'buildingBlockManagement.actions.draft.confirm' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".building-block-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end}.building-block-actions ::ng-deep .version-selection{width:160px}.building-block-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.bb-management-actions__modal{min-width:320px}.building-block-metadata{display:flex;gap:24px;align-items:flex-end}.building-block-buttons{display:flex;align-items:center;gap:16px}::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%}::ng-deep .cds--text-input__field-wrapper cds-label{width:100%}.exporting-message{display:flex;align-items:center;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i3$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3$1.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i3$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$1.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i3$1.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "component", type: BuildingBlockManagementVersionSelectorComponent, selector: "valtimo-building-block-management-version-selector" }, { kind: "directive", type: ValtimoCdsOverflowButtonDirective, selector: "[valtimoCdsOverflowButton]", inputs: ["width"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i3$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }] }); }
1582
1597
  }
1583
1598
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailActionsComponent, decorators: [{
@@ -1597,7 +1612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1597
1612
  ValtimoCdsOverflowButtonDirective,
1598
1613
  LoadingModule,
1599
1614
  ], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"building-block-actions\"\n *ngIf=\"{\n isFinal: isFinal$ | async,\n } as obs\"\n>\n <div class=\"building-block-metadata\">\n <valtimo-building-block-management-version-selector></valtimo-building-block-management-version-selector>\n </div>\n\n <div class=\"building-block-buttons\">\n <ng-template #trigger>\n <button cdsButton=\"tertiary\">\n {{ 'buildingBlockManagement.actions.more' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <cds-overflow-menu\n [customTrigger]=\"trigger\"\n class=\"overflow-button\"\n valtimoCdsOverflowButton\n [width]=\"250\"\n [offset]=\"{y: 48, x: 37}\"\n >\n <cds-overflow-menu-option\n [id]=\"'exportBuildingBlock'\"\n (selected)=\"export()\"\n [disabled]=\"(actionInProgress$ | async) || (exporting$ | async)\"\n >\n {{\n 'buildingBlockManagement.overflowMenu.export'\n | translate: {value: buildingBlockName$ | async}\n }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n *ngIf=\"!obs.isFinal\"\n [disabled]=\"actionInProgress$ | async\"\n (selected)=\"finalizeDraft()\"\n >\n {{ 'buildingBlockManagement.actions.makeFinal' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n *ngIf=\"obs.isFinal\"\n [disabled]=\"actionInProgress$ | async\"\n (selected)=\"openDraftModal()\"\n >\n {{ 'buildingBlockManagement.actions.createDraft' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n</div>\n\n<ng-template #exportingMessage>\n <div class=\"exporting-message\">\n <span class=\"cds--inline-notification__title\">{{\n 'buildingBlockManagement.overflowMenu.preparingDownload' | translate\n }}</span>\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n\n<cds-modal\n *ngIf=\"{open: showDraftModal$ | async} as obs\"\n [open]=\"obs.open\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"closeDraftModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeDraftModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'buildingBlockManagement.actions.draft.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"draftForm\" cdsModalContent class=\"bb-management-actions__modal\" [cdsLayer]=\"1\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"draftForm.disabled\"\n [invalid]=\"versionTag.touched && versionTag.invalid\"\n >\n <span class=\"label-with-tooltip select-label\">\n {{ 'buildingBlockManagement.actions.draft.version' | translate }}\n </span>\n\n <input\n formControlName=\"versionTag\"\n cdsText\n placeholder=\"{{ 'buildingBlockManagement.actions.draft.placeholder' | translate }}\"\n />\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeDraftModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"draftForm.invalid || (actionInProgress$ | async)\"\n (click)=\"createDraft()\"\n >\n {{ 'buildingBlockManagement.actions.draft.confirm' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".building-block-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end}.building-block-actions ::ng-deep .version-selection{width:160px}.building-block-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.bb-management-actions__modal{min-width:320px}.building-block-metadata{display:flex;gap:24px;align-items:flex-end}.building-block-buttons{display:flex;align-items:center;gap:16px}::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%}::ng-deep .cds--text-input__field-wrapper cds-label{width:100%}.exporting-message{display:flex;align-items:center;gap:8px}\n"] }]
1600
- }], ctorParameters: () => [{ type: BuildingBlockManagementApiService }, { type: BuildingBlockManagementDetailService }, { type: i2$2.FormBuilder }, { type: i1.GlobalNotificationService }, { type: i4$1.TranslateService }, { type: Document, decorators: [{
1615
+ }], ctorParameters: () => [{ type: BuildingBlockManagementApiService }, { type: BuildingBlockManagementDetailService }, { type: i2$2.FormBuilder }, { type: i1.GlobalNotificationService }, { type: i2$3.TranslateService }, { type: Document, decorators: [{
1601
1616
  type: Inject,
1602
1617
  args: [DOCUMENT]
1603
1618
  }] }], propDecorators: { _exportMessageTemplateRef: [{
@@ -1605,6 +1620,211 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1605
1620
  args: ['exportingMessage']
1606
1621
  }] } });
1607
1622
 
1623
+ /*
1624
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
1625
+ *
1626
+ * Licensed under EUPL, Version 1.2 (the "License");
1627
+ * you may not use this file except in compliance with the License.
1628
+ * You may obtain a copy of the License at
1629
+ *
1630
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
1631
+ *
1632
+ * Unless required by applicable law or agreed to in writing, software
1633
+ * distributed under the License is distributed on an "AS IS" basis,
1634
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1635
+ * See the License for the specific language governing permissions and
1636
+ * limitations under the License.
1637
+ */
1638
+ class BuildingBlockManagementFormsComponent {
1639
+ get _partialPagination() {
1640
+ return this._partialPagination$.getValue();
1641
+ }
1642
+ constructor(buildingBlockManagementDetailService, buildingBlockManagementApiService, translateService, iconService, router, notificationService) {
1643
+ this.buildingBlockManagementDetailService = buildingBlockManagementDetailService;
1644
+ this.buildingBlockManagementApiService = buildingBlockManagementApiService;
1645
+ this.translateService = translateService;
1646
+ this.iconService = iconService;
1647
+ this.router = router;
1648
+ this.notificationService = notificationService;
1649
+ this.$loading = signal(true);
1650
+ this._buildingBlockFormDefinitions$ = new BehaviorSubject([]);
1651
+ this._buildingBlockFormDefinitionItems = [];
1652
+ this.buildingBlockFormDefinitionItems$ = combineLatest([this._buildingBlockFormDefinitions$, this.translateService.stream('key')]).pipe(map(([formDefinitions]) => formDefinitions.map(definition => ({
1653
+ ...definition,
1654
+ readOnlyText: definition.readOnly
1655
+ ? this.translateService.instant('formManagement.readOnly')
1656
+ : '',
1657
+ }))), tap(buildingBlockFormDefinitionItems => (this._buildingBlockFormDefinitionItems = buildingBlockFormDefinitionItems)));
1658
+ this.FIELDS = [
1659
+ { key: 'name', label: 'buildingBlockManagement.formDefinition.name' },
1660
+ {
1661
+ key: 'readOnlyText',
1662
+ label: '',
1663
+ viewType: ViewType.TAGS,
1664
+ },
1665
+ ];
1666
+ this.onDeleteClick = (form) => {
1667
+ this._formToDelete = form;
1668
+ this.showDeleteModal$.next(true);
1669
+ };
1670
+ this.ACTION_ITEMS = [
1671
+ {
1672
+ label: 'interface.edit',
1673
+ callback: this.onEditClick.bind(this),
1674
+ type: 'normal',
1675
+ disabledCallback: this.editDisabled.bind(this),
1676
+ },
1677
+ {
1678
+ label: 'interface.delete',
1679
+ callback: this.onDeleteClick,
1680
+ type: 'danger',
1681
+ disabledCallback: this.deleteDisabled.bind(this),
1682
+ },
1683
+ ];
1684
+ this.isFinal$ = this.buildingBlockManagementDetailService.isFinal$;
1685
+ this.showCreateModal$ = new BehaviorSubject(false);
1686
+ this.showDeleteModal$ = new BehaviorSubject(false);
1687
+ this.upload$ = new BehaviorSubject(false);
1688
+ this._collectionSize$ = new BehaviorSubject(0);
1689
+ this._partialPagination$ = new BehaviorSubject({
1690
+ page: 1,
1691
+ size: 10,
1692
+ });
1693
+ this.pagination$ = combineLatest([
1694
+ this._collectionSize$,
1695
+ this._partialPagination$,
1696
+ ]).pipe(map(([collectionSize, partialPagination]) => ({ ...partialPagination, collectionSize })));
1697
+ this.searchTerm$ = new BehaviorSubject('');
1698
+ this._subscriptions = new Subscription();
1699
+ this._isFinal = false;
1700
+ this.iconService.registerAll([Upload16, Add16]);
1701
+ }
1702
+ ngOnInit() {
1703
+ this._subscriptions.add(combineLatest([
1704
+ this.buildingBlockManagementDetailService.buildingBlockDefinitionKey$,
1705
+ this.buildingBlockManagementDetailService.buildingBlockDefinitionVersionTag$,
1706
+ ])
1707
+ .pipe(distinctUntilChanged((a, b) => isEqual(a, b)), tap(() => this.$loading.set(true)), switchMap(([key, versionTag]) => combineLatest([
1708
+ this.buildingBlockManagementDetailService.reloadFormDefinitions$,
1709
+ this._partialPagination$,
1710
+ this.searchTerm$,
1711
+ ]).pipe(tap(() => this.$loading.set(true)), switchMap(([, pagination, searchTerm]) => this.buildingBlockManagementApiService.getBuildingBlockFormDefinitions(key, versionTag, {
1712
+ page: (pagination?.page ?? 1) - 1,
1713
+ size: pagination?.size ?? 10,
1714
+ ...(searchTerm && { searchTerm }),
1715
+ })))), tap(response => {
1716
+ this._collectionSize$.next(response?.totalElements ?? 0);
1717
+ this._buildingBlockFormDefinitions$.next(response?.content ?? []);
1718
+ this.$loading.set(false);
1719
+ }))
1720
+ .subscribe());
1721
+ this._subscriptions.add(this.isFinal$.subscribe(isFinal => (this._isFinal = isFinal)));
1722
+ }
1723
+ ngOnDestroy() {
1724
+ this._subscriptions.unsubscribe();
1725
+ }
1726
+ onRowClick(formDefinition) {
1727
+ this.navigateToFormDefinition(formDefinition.id);
1728
+ }
1729
+ navigateToFormDefinition(formDefinitionId, upload = false) {
1730
+ this.router.navigate([
1731
+ '/building-block-management',
1732
+ 'building-block',
1733
+ this.buildingBlockManagementDetailService.buildingBlockDefinitionKey,
1734
+ 'version',
1735
+ this.buildingBlockManagementDetailService.buildingBlockDefinitionVersionTag,
1736
+ BUILDING_BLOCK_MANAGEMENT_TABS.FORMS,
1737
+ formDefinitionId,
1738
+ ], { queryParams: { ...(upload && { upload: true }) } });
1739
+ }
1740
+ onCreateClick() {
1741
+ this.showCreateModal$.next(true);
1742
+ }
1743
+ onUploadClick() {
1744
+ this.upload$.next(true);
1745
+ this.showCreateModal$.next(true);
1746
+ }
1747
+ onGoBackFromCreateEvent() {
1748
+ this.showCreateModal$.next(false);
1749
+ this.upload$.next(false);
1750
+ }
1751
+ onFormDefinitionCreateEvent(formDefinitionId) {
1752
+ this.showCreateModal$.next(false);
1753
+ this.notificationService.showToast({
1754
+ type: 'success',
1755
+ title: this.translateService.instant('formManagement.notifications.created'),
1756
+ });
1757
+ this.navigateToFormDefinition(formDefinitionId);
1758
+ }
1759
+ onFormDefinitionUploadEvent(formDefinitionId) {
1760
+ this.showCreateModal$.next(false);
1761
+ this.upload$.next(false);
1762
+ this.notificationService.showToast({
1763
+ type: 'success',
1764
+ title: this.translateService.instant('formManagement.notifications.created'),
1765
+ });
1766
+ this.navigateToFormDefinition(formDefinitionId, true);
1767
+ }
1768
+ onEditClick(form) {
1769
+ this.onRowClick(form);
1770
+ }
1771
+ onDeleteConfirm() {
1772
+ if (!this._formToDelete)
1773
+ return;
1774
+ this.$loading.set(true);
1775
+ this.buildingBlockManagementApiService
1776
+ .deleteBuildingBlockFormDefinition(this.buildingBlockManagementDetailService.buildingBlockDefinitionKey, this.buildingBlockManagementDetailService.buildingBlockDefinitionVersionTag, this._formToDelete.id)
1777
+ .subscribe({
1778
+ next: () => {
1779
+ this.notificationService.showToast({
1780
+ type: 'success',
1781
+ title: this.translateService.instant('formManagement.notifications.deleted'),
1782
+ });
1783
+ this.buildingBlockManagementDetailService.reloadFormDefinitions();
1784
+ },
1785
+ error: () => {
1786
+ this.notificationService.showToast({
1787
+ type: 'error',
1788
+ title: this.translateService.instant('formManagement.notifications.deletionError'),
1789
+ });
1790
+ this.$loading.set(false);
1791
+ },
1792
+ });
1793
+ }
1794
+ paginationClicked(page) {
1795
+ this.updatePagination({ page });
1796
+ }
1797
+ paginationSet(size) {
1798
+ this.updatePagination({ size, page: 1 });
1799
+ }
1800
+ searchTermEntered(searchTerm) {
1801
+ this.searchTerm$.next(searchTerm);
1802
+ }
1803
+ updatePagination(update) {
1804
+ this._partialPagination$.next({ ...this._partialPagination, ...update });
1805
+ }
1806
+ editDisabled() {
1807
+ return this._isFinal;
1808
+ }
1809
+ deleteDisabled(form) {
1810
+ return form.readOnly || this._isFinal;
1811
+ }
1812
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementFormsComponent, deps: [{ token: BuildingBlockManagementDetailService }, { token: BuildingBlockManagementApiService }, { token: i2$3.TranslateService }, { token: i3$1.IconService }, { token: i3.Router }, { token: i1.GlobalNotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
1813
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BuildingBlockManagementFormsComponent, isStandalone: true, selector: "valtimo-building-block-management-forms", 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<valtimo-carbon-list\n [fields]=\"FIELDS\"\n [actionItems]=\"ACTION_ITEMS\"\n [items]=\"buildingBlockFormDefinitionItems$ | async\"\n [loading]=\"$loading()\"\n [pagination]=\"pagination$ | async\"\n (rowClicked)=\"onRowClick($event)\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (searchStringSubmit)=\"searchTermEntered($event)\"\n>\n <div carbonToolbarContent>\n <div class=\"valtimo-building-block-management-list__actions\">\n <button\n cdsButton=\"ghost\"\n [iconOnly]=\"true\"\n (click)=\"onUploadClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"onCreateClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </div>\n</valtimo-carbon-list>\n\n<valtimo-form-management-create\n *ngIf=\"showCreateModal$ | async\"\n [upload]=\"upload$ | async\"\n (goBackEvent)=\"onGoBackFromCreateEvent()\"\n (afterCreateEvent)=\"onFormDefinitionCreateEvent($event)\"\n (afterUploadEvent)=\"onFormDefinitionUploadEvent($event)\"\n></valtimo-form-management-create>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formManagement.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"formManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-modal>\n", styles: [":host{display:block}.valtimo-building-block-management-list__actions{display:flex;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i2$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"] }, { kind: "component", type: FormManagementCreateComponent, selector: "valtimo-form-management-create", inputs: ["upload"], outputs: ["goBackEvent", "afterCreateEvent", "afterUploadEvent"] }] }); }
1814
+ }
1815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementFormsComponent, decorators: [{
1816
+ type: Component,
1817
+ args: [{ standalone: true, selector: 'valtimo-building-block-management-forms', imports: [
1818
+ CommonModule,
1819
+ CarbonListModule,
1820
+ TranslateModule,
1821
+ ButtonModule,
1822
+ IconModule,
1823
+ ConfirmationModalModule,
1824
+ FormManagementCreateComponent,
1825
+ ], 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<valtimo-carbon-list\n [fields]=\"FIELDS\"\n [actionItems]=\"ACTION_ITEMS\"\n [items]=\"buildingBlockFormDefinitionItems$ | async\"\n [loading]=\"$loading()\"\n [pagination]=\"pagination$ | async\"\n (rowClicked)=\"onRowClick($event)\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (searchStringSubmit)=\"searchTermEntered($event)\"\n>\n <div carbonToolbarContent>\n <div class=\"valtimo-building-block-management-list__actions\">\n <button\n cdsButton=\"ghost\"\n [iconOnly]=\"true\"\n (click)=\"onUploadClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n <svg cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n (click)=\"onCreateClick()\"\n [disabled]=\"(isFinal$ | async) || $loading()\"\n >\n {{ 'interface.create' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </div>\n</valtimo-carbon-list>\n\n<valtimo-form-management-create\n *ngIf=\"showCreateModal$ | async\"\n [upload]=\"upload$ | async\"\n (goBackEvent)=\"onGoBackFromCreateEvent()\"\n (afterCreateEvent)=\"onFormDefinitionCreateEvent($event)\"\n (afterUploadEvent)=\"onFormDefinitionUploadEvent($event)\"\n></valtimo-form-management-create>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"formManagement.deleteModal.content\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"formManagement.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm()\"\n></valtimo-confirmation-modal>\n", styles: [":host{display:block}.valtimo-building-block-management-list__actions{display:flex;gap:.5rem}\n"] }]
1826
+ }], ctorParameters: () => [{ type: BuildingBlockManagementDetailService }, { type: BuildingBlockManagementApiService }, { type: i2$3.TranslateService }, { type: i3$1.IconService }, { type: i3.Router }, { type: i1.GlobalNotificationService }] });
1827
+
1608
1828
  /*
1609
1829
  * Copyright 2015-2025 Ritense BV, the Netherlands.
1610
1830
  *
@@ -1657,7 +1877,7 @@ class BuildingBlockManagementDetailComponent {
1657
1877
  return [];
1658
1878
  }
1659
1879
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailComponent, deps: [{ token: i3.ActivatedRoute }, { token: BuildingBlockManagementDetailService }, { token: i2$1.PageTitleService }, { token: BUILDING_BLOCK_MANAGEMENT_TAB_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1660
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: BuildingBlockManagementDetailComponent, isStandalone: true, selector: "valtimo-building-block-management-detail", providers: [BuildingBlockManagementDetailService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (activeTabKey$ | async; as activeTabKey) {\n <cds-tabs type=\"line\">\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.general' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-general></valtimo-building-block-management-general>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.document' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-document></valtimo-building-block-management-document>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.processes' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-processes></valtimo-building-block-management-processes>\n }\n </cds-tab>\n }\n\n @for (customTab of customTabs; track customTab.tabRoute) {\n @if ((customTab.enabled$ | async) && {active: activeTabKey === customTab.tabRoute}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"customTab.translationKey | translate\"\n (selected)=\"switchTab(customTab.tabRoute)\"\n >\n @if (obs.active) {\n <ng-container *ngComponentOutlet=\"customTab.component\"></ng-container>\n }\n </cds-tab>\n }\n }\n </cds-tabs>\n}\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"building-block-management-detail__header\">\n <valtimo-building-block-management-detail-actions></valtimo-building-block-management-detail-actions>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-building-block-management-list__actions{display:flex}:host ::ng-deep .building-block-management-detail__header{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}:host ::ng-deep .cds--tab-content{margin:0!important;padding-left:0!important;padding-right:0!important;outline:none!important}.building-block-management-header{display:flex;justify-content:space-between}\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: i4.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: IconModule }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i3$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: BuildingBlockManagementGeneralComponent, selector: "valtimo-building-block-management-general" }, { kind: "component", type: BuildingBlockManagementDocumentComponent, selector: "valtimo-building-block-management-document" }, { kind: "component", type: BuildingBlockManagementProcessesComponent, selector: "valtimo-building-block-management-processes" }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: BuildingBlockManagementDetailActionsComponent, selector: "valtimo-building-block-management-detail-actions" }, { kind: "ngmodule", type: DialogModule }] }); }
1880
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: BuildingBlockManagementDetailComponent, isStandalone: true, selector: "valtimo-building-block-management-detail", providers: [BuildingBlockManagementDetailService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (activeTabKey$ | async; as activeTabKey) {\n <cds-tabs type=\"line\">\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.general' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-general></valtimo-building-block-management-general>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.document' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-document></valtimo-building-block-management-document>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.processes' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-processes></valtimo-building-block-management-processes>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.FORMS}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.forms' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.FORMS)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-forms></valtimo-building-block-management-forms>\n }\n </cds-tab>\n }\n\n @for (customTab of customTabs; track customTab.tabRoute) {\n @if ((customTab.enabled$ | async) && {active: activeTabKey === customTab.tabRoute}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"customTab.translationKey | translate\"\n (selected)=\"switchTab(customTab.tabRoute)\"\n >\n @if (obs.active) {\n <ng-container *ngComponentOutlet=\"customTab.component\"></ng-container>\n }\n </cds-tab>\n }\n }\n </cds-tabs>\n}\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"building-block-management-detail__header\">\n <valtimo-building-block-management-detail-actions></valtimo-building-block-management-detail-actions>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-building-block-management-list__actions{display:flex}:host ::ng-deep .building-block-management-detail__header{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}:host ::ng-deep .cds--tab-content{margin:0!important;padding-left:0!important;padding-right:0!important;outline:none!important}.building-block-management-header{display:flex;justify-content:space-between}\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: i4.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: IconModule }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i3$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: BuildingBlockManagementGeneralComponent, selector: "valtimo-building-block-management-general" }, { kind: "component", type: BuildingBlockManagementDocumentComponent, selector: "valtimo-building-block-management-document" }, { kind: "component", type: BuildingBlockManagementProcessesComponent, selector: "valtimo-building-block-management-processes" }, { kind: "component", type: BuildingBlockManagementFormsComponent, selector: "valtimo-building-block-management-forms" }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: BuildingBlockManagementDetailActionsComponent, selector: "valtimo-building-block-management-detail-actions" }, { kind: "ngmodule", type: DialogModule }] }); }
1661
1881
  }
1662
1882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementDetailComponent, decorators: [{
1663
1883
  type: Component,
@@ -1671,10 +1891,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1671
1891
  BuildingBlockManagementGeneralComponent,
1672
1892
  BuildingBlockManagementDocumentComponent,
1673
1893
  BuildingBlockManagementProcessesComponent,
1894
+ BuildingBlockManagementFormsComponent,
1674
1895
  RenderInPageHeaderDirective,
1675
1896
  BuildingBlockManagementDetailActionsComponent,
1676
1897
  DialogModule,
1677
- ], providers: [BuildingBlockManagementDetailService], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (activeTabKey$ | async; as activeTabKey) {\n <cds-tabs type=\"line\">\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.general' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-general></valtimo-building-block-management-general>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.document' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-document></valtimo-building-block-management-document>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.processes' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-processes></valtimo-building-block-management-processes>\n }\n </cds-tab>\n }\n\n @for (customTab of customTabs; track customTab.tabRoute) {\n @if ((customTab.enabled$ | async) && {active: activeTabKey === customTab.tabRoute}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"customTab.translationKey | translate\"\n (selected)=\"switchTab(customTab.tabRoute)\"\n >\n @if (obs.active) {\n <ng-container *ngComponentOutlet=\"customTab.component\"></ng-container>\n }\n </cds-tab>\n }\n }\n </cds-tabs>\n}\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"building-block-management-detail__header\">\n <valtimo-building-block-management-detail-actions></valtimo-building-block-management-detail-actions>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-building-block-management-list__actions{display:flex}:host ::ng-deep .building-block-management-detail__header{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}:host ::ng-deep .cds--tab-content{margin:0!important;padding-left:0!important;padding-right:0!important;outline:none!important}.building-block-management-header{display:flex;justify-content:space-between}\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"] }]
1898
+ ], providers: [BuildingBlockManagementDetailService], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (activeTabKey$ | async; as activeTabKey) {\n <cds-tabs type=\"line\">\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.general' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.GENERAL)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-general></valtimo-building-block-management-general>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.document' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.DOCUMENT)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-document></valtimo-building-block-management-document>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.processes' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.PROCESSES)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-processes></valtimo-building-block-management-processes>\n }\n </cds-tab>\n }\n\n @if ({active: activeTabKey === BUILDING_BLOCK_MANAGEMENT_TABS.FORMS}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"'buildingBlockManagement.tabs.forms' | translate\"\n (selected)=\"switchTab(BUILDING_BLOCK_MANAGEMENT_TABS.FORMS)\"\n >\n @if (obs.active) {\n <valtimo-building-block-management-forms></valtimo-building-block-management-forms>\n }\n </cds-tab>\n }\n\n @for (customTab of customTabs; track customTab.tabRoute) {\n @if ((customTab.enabled$ | async) && {active: activeTabKey === customTab.tabRoute}; as obs) {\n <cds-tab\n [active]=\"obs.active\"\n [heading]=\"customTab.translationKey | translate\"\n (selected)=\"switchTab(customTab.tabRoute)\"\n >\n @if (obs.active) {\n <ng-container *ngComponentOutlet=\"customTab.component\"></ng-container>\n }\n </cds-tab>\n }\n }\n </cds-tabs>\n}\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"building-block-management-detail__header\">\n <valtimo-building-block-management-detail-actions></valtimo-building-block-management-detail-actions>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-building-block-management-list__actions{display:flex}:host ::ng-deep .building-block-management-detail__header{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}:host ::ng-deep .cds--tab-content{margin:0!important;padding-left:0!important;padding-right:0!important;outline:none!important}.building-block-management-header{display:flex;justify-content:space-between}\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"] }]
1678
1899
  }], ctorParameters: () => [{ type: i3.ActivatedRoute }, { type: BuildingBlockManagementDetailService }, { type: i2$1.PageTitleService }, { type: undefined, decorators: [{
1679
1900
  type: Optional
1680
1901
  }, {
@@ -1712,6 +1933,7 @@ const routes = [
1712
1933
  title: 'buildingBlockManagement.detail.title',
1713
1934
  roles: [ROLE_ADMIN],
1714
1935
  customPageTitle: true,
1936
+ context: 'buildingBlock',
1715
1937
  },
1716
1938
  },
1717
1939
  {
@@ -1735,6 +1957,17 @@ const routes = [
1735
1957
  context: 'buildingBlock',
1736
1958
  },
1737
1959
  },
1960
+ {
1961
+ path: `building-block-management/building-block/:buildingBlockDefinitionKey/version/:buildingBlockDefinitionVersionTag/${BUILDING_BLOCK_MANAGEMENT_TABS.FORMS}/:formDefinitionId`,
1962
+ component: FormManagementEditComponent,
1963
+ canActivate: [AuthGuardService],
1964
+ data: {
1965
+ title: 'formManagement.edit.title',
1966
+ roles: [ROLE_ADMIN],
1967
+ customPageTitle: true,
1968
+ context: 'buildingBlock',
1969
+ },
1970
+ },
1738
1971
  ];
1739
1972
  class BuildingBlockManagementRouting {
1740
1973
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BuildingBlockManagementRouting, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }