@valtimo/object 13.1.3 → 13.2.1

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.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common/http';
4
- import * as i1$1 from '@valtimo/shared';
4
+ import * as i2 from '@valtimo/shared';
5
5
  import { ROLE_USER } from '@valtimo/shared';
6
6
  import * as i6 from '@angular/router';
7
7
  import { RouterModule } from '@angular/router';
@@ -9,9 +9,9 @@ import * as i8 from '@angular/common';
9
9
  import { CommonModule, AsyncPipe } from '@angular/common';
10
10
  import { AuthGuardService } from '@valtimo/security';
11
11
  import { map, BehaviorSubject, combineLatest, distinctUntilChanged, of, startWith, filter, throwError, Subject } from 'rxjs';
12
- import { take, tap, switchMap, catchError, finalize } from 'rxjs/operators';
12
+ import { take, tap, switchMap, catchError, finalize, map as map$1 } from 'rxjs/operators';
13
13
  import * as i3 from '@valtimo/object-management';
14
- import * as i5 from '@valtimo/components';
14
+ import * as i1$1 from '@valtimo/components';
15
15
  import { WidgetModule, SpinnerModule, FormIoModule, TooltipIconModule, ConfirmationModalModule, SearchFieldsModule, ValtimoCdsModalDirective, CarbonListModule } from '@valtimo/components';
16
16
  import * as i7 from '@ngx-translate/core';
17
17
  import { TranslateModule } from '@ngx-translate/core';
@@ -60,15 +60,15 @@ class ObjectService {
60
60
  removeEmptyStringValuesFromSubmission(submission) {
61
61
  return Object.fromEntries(Object.entries(submission).filter(([_, value]) => value !== ''));
62
62
  }
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectService, deps: [{ token: i1.HttpClient }, { token: i1$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
64
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectService, providedIn: 'root' }); }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
64
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectService, providedIn: 'root' }); }
65
65
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectService, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectService, decorators: [{
67
67
  type: Injectable,
68
68
  args: [{
69
69
  providedIn: 'root',
70
70
  }]
71
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.ConfigService }] });
71
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
72
72
 
73
73
  /*
74
74
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -146,15 +146,15 @@ class ObjectColumnService {
146
146
  return searchListColumnDisplayType;
147
147
  }
148
148
  }
149
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectColumnService, deps: [{ token: i1$1.ConfigService }, { token: i3.ObjectManagementService }], target: i0.ɵɵFactoryTarget.Injectable }); }
150
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectColumnService, providedIn: 'root' }); }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectColumnService, deps: [{ token: i2.ConfigService }, { token: i3.ObjectManagementService }], target: i0.ɵɵFactoryTarget.Injectable }); }
150
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectColumnService, providedIn: 'root' }); }
151
151
  }
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectColumnService, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectColumnService, decorators: [{
153
153
  type: Injectable,
154
154
  args: [{
155
155
  providedIn: 'root',
156
156
  }]
157
- }], ctorParameters: () => [{ type: i1$1.ConfigService }, { type: i3.ObjectManagementService }] });
157
+ }], ctorParameters: () => [{ type: i2.ConfigService }, { type: i3.ObjectManagementService }] });
158
158
 
159
159
  /*
160
160
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -402,13 +402,13 @@ class ObjectListComponent {
402
402
  });
403
403
  return filters;
404
404
  }
405
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectListComponent, deps: [{ token: i1$1.GlobalNotificationService }, { token: ObjectColumnService }, { token: i3.ObjectManagementService }, { token: ObjectService }, { token: i5.PageTitleService }, { token: i6.ActivatedRoute }, { token: i6.Router }, { token: i7.TranslateService }, { token: i7.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectListComponent, isStandalone: false, selector: "valtimo-object-list", 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<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n pagination: pagination$ | async,\n disableInput: disableInput$ | async,\n fields: fields$ | async,\n objectConfiguration: objectConfiguration$ | async,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createNewModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n (click)=\"openModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n class=\"ml-3\"\n [disabled]=\"obs.disableInput || obs.loading\"\n >\n {{ 'object.createObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"obs.loading\"\n [searchFields]=\"objectSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [objectManagementId]=\"objectManagementId$ | async\"\n [setValuesSubject$]=\"null\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.objectConfiguration\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"objectConfigurationList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'object.createObject' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createNewModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n formDefinition: formDefinition$ | async,\n disableInput: disableInput$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.createObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formDefinition\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"addObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-template>\n", styles: [".loading-icon{display:flex;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: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i8$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i8$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i5.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i8$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i8$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i8$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i8$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i8$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i5.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "inputDisabled", "externalSearchField"], outputs: ["doSearch"] }, { kind: "directive", type: i5.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: i5.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
405
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectListComponent, deps: [{ token: i2.GlobalNotificationService }, { token: ObjectColumnService }, { token: i3.ObjectManagementService }, { token: ObjectService }, { token: i1$1.PageTitleService }, { token: i6.ActivatedRoute }, { token: i6.Router }, { token: i7.TranslateService }, { token: i7.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
406
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ObjectListComponent, isStandalone: false, selector: "valtimo-object-list", 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<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n pagination: pagination$ | async,\n disableInput: disableInput$ | async,\n fields: fields$ | async,\n objectConfiguration: objectConfiguration$ | async,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createNewModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n (click)=\"openModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n class=\"ml-3\"\n [disabled]=\"obs.disableInput || obs.loading\"\n >\n {{ 'object.createObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"obs.loading\"\n [searchFields]=\"objectSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [objectManagementId]=\"objectManagementId$ | async\"\n [setValuesSubject$]=\"null\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.objectConfiguration\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"objectConfigurationList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'object.createObject' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createNewModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n formDefinition: formDefinition$ | async,\n disableInput: disableInput$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.createObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formDefinition\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"addObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-template>\n", styles: [".loading-icon{display:flex;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: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i8$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i8$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i1$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i8$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i8$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i8$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i8$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i8$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i1$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "inputDisabled", "externalSearchField"], outputs: ["doSearch"] }, { kind: "directive", type: i1$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: i1$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
407
407
  }
408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectListComponent, decorators: [{
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectListComponent, decorators: [{
409
409
  type: Component,
410
410
  args: [{ standalone: false, selector: 'valtimo-object-list', 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<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n pagination: pagination$ | async,\n disableInput: disableInput$ | async,\n fields: fields$ | async,\n objectConfiguration: objectConfiguration$ | async,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createNewModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n (click)=\"openModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n class=\"ml-3\"\n [disabled]=\"obs.disableInput || obs.loading\"\n >\n {{ 'object.createObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"obs.loading\"\n [searchFields]=\"objectSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [objectManagementId]=\"objectManagementId$ | async\"\n [setValuesSubject$]=\"null\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.objectConfiguration\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"objectConfigurationList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'object.createObject' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createNewModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n formDefinition: formDefinition$ | async,\n disableInput: disableInput$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.createObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formDefinition\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"addObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-template>\n", styles: [".loading-icon{display:flex;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"] }]
411
- }], ctorParameters: () => [{ type: i1$1.GlobalNotificationService }, { type: ObjectColumnService }, { type: i3.ObjectManagementService }, { type: ObjectService }, { type: i5.PageTitleService }, { type: i6.ActivatedRoute }, { type: i6.Router }, { type: i7.TranslateService }, { type: i7.TranslateService }] });
411
+ }], ctorParameters: () => [{ type: i2.GlobalNotificationService }, { type: ObjectColumnService }, { type: i3.ObjectManagementService }, { type: ObjectService }, { type: i1$1.PageTitleService }, { type: i6.ActivatedRoute }, { type: i6.Router }, { type: i7.TranslateService }, { type: i7.TranslateService }] });
412
412
 
413
413
  /*
414
414
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -476,10 +476,10 @@ class ObjectStateService {
476
476
  setModalType(type) {
477
477
  this._modalType$.next(type);
478
478
  }
479
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
480
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectStateService, providedIn: 'root' }); }
479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
480
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectStateService, providedIn: 'root' }); }
481
481
  }
482
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectStateService, decorators: [{
482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectStateService, decorators: [{
483
483
  type: Injectable,
484
484
  args: [{
485
485
  providedIn: 'root',
@@ -511,10 +511,10 @@ class TabService {
511
511
  set currentTab(tab) {
512
512
  this._currentTab$.next(tab);
513
513
  }
514
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
515
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabService, providedIn: 'root' }); }
514
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
515
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabService, providedIn: 'root' }); }
516
516
  }
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabService, decorators: [{
517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabService, decorators: [{
518
518
  type: Injectable,
519
519
  args: [{
520
520
  providedIn: 'root',
@@ -693,13 +693,13 @@ class ObjectDetailComponent {
693
693
  href: `/objects/${objectTypeId}`,
694
694
  });
695
695
  }
696
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectDetailComponent, deps: [{ token: i5.BreadcrumbService }, { token: i1$1.GlobalNotificationService }, { token: i3.ObjectManagementService }, { token: ObjectService }, { token: i6.ActivatedRoute }, { token: i6.Router }, { token: i7.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
697
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectDetailComponent, isStandalone: false, selector: "valtimo-object-detail", 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<ng-container\n *ngIf=\"{\n formioFormSummary: formioFormSummary$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <div class=\"btn-group mb-1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <ng-container *ngTemplateOutlet=\"widget; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button [disabled]=\"obs.disableInput\" (click)=\"openModal()\" cdsButton=\"primary\" size=\"md\">\n {{ 'object.editObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n <button (click)=\"deleteObject()\" cdsButton=\"danger\" size=\"md\" class=\"ml-3\">\n {{ 'object.deleteObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #widget let-obs=\"obs\">\n <valtimo-form-io\n *ngIf=\"obs.formioFormSummary\"\n [form]=\"obs.formioFormSummary\"\n [readOnly]=\"true\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n disableInput: disableInput$ | async,\n formioFormEdit: formioFormEdit$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.editObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formioFormEdit\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"saveObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteObjectUrl$ | async\"\n (confirmEvent)=\"deleteObjectConfirmation()\"\n confirmButtonTextTranslationKey=\"object.deleteObject\"\n titleTranslationKey=\"object.deleteObject\"\n contentTranslationKey=\"object.deleteObjectConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n", styles: [".row{margin:0}.object-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{border:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i8$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i8$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i8$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i5.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i8$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i8$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i8$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i8$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i8$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i5.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: "directive", type: i5.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
696
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectDetailComponent, deps: [{ token: i1$1.BreadcrumbService }, { token: i2.GlobalNotificationService }, { token: i3.ObjectManagementService }, { token: ObjectService }, { token: i6.ActivatedRoute }, { token: i6.Router }, { token: i7.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
697
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ObjectDetailComponent, isStandalone: false, selector: "valtimo-object-detail", 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<ng-container\n *ngIf=\"{\n formioFormSummary: formioFormSummary$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <div class=\"btn-group mb-1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <ng-container *ngTemplateOutlet=\"widget; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button [disabled]=\"obs.disableInput\" (click)=\"openModal()\" cdsButton=\"primary\" size=\"md\">\n {{ 'object.editObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n <button (click)=\"deleteObject()\" cdsButton=\"danger\" size=\"md\" class=\"ml-3\">\n {{ 'object.deleteObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #widget let-obs=\"obs\">\n <valtimo-form-io\n *ngIf=\"obs.formioFormSummary\"\n [form]=\"obs.formioFormSummary\"\n [readOnly]=\"true\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n disableInput: disableInput$ | async,\n formioFormEdit: formioFormEdit$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.editObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formioFormEdit\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"saveObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteObjectUrl$ | async\"\n (confirmEvent)=\"deleteObjectConfirmation()\"\n confirmButtonTextTranslationKey=\"object.deleteObject\"\n titleTranslationKey=\"object.deleteObject\"\n contentTranslationKey=\"object.deleteObjectConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n", styles: [".row{margin:0}.object-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{border:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i8$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i8$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i8$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i1$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i8$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i8$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i8$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i8$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i8$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i1$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "directive", type: i1$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
698
698
  }
699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectDetailComponent, decorators: [{
699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectDetailComponent, decorators: [{
700
700
  type: Component,
701
701
  args: [{ standalone: false, selector: 'valtimo-object-detail', 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<ng-container\n *ngIf=\"{\n formioFormSummary: formioFormSummary$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <div class=\"btn-group mb-1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <ng-container *ngTemplateOutlet=\"widget; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button [disabled]=\"obs.disableInput\" (click)=\"openModal()\" cdsButton=\"primary\" size=\"md\">\n {{ 'object.editObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n <button (click)=\"deleteObject()\" cdsButton=\"danger\" size=\"md\" class=\"ml-3\">\n {{ 'object.deleteObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #widget let-obs=\"obs\">\n <valtimo-form-io\n *ngIf=\"obs.formioFormSummary\"\n [form]=\"obs.formioFormSummary\"\n [readOnly]=\"true\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n disableInput: disableInput$ | async,\n formioFormEdit: formioFormEdit$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.editObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formioFormEdit\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"saveObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteObjectUrl$ | async\"\n (confirmEvent)=\"deleteObjectConfirmation()\"\n confirmButtonTextTranslationKey=\"object.deleteObject\"\n titleTranslationKey=\"object.deleteObject\"\n contentTranslationKey=\"object.deleteObjectConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n", styles: [".row{margin:0}.object-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{border:none}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
702
- }], ctorParameters: () => [{ type: i5.BreadcrumbService }, { type: i1$1.GlobalNotificationService }, { type: i3.ObjectManagementService }, { type: ObjectService }, { type: i6.ActivatedRoute }, { type: i6.Router }, { type: i7.TranslateService }] });
702
+ }], ctorParameters: () => [{ type: i1$1.BreadcrumbService }, { type: i2.GlobalNotificationService }, { type: i3.ObjectManagementService }, { type: ObjectService }, { type: i6.ActivatedRoute }, { type: i6.Router }, { type: i7.TranslateService }] });
703
703
 
704
704
  /*
705
705
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -740,13 +740,13 @@ class ObjectDetailContainerComponent {
740
740
  this.tabService.currentTab = TabEnum.GENERAL;
741
741
  this.tabSubscription?.unsubscribe();
742
742
  }
743
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectDetailContainerComponent, deps: [{ token: ObjectStateService }, { token: ObjectService }, { token: i6.ActivatedRoute }, { token: i1$1.ConfigService }, { token: TabService }], target: i0.ɵɵFactoryTarget.Component }); }
744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ObjectDetailContainerComponent, isStandalone: false, selector: "valtimo-object-detail-container", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <div class=\"bg-light dossier-header\">\n <h3 class=\"dossier-title\">\n {{ 'object.header' | translate }}\n </h3>\n </div>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'object.tabs.general' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pl-1 pr-1 pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-detail></valtimo-object-detail>\n </div>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: ObjectDetailComponent, selector: "valtimo-object-detail" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
743
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectDetailContainerComponent, deps: [{ token: ObjectStateService }, { token: ObjectService }, { token: i6.ActivatedRoute }, { token: i2.ConfigService }, { token: TabService }], target: i0.ɵɵFactoryTarget.Component }); }
744
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ObjectDetailContainerComponent, isStandalone: false, selector: "valtimo-object-detail-container", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <div class=\"bg-light dossier-header\">\n <h3 class=\"dossier-title\">\n {{ 'object.header' | translate }}\n </h3>\n </div>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'object.tabs.general' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pl-1 pr-1 pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-detail></valtimo-object-detail>\n </div>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: ObjectDetailComponent, selector: "valtimo-object-detail" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
745
745
  }
746
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectDetailContainerComponent, decorators: [{
746
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectDetailContainerComponent, decorators: [{
747
747
  type: Component,
748
748
  args: [{ standalone: false, selector: 'valtimo-object-detail-container', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <div class=\"bg-light dossier-header\">\n <h3 class=\"dossier-title\">\n {{ 'object.header' | translate }}\n </h3>\n </div>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'object.tabs.general' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pl-1 pr-1 pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-detail></valtimo-object-detail>\n </div>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}\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"] }]
749
- }], ctorParameters: () => [{ type: ObjectStateService }, { type: ObjectService }, { type: i6.ActivatedRoute }, { type: i1$1.ConfigService }, { type: TabService }] });
749
+ }], ctorParameters: () => [{ type: ObjectStateService }, { type: ObjectService }, { type: i6.ActivatedRoute }, { type: i2.ConfigService }, { type: TabService }] });
750
750
 
751
751
  /*
752
752
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -778,11 +778,11 @@ const routes = [
778
778
  },
779
779
  ];
780
780
  class ObjectRoutingModule {
781
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
782
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ObjectRoutingModule, imports: [CommonModule, i6.RouterModule], exports: [RouterModule] }); }
783
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
781
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
782
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ObjectRoutingModule, imports: [CommonModule, i6.RouterModule], exports: [RouterModule] }); }
783
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
784
784
  }
785
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectRoutingModule, decorators: [{
785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectRoutingModule, decorators: [{
786
786
  type: NgModule,
787
787
  args: [{
788
788
  imports: [CommonModule, RouterModule.forChild(routes)],
@@ -791,6 +791,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
791
791
  }]
792
792
  }] });
793
793
 
794
+ /*
795
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
796
+ *
797
+ * Licensed under EUPL, Version 1.2 (the "License");
798
+ * you may not use this file except in compliance with the License.
799
+ * You may obtain a copy of the License at
800
+ *
801
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
802
+ *
803
+ * Unless required by applicable law or agreed to in writing, software
804
+ * distributed under the License is distributed on an "AS IS" basis,
805
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
806
+ * See the License for the specific language governing permissions and
807
+ * limitations under the License.
808
+ */
809
+ class ObjectMenuService {
810
+ constructor(http, configService) {
811
+ this.http = http;
812
+ this.configService = configService;
813
+ this.appendObjectMenuItems = (menuItems) => {
814
+ const apiBaseUrl = this.configService.config.valtimoApi.endpointUri;
815
+ return this.getObjects(apiBaseUrl).pipe(map$1(objects => {
816
+ const visibleObjects = objects.filter(obj => obj?.showInDataMenu !== false);
817
+ const objectItems = visibleObjects.map((obj, index) => ({
818
+ link: ['/objects/' + obj.id],
819
+ title: obj.title,
820
+ iconClass: 'icon mdi mdi-dot-circle',
821
+ sequence: index,
822
+ show: true,
823
+ }));
824
+ const index = menuItems.findIndex(item => item.title === 'Objects');
825
+ if (index >= 0) {
826
+ menuItems[index].children = objectItems;
827
+ }
828
+ return menuItems;
829
+ }));
830
+ };
831
+ }
832
+ getObjects(apiBaseUrl) {
833
+ const url = `${apiBaseUrl}v1/object/management/configuration`;
834
+ return this.http.get(url);
835
+ }
836
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectMenuService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
837
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectMenuService, providedIn: 'root' }); }
838
+ }
839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectMenuService, decorators: [{
840
+ type: Injectable,
841
+ args: [{ providedIn: 'root' }]
842
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
843
+
844
+ /*
845
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
846
+ *
847
+ * Licensed under EUPL, Version 1.2 (the "License");
848
+ * you may not use this file except in compliance with the License.
849
+ * You may obtain a copy of the License at
850
+ *
851
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
852
+ *
853
+ * Unless required by applicable law or agreed to in writing, software
854
+ * distributed under the License is distributed on an "AS IS" basis,
855
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
856
+ * See the License for the specific language governing permissions and
857
+ * limitations under the License.
858
+ */
859
+
794
860
  /*
795
861
  * Copyright 2015-2025 Ritense BV, the Netherlands.
796
862
  *
@@ -807,8 +873,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
807
873
  * limitations under the License.
808
874
  */
809
875
  class ObjectModule {
810
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
811
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ObjectModule, declarations: [ObjectListComponent, ObjectDetailContainerComponent, ObjectDetailComponent], imports: [CommonModule,
876
+ constructor(menuService, configService, objectMenuService) {
877
+ this.menuService = menuService;
878
+ this.configService = configService;
879
+ this.objectMenuService = objectMenuService;
880
+ const enabled = this.configService.config?.featureToggles?.enableObjectManagement;
881
+ if (!enabled)
882
+ return;
883
+ this.menuService.registerAppendMenuItemsFunction(this.objectMenuService.appendObjectMenuItems);
884
+ }
885
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectModule, deps: [{ token: i1$1.MenuService }, { token: i2.ConfigService }, { token: ObjectMenuService }], target: i0.ɵɵFactoryTarget.NgModule }); }
886
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ObjectModule, declarations: [ObjectListComponent, ObjectDetailContainerComponent, ObjectDetailComponent], imports: [CommonModule,
812
887
  ObjectRoutingModule,
813
888
  TranslateModule,
814
889
  AsyncPipe,
@@ -826,7 +901,7 @@ class ObjectModule {
826
901
  SearchFieldsModule,
827
902
  ValtimoCdsModalDirective,
828
903
  CarbonListModule] }); }
829
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectModule, imports: [CommonModule,
904
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectModule, imports: [CommonModule,
830
905
  ObjectRoutingModule,
831
906
  TranslateModule,
832
907
  WidgetModule,
@@ -843,7 +918,7 @@ class ObjectModule {
843
918
  SearchFieldsModule,
844
919
  CarbonListModule] }); }
845
920
  }
846
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectModule, decorators: [{
921
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectModule, decorators: [{
847
922
  type: NgModule,
848
923
  args: [{
849
924
  declarations: [ObjectListComponent, ObjectDetailContainerComponent, ObjectDetailComponent],
@@ -869,7 +944,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
869
944
  ],
870
945
  exports: [],
871
946
  }]
872
- }] });
947
+ }], ctorParameters: () => [{ type: i1$1.MenuService }, { type: i2.ConfigService }, { type: ObjectMenuService }] });
873
948
 
874
949
  /*
875
950
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-object.mjs","sources":["../../../../projects/valtimo/object/src/lib/services/object.service.ts","../../../../projects/valtimo/object/src/lib/models/object.model.ts","../../../../projects/valtimo/object/src/lib/services/object-column.service.ts","../../../../projects/valtimo/object/src/lib/components/object-list/object-list.component.ts","../../../../projects/valtimo/object/src/lib/components/object-list/object-list.component.html","../../../../projects/valtimo/object/src/lib/services/tab.enum.ts","../../../../projects/valtimo/object/src/lib/services/object-state.service.ts","../../../../projects/valtimo/object/src/lib/services/tab.service.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/tabs/object-detail/object-detail.component.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/tabs/object-detail/object-detail.component.html","../../../../projects/valtimo/object/src/lib/components/object-detail-container/object-detail-container.component.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/object-detail-container.component.html","../../../../projects/valtimo/object/src/lib/object-routing.module.ts","../../../../projects/valtimo/object/src/lib/object.module.ts","../../../../projects/valtimo/object/src/public-api.ts","../../../../projects/valtimo/object/src/valtimo-object.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectConfiguration} from '../models/object.model';\nimport {FormDefinition} from '@valtimo/form-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n public getObjectsByObjectManagementId(\n objectManagementId: string,\n params?: any\n ): Observable<ObjectConfiguration> {\n return this.http.get<ObjectConfiguration>(\n `${this.valtimoEndpointUri}v1/object/management/configuration/${objectManagementId}/object`,\n {params}\n );\n }\n\n public postObjectsByObjectManagementId(\n objectManagementId: string,\n params?: any,\n payload?: any\n ): Observable<ObjectConfiguration> {\n return this.http.post<ObjectConfiguration>(\n `${this.valtimoEndpointUri}v1/object/management/configuration/${objectManagementId}/object`,\n payload,\n {params}\n );\n }\n\n public createObject(params: {objectManagementId: string}, payload: object): Observable<any> {\n return this.http.post<any>(`${this.valtimoEndpointUri}v1/object`, payload, {params});\n }\n\n public updateObject(\n params: {objectManagementId: string; objectId: string},\n payload: object\n ): Observable<any> {\n return this.http.patch<any>(`${this.valtimoEndpointUri}v1/object`, payload, {params});\n }\n\n public deleteObject(params: {objectManagementId: string; objectId: string}): Observable<any> {\n return this.http.delete<any>(`${this.valtimoEndpointUri}v1/object`, {params});\n }\n\n public getPrefilledObjectFromObjectUrl(params: any): Observable<FormDefinition> {\n return this.http.get<FormDefinition>(`${this.valtimoEndpointUri}v1/object/form`, {params});\n }\n\n public removeEmptyStringValuesFromSubmission(submission) {\n return Object.fromEntries(Object.entries(submission).filter(([_, value]) => value !== ''));\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface ObjectConfiguration {\n content: ObjectConfigurationItem[];\n}\n\ninterface ObjectConfigurationItem {\n id: string;\n items: Item[];\n}\n\ninterface Item {\n key: string;\n value: string;\n}\n\nenum FormType {\n SUMMARY = 'SUMMARY',\n EDITFORM = 'EDITFORM',\n}\n\nenum ColumnType {\n DEFAULT = 'DEFAULT',\n CUSTOM = 'CUSTOM',\n}\n\nexport {ObjectConfiguration, ObjectConfigurationItem, Item, FormType, ColumnType};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {map, Observable} from 'rxjs';\nimport {ObjectManagementService, SearchColumn, SearchListColumn} from '@valtimo/object-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectColumnService {\n constructor(\n private readonly configService: ConfigService,\n private readonly objectManagementService: ObjectManagementService\n ) {}\n\n getObjectColumns(configurationId: string): Observable<Array<SearchColumn>> {\n return this.objectManagementService\n .getSearchList(configurationId)\n .pipe(\n map(\n objectListColumns =>\n objectListColumns &&\n Array.isArray(objectListColumns) &&\n objectListColumns.length > 0 &&\n this.mapObjectListColumnsToSearchColumns(objectListColumns)\n )\n );\n }\n\n private mapObjectListColumnsToSearchColumns(\n searchListColumns: Array<SearchListColumn>\n ): Array<SearchColumn> {\n return searchListColumns.map(searchListColumn => ({\n translationKey: searchListColumn.key,\n sortable: searchListColumn.sortable,\n defaultSort: searchListColumn.defaultSort,\n viewType: this.getDisplayType(searchListColumn.displayType.type),\n propertyName: searchListColumn.path,\n ...(searchListColumn.title && {title: searchListColumn.title}),\n ...(searchListColumn?.displayType?.displayTypeParameters?.enum && {\n enum: searchListColumn.displayType.displayTypeParameters.enum as any,\n }),\n ...(searchListColumn.displayType?.displayTypeParameters?.dateFormat && {\n format: searchListColumn.displayType?.displayTypeParameters?.dateFormat,\n }),\n }));\n }\n\n private getDisplayType(searchListColumnDisplayType: string): string {\n switch (searchListColumnDisplayType) {\n default:\n return searchListColumnDisplayType;\n }\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField, PageTitleService, Pagination} from '@valtimo/components';\nimport {\n GlobalNotificationService,\n SearchField,\n SearchFieldValues,\n SearchFilter,\n SearchFilterRange,\n} from '@valtimo/shared';\nimport {ObjectManagementService, SearchColumn} from '@valtimo/object-management';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n startWith,\n throwError,\n} from 'rxjs';\nimport {catchError, finalize, switchMap, take, tap} from 'rxjs/operators';\nimport {ColumnType, FormType} from '../../models/object.model';\nimport {ObjectColumnService} from '../../services/object-column.service';\nimport {ObjectService} from '../../services/object.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-list',\n templateUrl: './object-list.component.html',\n styleUrls: ['./object-list.component.scss'],\n})\nexport class ObjectListComponent {\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly submission$ = new BehaviorSubject<any>({});\n readonly formValid$ = new BehaviorSubject<boolean>(false);\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly clearForm$ = new BehaviorSubject<boolean>(false);\n readonly columnType$ = new BehaviorSubject<ColumnType>(ColumnType.DEFAULT);\n\n readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n map(params => params.objectManagementId),\n tap(objectManagementId => {\n if (objectManagementId) {\n this.objectManagementService.getObjectById(objectManagementId).subscribe(objectType => {\n if (objectType.title) {\n this.pageTitleService.setCustomPageTitle(objectType.title);\n }\n });\n }\n })\n );\n\n private readonly refreshObjectList$ = new BehaviorSubject<null>(null);\n\n readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n page: 0,\n size: 10,\n });\n\n readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n collectionSize: 0,\n });\n\n readonly pagination$: Observable<Pagination> = combineLatest([\n this.currentPageAndSize$,\n this.pageSizes$,\n ]).pipe(\n map(\n ([currentPage, sizes]) =>\n ({...currentPage, ...sizes, page: currentPage.page + 1}) as Pagination\n )\n );\n\n paginationClicked(newPageNumber): void {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n });\n }\n\n paginationSet(newPageSize): void {\n if (newPageSize) {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, size: newPageSize});\n });\n }\n }\n\n private readonly searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n readonly objectSearchFields$: Observable<Array<SearchField> | null> =\n this.objectManagementId$.pipe(\n distinctUntilChanged(),\n switchMap(objectManagementId =>\n this.objectManagementService.getSearchField(objectManagementId)\n ),\n map(searchFields =>\n searchFields.map(searchField => {\n // @ts-ignore\n searchField.dataType = searchField.dataType.toLowerCase();\n // @ts-ignore\n searchField.fieldType = searchField.fieldType.toLowerCase();\n return searchField;\n })\n )\n );\n\n readonly objectConfiguration$: Observable<Array<any>> = combineLatest([\n this.objectManagementId$,\n this.currentPageAndSize$,\n this.columnType$,\n this.searchFieldValues$,\n this.translateService.stream('key'),\n this.refreshObjectList$,\n ]).pipe(\n switchMap(([objectManagementId, currentPage, columnType, searchFieldValues]) => {\n const handleError = () => {\n this.disableInput();\n return of(null);\n };\n\n if (columnType === ColumnType.CUSTOM) {\n return this.objectService\n .postObjectsByObjectManagementId(\n objectManagementId,\n {\n page: currentPage.page,\n size: currentPage.size,\n },\n Object.keys(searchFieldValues).length > 0\n ? {otherFilters: this.mapSearchValuesToFilters(searchFieldValues)}\n : {}\n )\n .pipe(catchError(() => handleError()));\n }\n\n return this.objectService\n .getObjectsByObjectManagementId(objectManagementId, {\n page: currentPage.page,\n size: currentPage.size,\n })\n .pipe(catchError(() => handleError()));\n }),\n tap(instanceRes => {\n if (instanceRes != null) {\n this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n // @ts-ignore\n this.pageSizes$.next({...sizes, collectionSize: instanceRes.totalElements});\n });\n }\n }),\n map(res =>\n res?.content?.map(record =>\n record?.items?.reduce(\n (obj, item) => Object.assign(obj, {objectId: record.id}, {[item.key]: item.value}),\n {}\n )\n )\n ),\n tap(() => this.loading$.next(false))\n );\n\n readonly formDefinition$: Observable<any> = combineLatest([\n this.objectManagementId$,\n this.clearForm$,\n ]).pipe(\n switchMap(([objectManagementId]) =>\n this.objectService\n .getPrefilledObjectFromObjectUrl({objectManagementId, formType: FormType.EDITFORM})\n .pipe(\n catchError(error => {\n this.handleRetrievingFormError(error);\n this.disableInput();\n return of(null).pipe(startWith(null));\n })\n )\n ),\n map(res => {\n if (res != null) {\n this.enableInput();\n }\n\n return res?.formDefinition;\n }),\n startWith(null),\n finalize(() => this.loading$.next(false))\n );\n\n private readonly columns$: Observable<Array<SearchColumn>> = this.objectManagementId$.pipe(\n switchMap(objectManagementId => this.objectColumnService.getObjectColumns(objectManagementId)),\n map(res => res)\n );\n\n readonly fields$: Observable<Array<ListField>> = combineLatest([\n this.columns$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([columns]) => {\n if (columns?.length > 0) {\n this.columnType$.next(ColumnType.CUSTOM);\n\n return [\n ...columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key: column.translationKey,\n label: column.title || validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType || ''}),\n ...(column.enum && {enum: column.enum}),\n ...(column.format && {format: column.format}),\n };\n }),\n ];\n }\n\n this.columnType$.next(ColumnType.DEFAULT);\n return this.setDefaultFields();\n })\n );\n\n constructor(\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly objectColumnService: ObjectColumnService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectService: ObjectService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translate: TranslateService,\n private readonly translateService: TranslateService\n ) {}\n\n openModal(): void {\n this.showModal$.next(true);\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n this.clearForm$.next(true);\n }\n\n onFormioChange(formio): void {\n if (formio.data != null) {\n this.submission$.next(formio.data);\n this.formValid$.next(formio.isValid);\n }\n }\n\n public addObject(): void {\n this.disableInput();\n combineLatest([this.objectManagementId$, this.submission$, this.formValid$])\n .pipe(\n take(1),\n filter(([objectManagementId, submission, formValid]) => formValid),\n switchMap(([objectManagementId, submission]) =>\n this.objectService\n .createObject(\n {objectManagementId},\n {...this.objectService.removeEmptyStringValuesFromSubmission(submission)}\n )\n .pipe(\n take(1),\n catchError((error: any) => {\n this.handleCreateObjectError(error);\n return throwError(error);\n })\n )\n ),\n finalize(() => {\n this.enableInput();\n })\n )\n .subscribe({\n next: () => {\n this.closeModal();\n this.refreshObjectList();\n this.clearForm$.next(true);\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectCreated'),\n type: 'success',\n });\n },\n });\n }\n\n redirectToDetails(record): void {\n const objectId = record.objectUrl ? record.objectUrl.split('/').pop() : record.objectId;\n this.objectManagementId$.pipe(take(1)).subscribe(configurationId => {\n this.router.navigate([`/objects/${configurationId}/${objectId}`]);\n });\n }\n\n search(searchFieldValues: SearchFieldValues): void {\n this.searchFieldValues$.next(searchFieldValues || {});\n }\n\n private refreshObjectList(): void {\n this.refreshObjectList$.next(null);\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private setDefaultFields() {\n const keys: Array<string> = ['recordIndex', 'objectUrl'];\n return keys.map(key => ({\n label: `${this.translateService.instant(`object.labels.${key}`)}`,\n key,\n sortable: false,\n type: 'string',\n }));\n }\n\n private handleRetrievingFormError(error: any) {\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectRetrievingFormError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private handleCreateObjectError(error: any) {\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectCreationError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private mapSearchValuesToFilters(\n values: SearchFieldValues\n ): Array<SearchFilter | SearchFilterRange> {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue});\n } else {\n // @ts-ignore\n filters.push({key: valueKey, values: [searchValue]});\n }\n });\n\n return filters;\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n pagination: pagination$ | async,\n disableInput: disableInput$ | async,\n fields: fields$ | async,\n objectConfiguration: objectConfiguration$ | async,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createNewModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n (click)=\"openModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n class=\"ml-3\"\n [disabled]=\"obs.disableInput || obs.loading\"\n >\n {{ 'object.createObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"obs.loading\"\n [searchFields]=\"objectSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [objectManagementId]=\"objectManagementId$ | async\"\n [setValuesSubject$]=\"null\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.objectConfiguration\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"objectConfigurationList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'object.createObject' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createNewModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n formDefinition: formDefinition$ | async,\n disableInput: disableInput$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.createObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formDefinition\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"addObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n GENERAL = 'general',\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectStateService {\n private readonly _showModal$ = new Subject();\n private readonly _hideModal$ = new Subject();\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n private readonly _modalType$ = new BehaviorSubject<any>('add');\n\n constructor() {}\n\n get showModal$(): Observable<any> {\n return this._showModal$.asObservable();\n }\n\n get hideModal$(): Observable<any> {\n return this._hideModal$.asObservable();\n }\n\n get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n get modalType$(): Observable<any> {\n return this._modalType$.asObservable();\n }\n\n showModal(): void {\n this._showModal$.next(null);\n }\n\n hideModal(): void {\n this._hideModal$.next(null);\n }\n\n refresh(): void {\n this._refresh$.next(null);\n }\n\n setModalType(type: any): void {\n this._modalType$.next(type);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TabEnum} from './tab.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.GENERAL);\n\n public get currentTab$(): Observable<TabEnum> {\n return this._currentTab$.asObservable();\n }\n\n public set currentTab(tab: TabEnum) {\n this._currentTab$.next(tab);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {ObjectManagementService} from '@valtimo/object-management';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subject, throwError} from 'rxjs';\nimport {catchError, finalize, switchMap, take, tap} from 'rxjs/operators';\nimport {FormType} from '../../../../models/object.model';\nimport {ObjectService} from '../../../../services/object.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-detail',\n templateUrl: './object-detail.component.html',\n styleUrls: ['./object-detail.component.scss'],\n})\nexport class ObjectDetailComponent implements OnDestroy {\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly submission$ = new BehaviorSubject<any>({});\n readonly formValid$ = new BehaviorSubject<boolean>(false);\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly showDeleteModal$ = new Subject<boolean>();\n readonly deleteObjectUrl$ = new BehaviorSubject<string>('');\n\n private readonly refreshObject$ = new BehaviorSubject<null>(null);\n\n readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n map(params => params.objectManagementId),\n tap(objectManagementId => {\n if (!this._settingBreadcrumb && objectManagementId) {\n this._settingBreadcrumb = true;\n this.objectManagementService.getObjectById(objectManagementId).subscribe(objectType => {\n if (objectType.id && objectType.title) {\n this.setBreadcrumb(objectType.id, objectType.title);\n }\n });\n }\n })\n );\n readonly objectId$: Observable<string> = this.route.params.pipe(map(params => params.objectId));\n\n readonly formioFormSummary$: Observable<any> = combineLatest([\n this.objectManagementId$,\n this.objectId$,\n this.refreshObject$,\n ]).pipe(\n switchMap(([objectManagementId, objectId]) =>\n this.objectService\n .getPrefilledObjectFromObjectUrl({objectManagementId, objectId, formType: FormType.SUMMARY})\n .pipe(catchError(() => this.handleRetrievingFormError()))\n ),\n map(res => res?.formDefinition),\n tap(() => this.loading$.next(false))\n );\n\n readonly formioFormEdit$: Observable<any> = combineLatest([\n this.objectManagementId$,\n this.objectId$,\n this.refreshObject$,\n ]).pipe(\n switchMap(([objectManagementId, objectId]) =>\n this.objectService\n .getPrefilledObjectFromObjectUrl({\n objectManagementId,\n objectId,\n formType: FormType.EDITFORM,\n })\n .pipe(\n catchError(() => {\n this.disableInput();\n return this.handleRetrievingFormError();\n })\n )\n ),\n map(res => res?.formDefinition),\n tap(() => this.loading$.next(false))\n );\n\n private _settingBreadcrumb = false;\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectService: ObjectService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translate: TranslateService\n ) {}\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n }\n\n saveObject(): void {\n this.disableInput();\n\n this.updateObject();\n }\n\n deleteObject(): void {\n this.showDeleteModal$.next(true);\n }\n\n deleteObjectConfirmation(): void {\n this.disableInput();\n combineLatest([this.objectManagementId$, this.objectId$])\n .pipe(take(1))\n .subscribe(([objectManagementId, objectId]) => {\n this.objectService\n .deleteObject({objectManagementId, objectId})\n .pipe(\n take(1),\n catchError((error: any) => this.handleDeleteObjectError(error)),\n finalize(() => {\n this.enableInput();\n })\n )\n .subscribe(() => {\n this.closeModal();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectDeleted'),\n type: 'success',\n });\n this.router.navigate([`/objects/${objectManagementId}`]);\n });\n });\n }\n\n openModal(): void {\n this.showModal$.next(true);\n this.enableInput();\n }\n\n onFormioChange(formio): void {\n if (formio.data != null) {\n this.submission$.next(formio.data);\n this.formValid$.next(formio.isValid);\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n private updateObject(): void {\n this.disableInput();\n combineLatest([this.objectManagementId$, this.objectId$, this.submission$, this.formValid$])\n .pipe(take(1))\n .subscribe(([objectManagementId, objectId, submission, formValid]) => {\n if (formValid) {\n submission = this.objectService.removeEmptyStringValuesFromSubmission(submission);\n this.objectService\n .updateObject({objectManagementId, objectId}, {...submission})\n .pipe(\n take(1),\n catchError((error: any) => this.handleUpdateObjectError(error)),\n finalize(() => {\n this.enableInput();\n })\n )\n .subscribe(() => {\n this.closeModal();\n this.refreshObject();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectUpdated'),\n type: 'success',\n });\n });\n }\n });\n }\n\n private refreshObject(): void {\n this.refreshObject$.next(null);\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private handleRetrievingFormError() {\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectRetrievingFormError'),\n type: 'error',\n });\n this.loading$.next(false);\n return of(null);\n }\n\n private handleUpdateObjectError(error: any) {\n this.closeModal();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectUpdateError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private handleDeleteObjectError(error: any) {\n this.closeModal();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectDeleteError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private setBreadcrumb(objectTypeId: string, title: string): void {\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/objects/${objectTypeId}`],\n content: title,\n href: `/objects/${objectTypeId}`,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n formioFormSummary: formioFormSummary$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <div class=\"btn-group mb-1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <ng-container *ngTemplateOutlet=\"widget; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button [disabled]=\"obs.disableInput\" (click)=\"openModal()\" cdsButton=\"primary\" size=\"md\">\n {{ 'object.editObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n <button (click)=\"deleteObject()\" cdsButton=\"danger\" size=\"md\" class=\"ml-3\">\n {{ 'object.deleteObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #widget let-obs=\"obs\">\n <valtimo-form-io\n *ngIf=\"obs.formioFormSummary\"\n [form]=\"obs.formioFormSummary\"\n [readOnly]=\"true\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n disableInput: disableInput$ | async,\n formioFormEdit: formioFormEdit$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.editObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formioFormEdit\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"saveObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteObjectUrl$ | async\"\n (confirmEvent)=\"deleteObjectConfirmation()\"\n confirmButtonTextTranslationKey=\"object.deleteObject\"\n titleTranslationKey=\"object.deleteObject\"\n contentTranslationKey=\"object.deleteObjectConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {map, Observable, Subscription} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectStateService} from '../../services/object-state.service';\nimport {ObjectService} from '../../services/object.service';\nimport {TabEnum} from '../../services/tab.enum';\nimport {TabService} from '../../services/tab.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-detail-container',\n templateUrl: './object-detail-container.component.html',\n styleUrls: ['./object-detail-container.component.scss'],\n})\nexport class ObjectDetailContainerComponent implements OnInit, OnDestroy {\n public currentTab: TabEnum;\n public caseListColumn!: boolean;\n\n private tabSubscription: Subscription;\n\n readonly TabEnum = TabEnum;\n\n readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n map(params => params.objectManagementId)\n );\n\n constructor(\n private readonly objectState: ObjectStateService,\n private readonly objectService: ObjectService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService\n ) {\n this.caseListColumn = this.configService.config.featureToggles?.caseListColumn ?? true;\n }\n\n ngOnInit(): void {\n this.openCurrentTabSubscription();\n }\n\n displayBodyComponent(tab: TabEnum): void {\n this.tabService.currentTab = tab;\n }\n\n openCurrentTabSubscription(): void {\n this.tabSubscription = this.tabService.currentTab$.subscribe(\n value => (this.currentTab = value)\n );\n }\n\n ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.GENERAL;\n this.tabSubscription?.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <div class=\"bg-light dossier-header\">\n <h3 class=\"dossier-title\">\n {{ 'object.header' | translate }}\n </h3>\n </div>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'object.tabs.general' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pl-1 pr-1 pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-detail></valtimo-object-detail>\n </div>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {ObjectListComponent} from './components/object-list/object-list.component';\nimport {ObjectDetailContainerComponent} from './components/object-detail-container/object-detail-container.component';\n\nconst routes: Routes = [\n {\n path: 'objects/:objectManagementId',\n canActivate: [AuthGuardService],\n component: ObjectListComponent,\n data: {title: 'Objects', roles: [ROLE_USER], customPageTitle: true},\n },\n {\n path: 'objects/:objectManagementId/:objectId',\n canActivate: [AuthGuardService],\n component: ObjectDetailContainerComponent,\n data: {title: 'object.header', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class ObjectRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {ObjectRoutingModule} from './object-routing.module';\nimport {ObjectListComponent} from './components/object-list/object-list.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {AsyncPipe, CommonModule} from '@angular/common';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n FormIoModule,\n SearchFieldsModule,\n SpinnerModule,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n WidgetModule,\n} from '@valtimo/components';\nimport {ObjectDetailContainerComponent} from './components/object-detail-container/object-detail-container.component';\nimport {ObjectDetailComponent} from './components/object-detail-container/tabs/object-detail/object-detail.component';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [ObjectListComponent, ObjectDetailContainerComponent, ObjectDetailComponent],\n imports: [\n CommonModule,\n ObjectRoutingModule,\n TranslateModule,\n AsyncPipe,\n WidgetModule,\n ButtonModule,\n IconModule,\n SpinnerModule,\n LoadingModule,\n FormIoModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule,\n TooltipIconModule,\n ConfirmationModalModule,\n SearchFieldsModule,\n ValtimoCdsModalDirective,\n CarbonListModule,\n ],\n exports: [],\n})\nexport class ObjectModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of object\n */\n\nexport * from './lib/services/object.service';\nexport * from './lib/object.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i2.ObjectColumnService","i4.ObjectService","i9","i5","i6","i7","i8","i1.ObjectStateService","i2.ObjectService","i3","i4","i5.TabService","i8.ObjectDetailComponent"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-object.mjs","sources":["../../../../projects/valtimo/object/src/lib/services/object.service.ts","../../../../projects/valtimo/object/src/lib/models/object.model.ts","../../../../projects/valtimo/object/src/lib/services/object-column.service.ts","../../../../projects/valtimo/object/src/lib/components/object-list/object-list.component.ts","../../../../projects/valtimo/object/src/lib/components/object-list/object-list.component.html","../../../../projects/valtimo/object/src/lib/services/tab.enum.ts","../../../../projects/valtimo/object/src/lib/services/object-state.service.ts","../../../../projects/valtimo/object/src/lib/services/tab.service.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/tabs/object-detail/object-detail.component.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/tabs/object-detail/object-detail.component.html","../../../../projects/valtimo/object/src/lib/components/object-detail-container/object-detail-container.component.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/object-detail-container.component.html","../../../../projects/valtimo/object/src/lib/object-routing.module.ts","../../../../projects/valtimo/object/src/lib/services/object-menu.service.ts","../../../../projects/valtimo/object/src/lib/services/index.ts","../../../../projects/valtimo/object/src/lib/object.module.ts","../../../../projects/valtimo/object/src/public-api.ts","../../../../projects/valtimo/object/src/valtimo-object.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectConfiguration} from '../models/object.model';\nimport {FormDefinition} from '@valtimo/form-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectService {\n private readonly valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n public getObjectsByObjectManagementId(\n objectManagementId: string,\n params?: any\n ): Observable<ObjectConfiguration> {\n return this.http.get<ObjectConfiguration>(\n `${this.valtimoEndpointUri}v1/object/management/configuration/${objectManagementId}/object`,\n {params}\n );\n }\n\n public postObjectsByObjectManagementId(\n objectManagementId: string,\n params?: any,\n payload?: any\n ): Observable<ObjectConfiguration> {\n return this.http.post<ObjectConfiguration>(\n `${this.valtimoEndpointUri}v1/object/management/configuration/${objectManagementId}/object`,\n payload,\n {params}\n );\n }\n\n public createObject(params: {objectManagementId: string}, payload: object): Observable<any> {\n return this.http.post<any>(`${this.valtimoEndpointUri}v1/object`, payload, {params});\n }\n\n public updateObject(\n params: {objectManagementId: string; objectId: string},\n payload: object\n ): Observable<any> {\n return this.http.patch<any>(`${this.valtimoEndpointUri}v1/object`, payload, {params});\n }\n\n public deleteObject(params: {objectManagementId: string; objectId: string}): Observable<any> {\n return this.http.delete<any>(`${this.valtimoEndpointUri}v1/object`, {params});\n }\n\n public getPrefilledObjectFromObjectUrl(params: any): Observable<FormDefinition> {\n return this.http.get<FormDefinition>(`${this.valtimoEndpointUri}v1/object/form`, {params});\n }\n\n public removeEmptyStringValuesFromSubmission(submission) {\n return Object.fromEntries(Object.entries(submission).filter(([_, value]) => value !== ''));\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface ObjectConfiguration {\n content: ObjectConfigurationItem[];\n}\n\ninterface ObjectConfigurationItem {\n id: string;\n items: Item[];\n}\n\ninterface Item {\n key: string;\n value: string;\n}\n\nenum FormType {\n SUMMARY = 'SUMMARY',\n EDITFORM = 'EDITFORM',\n}\n\nenum ColumnType {\n DEFAULT = 'DEFAULT',\n CUSTOM = 'CUSTOM',\n}\n\nexport {ObjectConfiguration, ObjectConfigurationItem, Item, FormType, ColumnType};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {map, Observable} from 'rxjs';\nimport {ObjectManagementService, SearchColumn, SearchListColumn} from '@valtimo/object-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectColumnService {\n constructor(\n private readonly configService: ConfigService,\n private readonly objectManagementService: ObjectManagementService\n ) {}\n\n getObjectColumns(configurationId: string): Observable<Array<SearchColumn>> {\n return this.objectManagementService\n .getSearchList(configurationId)\n .pipe(\n map(\n objectListColumns =>\n objectListColumns &&\n Array.isArray(objectListColumns) &&\n objectListColumns.length > 0 &&\n this.mapObjectListColumnsToSearchColumns(objectListColumns)\n )\n );\n }\n\n private mapObjectListColumnsToSearchColumns(\n searchListColumns: Array<SearchListColumn>\n ): Array<SearchColumn> {\n return searchListColumns.map(searchListColumn => ({\n translationKey: searchListColumn.key,\n sortable: searchListColumn.sortable,\n defaultSort: searchListColumn.defaultSort,\n viewType: this.getDisplayType(searchListColumn.displayType.type),\n propertyName: searchListColumn.path,\n ...(searchListColumn.title && {title: searchListColumn.title}),\n ...(searchListColumn?.displayType?.displayTypeParameters?.enum && {\n enum: searchListColumn.displayType.displayTypeParameters.enum as any,\n }),\n ...(searchListColumn.displayType?.displayTypeParameters?.dateFormat && {\n format: searchListColumn.displayType?.displayTypeParameters?.dateFormat,\n }),\n }));\n }\n\n private getDisplayType(searchListColumnDisplayType: string): string {\n switch (searchListColumnDisplayType) {\n default:\n return searchListColumnDisplayType;\n }\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField, PageTitleService, Pagination} from '@valtimo/components';\nimport {\n GlobalNotificationService,\n SearchField,\n SearchFieldValues,\n SearchFilter,\n SearchFilterRange,\n} from '@valtimo/shared';\nimport {ObjectManagementService, SearchColumn} from '@valtimo/object-management';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n startWith,\n throwError,\n} from 'rxjs';\nimport {catchError, finalize, switchMap, take, tap} from 'rxjs/operators';\nimport {ColumnType, FormType} from '../../models/object.model';\nimport {ObjectColumnService} from '../../services/object-column.service';\nimport {ObjectService} from '../../services/object.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-list',\n templateUrl: './object-list.component.html',\n styleUrls: ['./object-list.component.scss'],\n})\nexport class ObjectListComponent {\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly submission$ = new BehaviorSubject<any>({});\n readonly formValid$ = new BehaviorSubject<boolean>(false);\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly clearForm$ = new BehaviorSubject<boolean>(false);\n readonly columnType$ = new BehaviorSubject<ColumnType>(ColumnType.DEFAULT);\n\n readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n map(params => params.objectManagementId),\n tap(objectManagementId => {\n if (objectManagementId) {\n this.objectManagementService.getObjectById(objectManagementId).subscribe(objectType => {\n if (objectType.title) {\n this.pageTitleService.setCustomPageTitle(objectType.title);\n }\n });\n }\n })\n );\n\n private readonly refreshObjectList$ = new BehaviorSubject<null>(null);\n\n readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n page: 0,\n size: 10,\n });\n\n readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n collectionSize: 0,\n });\n\n readonly pagination$: Observable<Pagination> = combineLatest([\n this.currentPageAndSize$,\n this.pageSizes$,\n ]).pipe(\n map(\n ([currentPage, sizes]) =>\n ({...currentPage, ...sizes, page: currentPage.page + 1}) as Pagination\n )\n );\n\n paginationClicked(newPageNumber): void {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n });\n }\n\n paginationSet(newPageSize): void {\n if (newPageSize) {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, size: newPageSize});\n });\n }\n }\n\n private readonly searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n readonly objectSearchFields$: Observable<Array<SearchField> | null> =\n this.objectManagementId$.pipe(\n distinctUntilChanged(),\n switchMap(objectManagementId =>\n this.objectManagementService.getSearchField(objectManagementId)\n ),\n map(searchFields =>\n searchFields.map(searchField => {\n // @ts-ignore\n searchField.dataType = searchField.dataType.toLowerCase();\n // @ts-ignore\n searchField.fieldType = searchField.fieldType.toLowerCase();\n return searchField;\n })\n )\n );\n\n readonly objectConfiguration$: Observable<Array<any>> = combineLatest([\n this.objectManagementId$,\n this.currentPageAndSize$,\n this.columnType$,\n this.searchFieldValues$,\n this.translateService.stream('key'),\n this.refreshObjectList$,\n ]).pipe(\n switchMap(([objectManagementId, currentPage, columnType, searchFieldValues]) => {\n const handleError = () => {\n this.disableInput();\n return of(null);\n };\n\n if (columnType === ColumnType.CUSTOM) {\n return this.objectService\n .postObjectsByObjectManagementId(\n objectManagementId,\n {\n page: currentPage.page,\n size: currentPage.size,\n },\n Object.keys(searchFieldValues).length > 0\n ? {otherFilters: this.mapSearchValuesToFilters(searchFieldValues)}\n : {}\n )\n .pipe(catchError(() => handleError()));\n }\n\n return this.objectService\n .getObjectsByObjectManagementId(objectManagementId, {\n page: currentPage.page,\n size: currentPage.size,\n })\n .pipe(catchError(() => handleError()));\n }),\n tap(instanceRes => {\n if (instanceRes != null) {\n this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n // @ts-ignore\n this.pageSizes$.next({...sizes, collectionSize: instanceRes.totalElements});\n });\n }\n }),\n map(res =>\n res?.content?.map(record =>\n record?.items?.reduce(\n (obj, item) => Object.assign(obj, {objectId: record.id}, {[item.key]: item.value}),\n {}\n )\n )\n ),\n tap(() => this.loading$.next(false))\n );\n\n readonly formDefinition$: Observable<any> = combineLatest([\n this.objectManagementId$,\n this.clearForm$,\n ]).pipe(\n switchMap(([objectManagementId]) =>\n this.objectService\n .getPrefilledObjectFromObjectUrl({objectManagementId, formType: FormType.EDITFORM})\n .pipe(\n catchError(error => {\n this.handleRetrievingFormError(error);\n this.disableInput();\n return of(null).pipe(startWith(null));\n })\n )\n ),\n map(res => {\n if (res != null) {\n this.enableInput();\n }\n\n return res?.formDefinition;\n }),\n startWith(null),\n finalize(() => this.loading$.next(false))\n );\n\n private readonly columns$: Observable<Array<SearchColumn>> = this.objectManagementId$.pipe(\n switchMap(objectManagementId => this.objectColumnService.getObjectColumns(objectManagementId)),\n map(res => res)\n );\n\n readonly fields$: Observable<Array<ListField>> = combineLatest([\n this.columns$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([columns]) => {\n if (columns?.length > 0) {\n this.columnType$.next(ColumnType.CUSTOM);\n\n return [\n ...columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key: column.translationKey,\n label: column.title || validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType || ''}),\n ...(column.enum && {enum: column.enum}),\n ...(column.format && {format: column.format}),\n };\n }),\n ];\n }\n\n this.columnType$.next(ColumnType.DEFAULT);\n return this.setDefaultFields();\n })\n );\n\n constructor(\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly objectColumnService: ObjectColumnService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectService: ObjectService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translate: TranslateService,\n private readonly translateService: TranslateService\n ) {}\n\n openModal(): void {\n this.showModal$.next(true);\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n this.clearForm$.next(true);\n }\n\n onFormioChange(formio): void {\n if (formio.data != null) {\n this.submission$.next(formio.data);\n this.formValid$.next(formio.isValid);\n }\n }\n\n public addObject(): void {\n this.disableInput();\n combineLatest([this.objectManagementId$, this.submission$, this.formValid$])\n .pipe(\n take(1),\n filter(([objectManagementId, submission, formValid]) => formValid),\n switchMap(([objectManagementId, submission]) =>\n this.objectService\n .createObject(\n {objectManagementId},\n {...this.objectService.removeEmptyStringValuesFromSubmission(submission)}\n )\n .pipe(\n take(1),\n catchError((error: any) => {\n this.handleCreateObjectError(error);\n return throwError(error);\n })\n )\n ),\n finalize(() => {\n this.enableInput();\n })\n )\n .subscribe({\n next: () => {\n this.closeModal();\n this.refreshObjectList();\n this.clearForm$.next(true);\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectCreated'),\n type: 'success',\n });\n },\n });\n }\n\n redirectToDetails(record): void {\n const objectId = record.objectUrl ? record.objectUrl.split('/').pop() : record.objectId;\n this.objectManagementId$.pipe(take(1)).subscribe(configurationId => {\n this.router.navigate([`/objects/${configurationId}/${objectId}`]);\n });\n }\n\n search(searchFieldValues: SearchFieldValues): void {\n this.searchFieldValues$.next(searchFieldValues || {});\n }\n\n private refreshObjectList(): void {\n this.refreshObjectList$.next(null);\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private setDefaultFields() {\n const keys: Array<string> = ['recordIndex', 'objectUrl'];\n return keys.map(key => ({\n label: `${this.translateService.instant(`object.labels.${key}`)}`,\n key,\n sortable: false,\n type: 'string',\n }));\n }\n\n private handleRetrievingFormError(error: any) {\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectRetrievingFormError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private handleCreateObjectError(error: any) {\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectCreationError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private mapSearchValuesToFilters(\n values: SearchFieldValues\n ): Array<SearchFilter | SearchFilterRange> {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue});\n } else {\n // @ts-ignore\n filters.push({key: valueKey, values: [searchValue]});\n }\n });\n\n return filters;\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n pagination: pagination$ | async,\n disableInput: disableInput$ | async,\n fields: fields$ | async,\n objectConfiguration: objectConfiguration$ | async,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createNewModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button\n (click)=\"openModal()\"\n cdsButton=\"primary\"\n size=\"md\"\n class=\"ml-3\"\n [disabled]=\"obs.disableInput || obs.loading\"\n >\n {{ 'object.createObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"obs.loading\"\n [searchFields]=\"objectSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [objectManagementId]=\"objectManagementId$ | async\"\n [setValuesSubject$]=\"null\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [items]=\"obs.objectConfiguration\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"objectConfigurationList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <ng-container carbonToolbarContent>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'object.createObject' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-container>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createNewModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n formDefinition: formDefinition$ | async,\n disableInput: disableInput$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.createObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formDefinition\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"addObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n GENERAL = 'general',\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectStateService {\n private readonly _showModal$ = new Subject();\n private readonly _hideModal$ = new Subject();\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n private readonly _modalType$ = new BehaviorSubject<any>('add');\n\n constructor() {}\n\n get showModal$(): Observable<any> {\n return this._showModal$.asObservable();\n }\n\n get hideModal$(): Observable<any> {\n return this._hideModal$.asObservable();\n }\n\n get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n get modalType$(): Observable<any> {\n return this._modalType$.asObservable();\n }\n\n showModal(): void {\n this._showModal$.next(null);\n }\n\n hideModal(): void {\n this._hideModal$.next(null);\n }\n\n refresh(): void {\n this._refresh$.next(null);\n }\n\n setModalType(type: any): void {\n this._modalType$.next(type);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TabEnum} from './tab.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TabService {\n private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.GENERAL);\n\n public get currentTab$(): Observable<TabEnum> {\n return this._currentTab$.asObservable();\n }\n\n public set currentTab(tab: TabEnum) {\n this._currentTab$.next(tab);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {ObjectManagementService} from '@valtimo/object-management';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subject, throwError} from 'rxjs';\nimport {catchError, finalize, switchMap, take, tap} from 'rxjs/operators';\nimport {FormType} from '../../../../models/object.model';\nimport {ObjectService} from '../../../../services/object.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-detail',\n templateUrl: './object-detail.component.html',\n styleUrls: ['./object-detail.component.scss'],\n})\nexport class ObjectDetailComponent implements OnDestroy {\n readonly loading$ = new BehaviorSubject<boolean>(true);\n readonly submission$ = new BehaviorSubject<any>({});\n readonly formValid$ = new BehaviorSubject<boolean>(false);\n readonly showModal$ = new BehaviorSubject<boolean>(false);\n readonly disableInput$ = new BehaviorSubject<boolean>(false);\n readonly showDeleteModal$ = new Subject<boolean>();\n readonly deleteObjectUrl$ = new BehaviorSubject<string>('');\n\n private readonly refreshObject$ = new BehaviorSubject<null>(null);\n\n readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n map(params => params.objectManagementId),\n tap(objectManagementId => {\n if (!this._settingBreadcrumb && objectManagementId) {\n this._settingBreadcrumb = true;\n this.objectManagementService.getObjectById(objectManagementId).subscribe(objectType => {\n if (objectType.id && objectType.title) {\n this.setBreadcrumb(objectType.id, objectType.title);\n }\n });\n }\n })\n );\n readonly objectId$: Observable<string> = this.route.params.pipe(map(params => params.objectId));\n\n readonly formioFormSummary$: Observable<any> = combineLatest([\n this.objectManagementId$,\n this.objectId$,\n this.refreshObject$,\n ]).pipe(\n switchMap(([objectManagementId, objectId]) =>\n this.objectService\n .getPrefilledObjectFromObjectUrl({objectManagementId, objectId, formType: FormType.SUMMARY})\n .pipe(catchError(() => this.handleRetrievingFormError()))\n ),\n map(res => res?.formDefinition),\n tap(() => this.loading$.next(false))\n );\n\n readonly formioFormEdit$: Observable<any> = combineLatest([\n this.objectManagementId$,\n this.objectId$,\n this.refreshObject$,\n ]).pipe(\n switchMap(([objectManagementId, objectId]) =>\n this.objectService\n .getPrefilledObjectFromObjectUrl({\n objectManagementId,\n objectId,\n formType: FormType.EDITFORM,\n })\n .pipe(\n catchError(() => {\n this.disableInput();\n return this.handleRetrievingFormError();\n })\n )\n ),\n map(res => res?.formDefinition),\n tap(() => this.loading$.next(false))\n );\n\n private _settingBreadcrumb = false;\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly objectManagementService: ObjectManagementService,\n private readonly objectService: ObjectService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly translate: TranslateService\n ) {}\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n }\n\n saveObject(): void {\n this.disableInput();\n\n this.updateObject();\n }\n\n deleteObject(): void {\n this.showDeleteModal$.next(true);\n }\n\n deleteObjectConfirmation(): void {\n this.disableInput();\n combineLatest([this.objectManagementId$, this.objectId$])\n .pipe(take(1))\n .subscribe(([objectManagementId, objectId]) => {\n this.objectService\n .deleteObject({objectManagementId, objectId})\n .pipe(\n take(1),\n catchError((error: any) => this.handleDeleteObjectError(error)),\n finalize(() => {\n this.enableInput();\n })\n )\n .subscribe(() => {\n this.closeModal();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectDeleted'),\n type: 'success',\n });\n this.router.navigate([`/objects/${objectManagementId}`]);\n });\n });\n }\n\n openModal(): void {\n this.showModal$.next(true);\n this.enableInput();\n }\n\n onFormioChange(formio): void {\n if (formio.data != null) {\n this.submission$.next(formio.data);\n this.formValid$.next(formio.isValid);\n }\n }\n\n closeModal(): void {\n this.showModal$.next(false);\n }\n\n private updateObject(): void {\n this.disableInput();\n combineLatest([this.objectManagementId$, this.objectId$, this.submission$, this.formValid$])\n .pipe(take(1))\n .subscribe(([objectManagementId, objectId, submission, formValid]) => {\n if (formValid) {\n submission = this.objectService.removeEmptyStringValuesFromSubmission(submission);\n this.objectService\n .updateObject({objectManagementId, objectId}, {...submission})\n .pipe(\n take(1),\n catchError((error: any) => this.handleUpdateObjectError(error)),\n finalize(() => {\n this.enableInput();\n })\n )\n .subscribe(() => {\n this.closeModal();\n this.refreshObject();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectUpdated'),\n type: 'success',\n });\n });\n }\n });\n }\n\n private refreshObject(): void {\n this.refreshObject$.next(null);\n }\n\n private disableInput(): void {\n this.disableInput$.next(true);\n }\n\n private enableInput(): void {\n this.disableInput$.next(false);\n }\n\n private handleRetrievingFormError() {\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectRetrievingFormError'),\n type: 'error',\n });\n this.loading$.next(false);\n return of(null);\n }\n\n private handleUpdateObjectError(error: any) {\n this.closeModal();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectUpdateError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private handleDeleteObjectError(error: any) {\n this.closeModal();\n this.globalNotificationService.showToast({\n title: this.translate.instant('object.messages.objectDeleteError'),\n type: 'error',\n });\n return throwError(error);\n }\n\n private setBreadcrumb(objectTypeId: string, title: string): void {\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/objects/${objectTypeId}`],\n content: title,\n href: `/objects/${objectTypeId}`,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n formioFormSummary: formioFormSummary$ | async,\n disableInput: disableInput$ | async,\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <div class=\"btn-group mb-1\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <ng-container *ngTemplateOutlet=\"widget; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <button [disabled]=\"obs.disableInput\" (click)=\"openModal()\" cdsButton=\"primary\" size=\"md\">\n {{ 'object.editObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n <button (click)=\"deleteObject()\" cdsButton=\"danger\" size=\"md\" class=\"ml-3\">\n {{ 'object.deleteObject' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #widget let-obs=\"obs\">\n <valtimo-form-io\n *ngIf=\"obs.formioFormSummary\"\n [form]=\"obs.formioFormSummary\"\n [readOnly]=\"true\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n show: showModal$ | async,\n formValid: formValid$ | async,\n disableInput: disableInput$ | async,\n formioFormEdit: formioFormEdit$ | async,\n } as modalObs\"\n [open]=\"modalObs.show\"\n (close)=\"closeModal()\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'object.editObject' | translate }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <valtimo-form-io\n [form]=\"modalObs.formioFormEdit\"\n (change)=\"onFormioChange($event)\"\n ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'object.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"saveObject()\"\n [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n >\n {{ 'object.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteObjectUrl$ | async\"\n (confirmEvent)=\"deleteObjectConfirmation()\"\n confirmButtonTextTranslationKey=\"object.deleteObject\"\n titleTranslationKey=\"object.deleteObject\"\n contentTranslationKey=\"object.deleteObjectConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {map, Observable, Subscription} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectStateService} from '../../services/object-state.service';\nimport {ObjectService} from '../../services/object.service';\nimport {TabEnum} from '../../services/tab.enum';\nimport {TabService} from '../../services/tab.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-object-detail-container',\n templateUrl: './object-detail-container.component.html',\n styleUrls: ['./object-detail-container.component.scss'],\n})\nexport class ObjectDetailContainerComponent implements OnInit, OnDestroy {\n public currentTab: TabEnum;\n public caseListColumn!: boolean;\n\n private tabSubscription: Subscription;\n\n readonly TabEnum = TabEnum;\n\n readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n map(params => params.objectManagementId)\n );\n\n constructor(\n private readonly objectState: ObjectStateService,\n private readonly objectService: ObjectService,\n private readonly route: ActivatedRoute,\n private readonly configService: ConfigService,\n private readonly tabService: TabService\n ) {\n this.caseListColumn = this.configService.config.featureToggles?.caseListColumn ?? true;\n }\n\n ngOnInit(): void {\n this.openCurrentTabSubscription();\n }\n\n displayBodyComponent(tab: TabEnum): void {\n this.tabService.currentTab = tab;\n }\n\n openCurrentTabSubscription(): void {\n this.tabSubscription = this.tabService.currentTab$.subscribe(\n value => (this.currentTab = value)\n );\n }\n\n ngOnDestroy(): void {\n this.tabService.currentTab = TabEnum.GENERAL;\n this.tabSubscription?.unsubscribe();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n </valtimo-widget>\n </div>\n </div>\n</div>\n\n<ng-template #title>\n <div class=\"bg-light dossier-header\">\n <h3 class=\"dossier-title\">\n {{ 'object.header' | translate }}\n </h3>\n </div>\n</ng-template>\n\n<ng-template #tabs>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\">\n <a\n id=\"general-tab\"\n class=\"nav-link clickable active\"\n data-toggle=\"tab\"\n (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n >\n {{ 'object.tabs.general' | translate }}\n </a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabContent>\n <div class=\"pl-1 pr-1 pt-3 bg-white position-relative tab-container\">\n <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n <valtimo-object-detail></valtimo-object-detail>\n </div>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {ObjectListComponent} from './components/object-list/object-list.component';\nimport {ObjectDetailContainerComponent} from './components/object-detail-container/object-detail-container.component';\n\nconst routes: Routes = [\n {\n path: 'objects/:objectManagementId',\n canActivate: [AuthGuardService],\n component: ObjectListComponent,\n data: {title: 'Objects', roles: [ROLE_USER], customPageTitle: true},\n },\n {\n path: 'objects/:objectManagementId/:objectId',\n canActivate: [AuthGuardService],\n component: ObjectDetailContainerComponent,\n data: {title: 'object.header', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class ObjectRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ConfigService, MenuItem} from '@valtimo/shared';\n\n@Injectable({providedIn: 'root'})\nexport class ObjectMenuService {\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {}\n\n public appendObjectMenuItems = (menuItems: MenuItem[]): Observable<MenuItem[]> => {\n const apiBaseUrl = this.configService.config.valtimoApi.endpointUri;\n\n return this.getObjects(apiBaseUrl).pipe(\n map(objects => {\n const visibleObjects = objects.filter(obj => obj?.showInDataMenu !== false);\n\n const objectItems: MenuItem[] = visibleObjects.map((obj, index) => ({\n link: ['/objects/' + obj.id],\n title: obj.title,\n iconClass: 'icon mdi mdi-dot-circle',\n sequence: index,\n show: true,\n }));\n\n const index = menuItems.findIndex(item => item.title === 'Objects');\n\n if (index >= 0) {\n menuItems[index].children = objectItems;\n }\n\n return menuItems;\n })\n );\n };\n\n private getObjects(apiBaseUrl: string): Observable<any[]> {\n const url = `${apiBaseUrl}v1/object/management/configuration`;\n return this.http.get<any[]>(url);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './object-menu.service';\nexport * from './object.service';\nexport * from './object-column.service';\nexport * from './object-state.service';\nexport * from './tab.service';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {ObjectRoutingModule} from './object-routing.module';\nimport {ObjectListComponent} from './components/object-list/object-list.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {AsyncPipe, CommonModule} from '@angular/common';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n FormIoModule,\n MenuService,\n SearchFieldsModule,\n SpinnerModule,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n WidgetModule,\n} from '@valtimo/components';\nimport {ObjectDetailContainerComponent} from './components/object-detail-container/object-detail-container.component';\nimport {ObjectDetailComponent} from './components/object-detail-container/tabs/object-detail/object-detail.component';\nimport {\n ButtonModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n} from 'carbon-components-angular';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectMenuService} from './services';\n\n@NgModule({\n declarations: [ObjectListComponent, ObjectDetailContainerComponent, ObjectDetailComponent],\n imports: [\n CommonModule,\n ObjectRoutingModule,\n TranslateModule,\n AsyncPipe,\n WidgetModule,\n ButtonModule,\n IconModule,\n SpinnerModule,\n LoadingModule,\n FormIoModule,\n ModalModule,\n ReactiveFormsModule,\n InputModule,\n TooltipIconModule,\n ConfirmationModalModule,\n SearchFieldsModule,\n ValtimoCdsModalDirective,\n CarbonListModule,\n ],\n exports: [],\n})\nexport class ObjectModule {\n constructor(\n private readonly menuService: MenuService,\n private readonly configService: ConfigService,\n private readonly objectMenuService: ObjectMenuService\n ) {\n const enabled = this.configService.config?.featureToggles?.enableObjectManagement;\n\n if (!enabled) return;\n\n this.menuService.registerAppendMenuItemsFunction(this.objectMenuService.appendObjectMenuItems);\n }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of object\n */\n\nexport * from './lib/services/object.service';\nexport * from './lib/object.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.ObjectColumnService","i4.ObjectService","i5","i9","i6","i7","i8","i1.ObjectStateService","i2.ObjectService","i3","i4","i5.TabService","i8.ObjectDetailComponent","map","i3.ObjectMenuService"],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import { MenuService } from '@valtimo/components';
2
+ import { ConfigService } from '@valtimo/shared';
3
+ import { ObjectMenuService } from './services';
1
4
  import * as i0 from "@angular/core";
2
5
  import * as i1 from "./components/object-list/object-list.component";
3
6
  import * as i2 from "./components/object-detail-container/object-detail-container.component";
@@ -9,6 +12,10 @@ import * as i7 from "@valtimo/components";
9
12
  import * as i8 from "carbon-components-angular";
10
13
  import * as i9 from "@angular/forms";
11
14
  export declare class ObjectModule {
15
+ private readonly menuService;
16
+ private readonly configService;
17
+ private readonly objectMenuService;
18
+ constructor(menuService: MenuService, configService: ConfigService, objectMenuService: ObjectMenuService);
12
19
  static ɵfac: i0.ɵɵFactoryDeclaration<ObjectModule, never>;
13
20
  static ɵmod: i0.ɵɵNgModuleDeclaration<ObjectModule, [typeof i1.ObjectListComponent, typeof i2.ObjectDetailContainerComponent, typeof i3.ObjectDetailComponent], [typeof i4.CommonModule, typeof i5.ObjectRoutingModule, typeof i6.TranslateModule, typeof i4.AsyncPipe, typeof i7.WidgetModule, typeof i8.ButtonModule, typeof i8.IconModule, typeof i7.SpinnerModule, typeof i8.LoadingModule, typeof i7.FormIoModule, typeof i8.ModalModule, typeof i9.ReactiveFormsModule, typeof i8.InputModule, typeof i7.TooltipIconModule, typeof i7.ConfirmationModalModule, typeof i7.SearchFieldsModule, typeof i7.ValtimoCdsModalDirective, typeof i7.CarbonListModule], never>;
14
21
  static ɵinj: i0.ɵɵInjectorDeclaration<ObjectModule>;
@@ -0,0 +1,5 @@
1
+ export * from './object-menu.service';
2
+ export * from './object.service';
3
+ export * from './object-column.service';
4
+ export * from './object-state.service';
5
+ export * from './tab.service';
@@ -0,0 +1,13 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { ConfigService, MenuItem } from '@valtimo/shared';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ObjectMenuService {
6
+ private readonly http;
7
+ private readonly configService;
8
+ constructor(http: HttpClient, configService: ConfigService);
9
+ appendObjectMenuItems: (menuItems: MenuItem[]) => Observable<MenuItem[]>;
10
+ private getObjects;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<ObjectMenuService, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<ObjectMenuService>;
13
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@valtimo/object",
3
3
  "license": "EUPL-1.2",
4
- "version": "13.1.3",
4
+ "version": "13.2.1",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.2.8",
7
7
  "@angular/core": "^19.2.8"