@valtimo/components 13.35.0 → 13.36.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.
- package/assets/css/carbon.scss +28 -2
- package/fesm2022/valtimo-components.mjs +1606 -644
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/carbon-list/carbon-list.component.d.ts.map +1 -1
- package/lib/components/form-io/components/form-io-uploader/form-io-uploader-edit-form.d.ts +1 -59
- package/lib/components/form-io/components/form-io-uploader/form-io-uploader-edit-form.d.ts.map +1 -1
- package/lib/components/form-io/components/object-management-select/object-management-select-edit-form.d.ts +234 -0
- package/lib/components/form-io/components/object-management-select/object-management-select-edit-form.d.ts.map +1 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.component.d.ts +110 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.component.d.ts.map +1 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.formio.d.ts +3 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.formio.d.ts.map +1 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.model.d.ts +40 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.model.d.ts.map +1 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.service.d.ts +20 -0
- package/lib/components/form-io/components/object-management-select/object-management-select.service.d.ts.map +1 -0
- package/lib/components/menu/services/menu.service.d.ts.map +1 -1
- package/lib/components/select/select.component.d.ts +7 -3
- package/lib/components/select/select.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +4 -0
- package/public_api.d.ts.map +1 -1
|
@@ -6,7 +6,7 @@ import { TranslateModule, TranslateLoader, TranslateService, TranslatePipe } fro
|
|
|
6
6
|
import * as i1$2 from '@valtimo/shared';
|
|
7
7
|
import { BaseApiService, VERSIONS, HttpLoaderFactory, getContextObservable, getCaseManagementRouteParams, getBuildingBlockManagementRouteParams } from '@valtimo/shared';
|
|
8
8
|
import * as i1$1 from '@angular/common/http';
|
|
9
|
-
import { HttpClient } from '@angular/common/http';
|
|
9
|
+
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
10
10
|
import { filter, map as map$1, take, tap as tap$1, debounceTime, distinctUntilChanged, takeUntil as takeUntil$1, startWith as startWith$1, switchMap as switchMap$1, delay } from 'rxjs/operators';
|
|
11
11
|
import * as i1$4 from '@angular/common';
|
|
12
12
|
import { DOCUMENT, CommonModule, registerLocaleData, CurrencyPipe, DecimalPipe, PercentPipe } from '@angular/common';
|
|
@@ -53,13 +53,14 @@ import { OverlayModule, Overlay } from '@angular/cdk/overlay';
|
|
|
53
53
|
import Currency from '@tadashi/currency';
|
|
54
54
|
import * as i2$4 from 'ngx-spinner';
|
|
55
55
|
import { NgxSpinnerModule } from 'ngx-spinner';
|
|
56
|
-
import
|
|
57
|
-
import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
|
|
58
|
-
import { v4 } from 'uuid';
|
|
56
|
+
import Search16 from '@carbon/icons/es/search/16';
|
|
59
57
|
import flatpickr from 'flatpickr';
|
|
60
58
|
import { Dutch } from 'flatpickr/dist/l10n/nl';
|
|
61
59
|
import { German } from 'flatpickr/dist/l10n/de';
|
|
62
60
|
import { english } from 'flatpickr/dist/l10n/default';
|
|
61
|
+
import * as i2$5 from 'ng-multiselect-dropdown';
|
|
62
|
+
import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
|
|
63
|
+
import { v4 } from 'uuid';
|
|
63
64
|
import { createJSONEditor } from 'vanilla-jsoneditor';
|
|
64
65
|
import Ajv from 'ajv';
|
|
65
66
|
import Muuri from 'muuri';
|
|
@@ -4218,11 +4219,17 @@ class MenuService {
|
|
|
4218
4219
|
this.menuConfig.menuItems.forEach(menuItem => {
|
|
4219
4220
|
if (menuItem.includeFunction !== undefined) {
|
|
4220
4221
|
this.includeFunctionObservables[menuItem.title] =
|
|
4221
|
-
this.menuIncludeService.
|
|
4222
|
+
this.menuIncludeService.getIncludeFunctionObservable(menuItem.includeFunction);
|
|
4222
4223
|
}
|
|
4223
4224
|
menuItem.show = true;
|
|
4224
4225
|
if (!menuItem.roles || menuItem.roles.some(role => userRoles.includes(role))) {
|
|
4225
4226
|
const filteredChildren = menuItem.children?.filter(child => !child.roles || child.roles.some(role => userRoles.includes(role)));
|
|
4227
|
+
filteredChildren?.forEach(child => {
|
|
4228
|
+
if (child.includeFunction !== undefined) {
|
|
4229
|
+
this.includeFunctionObservables[child.title] =
|
|
4230
|
+
this.menuIncludeService.getIncludeFunctionObservable(child.includeFunction);
|
|
4231
|
+
}
|
|
4232
|
+
});
|
|
4226
4233
|
menuItems.push({ ...menuItem, ...(filteredChildren && { children: filteredChildren }) });
|
|
4227
4234
|
}
|
|
4228
4235
|
});
|
|
@@ -5409,11 +5416,11 @@ class PageTitleComponent {
|
|
|
5409
5416
|
}));
|
|
5410
5417
|
}
|
|
5411
5418
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageTitleComponent, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }, { token: i6.Title }, { token: i1.TranslateService }, { token: i4.NGXLogger }, { token: i1$2.ConfigService }, { token: PageTitleService }, { token: PageHeaderService }, { token: PageSubtitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5412
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: PageTitleComponent, isStandalone: false, selector: "valtimo-page-title", host: { properties: { "class.valtimo-page-title--compact": "this.isCompact" } }, viewQueries: [{ propertyName: "_subtitleVcr", first: true, predicate: ["subtitleVcr"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"page-title-container\"\n [ngClass]=\"{\n 'page-title-container--no-margin': hidePageTitle || isCompact,\n 'page-title-container--compact': isCompact,\n }\"\n>\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n } as obs\n \"\n >\n <div\n class=\"skeleton-container\"\n *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\"\n [ngClass]=\"{'skeleton-container--compact': isCompact}\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <ng-container *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\">\n @if (isCompact) {\n <span\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"cds--breadcrumb compact-page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </span>\n } @else if ((titleAsBreadcrumb$ | async) === false) {\n <h2\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n [ngClass]=\"{'page-title--small-title': smallTitle$ | async}\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n }\n </ng-container>\n </ng-container>\n\n <ng-container #subtitleVcr></ng-container>\n</div>\n", styles: [".page-title-container{display:flex;flex-direction:row;align-items:flex-end}.page-title-container--no-margin{margin-bottom:0}.page-title-container--compact{align-items:center}.page-title-container .page-title{flex-shrink:0;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-title--small-title{font-size:var(--cds-body-compact-01-font-size, .875rem);font-weight:var(--cds-body-compact-01-font-weight, 400);line-height:var(--cds-body-compact-01-line-height, 1.28572);letter-spacing:var(--cds-body-compact-01-letter-spacing, .16px)}.page-title-container .compact-page-title{margin-left:8px;flex-shrink:0}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .skeleton-container--compact{width:60px;height:18px;overflow:hidden;margin-left:8px}.valtimo-page-title--compact{width:100%}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.SkeletonPlaceholder, selector: "cds-skeleton-placeholder, ibm-skeleton-placeholder" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
5419
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: PageTitleComponent, isStandalone: false, selector: "valtimo-page-title", host: { properties: { "class.valtimo-page-title--compact": "this.isCompact" } }, viewQueries: [{ propertyName: "_subtitleVcr", first: true, predicate: ["subtitleVcr"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"page-title-container\"\n [ngClass]=\"{\n 'page-title-container--no-margin': hidePageTitle || isCompact,\n 'page-title-container--compact': isCompact,\n }\"\n>\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n } as obs\n \"\n >\n <div\n class=\"skeleton-container\"\n *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\"\n [ngClass]=\"{'skeleton-container--compact': isCompact}\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <ng-container *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\">\n @if (isCompact) {\n <span\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"cds--breadcrumb compact-page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </span>\n } @else if ((titleAsBreadcrumb$ | async) === false) {\n <h2\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n [ngClass]=\"{'page-title--small-title': smallTitle$ | async}\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n }\n </ng-container>\n </ng-container>\n\n <ng-container #subtitleVcr></ng-container>\n</div>\n", styles: [".page-title-container{display:flex;flex-direction:row;align-items:flex-end}.page-title-container--no-margin{margin-bottom:0}.page-title-container--compact{align-items:center}.page-title-container .page-title{flex-shrink:1;min-width:0;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-title--small-title{font-size:var(--cds-body-compact-01-font-size, .875rem);font-weight:var(--cds-body-compact-01-font-weight, 400);line-height:var(--cds-body-compact-01-line-height, 1.28572);letter-spacing:var(--cds-body-compact-01-letter-spacing, .16px)}.page-title-container .compact-page-title{margin-left:8px;flex-shrink:0}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .skeleton-container--compact{width:60px;height:18px;overflow:hidden;margin-left:8px}.valtimo-page-title--compact{width:100%}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.SkeletonPlaceholder, selector: "cds-skeleton-placeholder, ibm-skeleton-placeholder" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
5413
5420
|
}
|
|
5414
5421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageTitleComponent, decorators: [{
|
|
5415
5422
|
type: Component,
|
|
5416
|
-
args: [{ selector: 'valtimo-page-title', encapsulation: ViewEncapsulation.None, standalone: false, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"page-title-container\"\n [ngClass]=\"{\n 'page-title-container--no-margin': hidePageTitle || isCompact,\n 'page-title-container--compact': isCompact,\n }\"\n>\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n } as obs\n \"\n >\n <div\n class=\"skeleton-container\"\n *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\"\n [ngClass]=\"{'skeleton-container--compact': isCompact}\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <ng-container *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\">\n @if (isCompact) {\n <span\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"cds--breadcrumb compact-page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </span>\n } @else if ((titleAsBreadcrumb$ | async) === false) {\n <h2\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n [ngClass]=\"{'page-title--small-title': smallTitle$ | async}\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n }\n </ng-container>\n </ng-container>\n\n <ng-container #subtitleVcr></ng-container>\n</div>\n", styles: [".page-title-container{display:flex;flex-direction:row;align-items:flex-end}.page-title-container--no-margin{margin-bottom:0}.page-title-container--compact{align-items:center}.page-title-container .page-title{flex-shrink:0;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-title--small-title{font-size:var(--cds-body-compact-01-font-size, .875rem);font-weight:var(--cds-body-compact-01-font-weight, 400);line-height:var(--cds-body-compact-01-line-height, 1.28572);letter-spacing:var(--cds-body-compact-01-letter-spacing, .16px)}.page-title-container .compact-page-title{margin-left:8px;flex-shrink:0}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .skeleton-container--compact{width:60px;height:18px;overflow:hidden;margin-left:8px}.valtimo-page-title--compact{width:100%}\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"] }]
|
|
5423
|
+
args: [{ selector: 'valtimo-page-title', encapsulation: ViewEncapsulation.None, standalone: false, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"page-title-container\"\n [ngClass]=\"{\n 'page-title-container--no-margin': hidePageTitle || isCompact,\n 'page-title-container--compact': isCompact,\n }\"\n>\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n } as obs\n \"\n >\n <div\n class=\"skeleton-container\"\n *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\"\n [ngClass]=\"{'skeleton-container--compact': isCompact}\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <ng-container *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\">\n @if (isCompact) {\n <span\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"cds--breadcrumb compact-page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </span>\n } @else if ((titleAsBreadcrumb$ | async) === false) {\n <h2\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n [ngClass]=\"{'page-title--small-title': smallTitle$ | async}\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n }\n </ng-container>\n </ng-container>\n\n <ng-container #subtitleVcr></ng-container>\n</div>\n", styles: [".page-title-container{display:flex;flex-direction:row;align-items:flex-end}.page-title-container--no-margin{margin-bottom:0}.page-title-container--compact{align-items:center}.page-title-container .page-title{flex-shrink:1;min-width:0;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-title--small-title{font-size:var(--cds-body-compact-01-font-size, .875rem);font-weight:var(--cds-body-compact-01-font-weight, 400);line-height:var(--cds-body-compact-01-line-height, 1.28572);letter-spacing:var(--cds-body-compact-01-letter-spacing, .16px)}.page-title-container .compact-page-title{margin-left:8px;flex-shrink:0}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .skeleton-container--compact{width:60px;height:18px;overflow:hidden;margin-left:8px}.valtimo-page-title--compact{width:100%}\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"] }]
|
|
5417
5424
|
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }, { type: i6.Title }, { type: i1.TranslateService }, { type: i4.NGXLogger }, { type: i1$2.ConfigService }, { type: PageTitleService }, { type: PageHeaderService }, { type: PageSubtitleService }], propDecorators: { isCompact: [{
|
|
5418
5425
|
type: HostBinding,
|
|
5419
5426
|
args: ['class.valtimo-page-title--compact']
|
|
@@ -6610,7 +6617,8 @@ class CarbonListComponent {
|
|
|
6610
6617
|
this._headerItems$ = combineLatest([
|
|
6611
6618
|
this._translatedFields$,
|
|
6612
6619
|
this.sort$,
|
|
6613
|
-
|
|
6620
|
+
this._items$, // Needed so extraColumns re-evaluates when items.locked changes
|
|
6621
|
+
]).pipe(map(([translatedFields, sortState, _items]) => translatedFields.map((field) => new TableHeaderItem({
|
|
6614
6622
|
data: field.label,
|
|
6615
6623
|
sortable: field.sortable,
|
|
6616
6624
|
className: field.className,
|
|
@@ -6970,11 +6978,11 @@ class CarbonListComponent {
|
|
|
6970
6978
|
}));
|
|
6971
6979
|
}
|
|
6972
6980
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonListComponent, deps: [{ token: EllipsisPipe }, { token: CarbonListFilterPipe }, { token: i2$3.IconService }, { token: i4.NGXLogger }, { token: i1.TranslateService }, { token: ViewContentService }, { token: KeyStateService }, { token: CarbonListDragAndDropService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6973
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CarbonListComponent, isStandalone: false, selector: "valtimo-carbon-list", inputs: { items: "items", fields: "fields", tableTranslations: "tableTranslations", paginatorConfig: "paginatorConfig", pagination: "pagination", loading: "loading", skeletonRowCount: "skeletonRowCount", actions: "actions", actionItems: "actionItems", showActionItems: "showActionItems", header: "header", hideColumnHeader: "hideColumnHeader", initialSortState: "initialSortState", sortState: "sortState", isSearchable: "isSearchable", enableSingleSelection: "enableSingleSelection", lastColumnTemplate: "lastColumnTemplate", paginationIdentifier: "paginationIdentifier", showSelectionColumn: "showSelectionColumn", striped: "striped", hideToolbar: "hideToolbar", lockedTooltipTranslationKey: "lockedTooltipTranslationKey", movingRowsEnabled: "movingRowsEnabled", dragAndDrop: "dragAndDrop", dragAndDropDisabled: "dragAndDropDisabled" }, outputs: { rowClicked: "rowClicked", paginationClicked: "paginationClicked", paginationSet: "paginationSet", search: "search", sortChanged: "sortChanged", moveRow: "moveRow", itemsReordered: "itemsReordered" }, providers: [CarbonListFilterPipe, CarbonListDragAndDropService], viewQueries: [{ propertyName: "actionsMenuTemplate", first: true, predicate: ["actionsMenuTemplate"], descendants: true }, { propertyName: "actionTemplate", first: true, predicate: ["actionTemplate"], descendants: true }, { propertyName: "booleanTemplate", first: true, predicate: ["booleanTemplate"], descendants: true }, { propertyName: "moveRowsTemplate", first: true, predicate: ["moveRowsTemplate"], descendants: true }, { propertyName: "dragAndDropTemplate", first: true, predicate: ["dragAndDropTemplate"], descendants: true }, { propertyName: "rowDisabled", first: true, predicate: ["rowDisabled"], descendants: true }, { propertyName: "tagTemplate", first: true, predicate: ["tagTemplate"], descendants: true }, { propertyName: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true }, { propertyName: "_table", first: true, predicate: Table, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<cds-table-container\n *ngIf=\"{\n sort: sort$ | async,\n model: model$ | async,\n viewInitialized: viewInitialized$ | async,\n } as obs\"\n class=\"valtimo-carbon-list\"\n>\n <cds-table-header *ngIf=\"header\">\n <ng-content select=\"[header]\"></ng-content>\n </cds-table-header>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <cds-table-toolbar\n *ngIf=\"!hideToolbar\"\n class=\"valtimo-carbon-list__toolbar\"\n [model]=\"obs.model\"\n [batchText]=\"batchText$ | async\"\n >\n <cds-table-toolbar-actions>\n <ng-content select=\"[carbonToolbarActions]\"> </ng-content>\n </cds-table-toolbar-actions>\n\n <cds-table-toolbar-content>\n <cds-table-toolbar-search\n *ngIf=\"isSearchable\"\n [expandable]=\"true\"\n [formControl]=\"searchFormControl\"\n data-test-id=\"carbonListSearch\"\n ></cds-table-toolbar-search>\n\n <ng-content select=\"[carbonToolbarContent]\"> </ng-content>\n </cds-table-toolbar-content>\n </cds-table-toolbar>\n\n <cds-table\n *ngIf=\"!!obs.sort\"\n [ngClass]=\"{\n 'valtimo-carbon-list__header--hidden': hideColumnHeader,\n 'valtimo-carbon-list--unclickable': !this.rowClicked.observed,\n }\"\n [enableSingleSelect]=\"enableSingleSelect\"\n [model]=\"loading || !obs.viewInitialized ? skeletonModel : obs.model\"\n [showSelectionColumn]=\"showSelectionColumn\"\n [skeleton]=\"loading\"\n [striped]=\"striped\"\n (sort)=\"onSort(obs.model.header[$event])\"\n (rowClick)=\"onRowClick($event)\"\n >\n <tbody cdsTableBody>\n <tr class=\"valtimo-carbon-list__no-results\" data-test-id=\"carbonListNoResults\">\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n <ng-content></ng-content>\n </td>\n\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n {{ 'list.noResults' | translate }}\n </td>\n </tr>\n </tbody>\n </cds-table>\n\n <cds-pagination\n *ngIf=\"paginationModel && items?.length\"\n [itemsPerPageOptions]=\"paginatorConfig.itemsPerPageOptions\"\n [model]=\"paginationModel\"\n [showPageInput]=\"paginatorConfig.showPageInput\"\n [skeleton]=\"loading\"\n [translations]=\"paginationTranslations$ | async\"\n (selectPage)=\"onSelectPage($event)\"\n data-test-id=\"carbonListPagination\"\n ></cds-pagination>\n</cds-table-container>\n\n<ng-template #actionTemplate let-data=\"data\">\n <i\n class=\"clickable\"\n [ngClass]=\"data.iconClass\"\n (click)=\"$event.stopPropagation(); data.callback(data.item)\"\n ></i>\n</ng-template>\n\n<ng-template #booleanTemplate let-data=\"data\">\n {{ data | translate }}\n</ng-template>\n\n<ng-template #actionsMenuTemplate let-data=\"data\">\n <v-overflow-menu\n *ngIf=\"showActionItems\"\n [open]=\"currentOpenActionId === data.item\"\n (openChange)=\"handleActionOpenChange(data.item, $event)\"\n placement=\"bottom-end\"\n (click)=\"$event.stopPropagation()\"\n >\n <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n @for (action of data.actions; track action.label) {\n <v-overflow-menu-option\n [disabled]=\"action | actionItemDisabled: data.item | async\"\n [type]=\"action.type\"\n (selected)=\"action.callback(data.item)\"\n >\n <i *ngIf=\"!!action.iconClass\" [ngClass]=\"action.iconClass\"></i>\n\n {{ action.label | translate }}\n </v-overflow-menu-option>\n }\n </v-overflow-menu>\n</ng-template>\n\n<ng-template #rowDisabled let-data=\"data\">\n <div *ngIf=\"data.locked\" class=\"locked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ lockedTooltipTranslationKey | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n </div>\n</ng-template>\n\n<ng-template #moveRowsTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__move-rows\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveUpClick($event, data)\"\n data-test-id=\"carbonListMoveUp\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === data.length - 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveDownClick($event, data)\"\n data-test-id=\"carbonListMoveDown\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #dragAndDropTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__draggable\">\n <button\n cdsButton=\"ghost\"\n [disabled]=\"dragAndDropDisabled\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (mousedown)=\"onDragStart($event, data)\"\n data-test-id=\"carbonListDragHandle\"\n >\n <svg cdsIcon=\"draggable\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #tagTemplate let-data=\"data\">\n @if (!data.tags) {\n -\n } @else {\n <div class=\"tag-template\">\n @if (data.tags.length === 0) {\n -\n } @else {\n @for (tag of data.tags.slice(0, data.tagAmount); track tag) {\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"tag.type\">\n {{ tag.ellipsisContent ?? tag.content }}\n </cds-tag>\n }\n\n <cds-tag\n *ngIf=\"data.tags.length > data.tagAmount\"\n class=\"cds-tag--no-margin valtimo-carbon-list__expand-tag\"\n type=\"high-contrast\"\n (click)=\"onTagClick($event, data.tags)\"\n data-test-id=\"carbonListExpandTags\"\n >\n {{ data.tags.length - data.tagAmount }} <svg cdsIcon=\"add\" size=\"16\"></svg>\n </cds-tag>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #defaultTemplate let-data=\"data\">\n <span>{{ data }}</span>\n</ng-template>\n\n<valtimo-tags-modal\n [open]=\"tagModalOpen$ | async\"\n [tags]=\"tagModalData$ | async\"\n (closeEvent)=\"onCloseEvent()\"\n></valtimo-tags-modal>\n", styles: [".clickable{cursor:pointer}.container-fluid{background-color:var(--cds-layer)}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}th:first-child,td:first-child{padding-left:25px}::ng-deep tr:has(>td .locked){cursor:not-allowed}::ng-deep tr:has(>td .locked) td{color:var(--cds-text-on-color-disabled)}::ng-deep .valtimo-carbon-list__header--hidden thead{display:none}::ng-deep .valtimo-carbon-list--unclickable tr{cursor:default}.valtimo-carbon-list__toolbar:empty{display:none}.valtimo-carbon-list__no-results{cursor:default}.valtimo-carbon-list__no-results td:empty,.valtimo-carbon-list__no-results td:not(:empty)+td{display:none}.valtimo-carbon-list__move-rows,.valtimo-carbon-list__draggable{width:100%;justify-content:flex-end;display:flex;flex-direction:row;position:relative}.valtimo-carbon-list__move-rows button:not(:last-child),.valtimo-carbon-list__draggable button:not(:last-child){margin-right:8px}.valtimo-carbon-list__expand-tag{cursor:pointer}.valtimo-carbon-list ::ng-deep .cds--tag--orange{background-color:#ffd9be;color:#8a3800}.valtimo-carbon-list ::ng-deep .cds--tag--light-green{background-color:#a7f0ba;color:#0e6027}.valtimo-carbon-list ::ng-deep .cds--tag--yellow{background-color:#fddc69;color:#684e00}.valtimo-carbon-list ::ng-deep .cds--tag--periwinkle{background-color:#e8daff;color:#6929c4}.valtimo-carbon-list label{margin-bottom:0!important}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag{margin:0}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag svg{fill:var(--cds-background)}.valtimo-carbon-list ::ng-deep .tag-template>*:not(:last-child){margin-right:8px}.valtimo-carbon-list ::ng-deep .cds--tag{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px}.valtimo-carbon-list ::ng-deep .valtimo-carbon-list__draggable .cds--btn--ghost{cursor:move!important;padding-top:8px!important;padding-bottom:8px!important}::ng-deep .valtimo-carbon-list__drag-table-row{cursor:move!important}::ng-deep .valtimo-carbon-list__drag-table-row .valtimo-carbon-list__draggable .cds--btn--ghost{outline:0;border-color:var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60)));box-shadow:inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60))),inset 0 0 0 2px var(--cds-background, #f4f4f4)}.valtimo-carbon-list ::ng-deep cds-table{overflow:hidden}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$3.Pagination, selector: "cds-pagination, ibm-pagination", inputs: ["skeleton", "model", "disabled", "pageInputDisabled", "showPageInput", "pagesUnknown", "pageSelectThreshold", "translations", "itemsPerPageOptions"], outputs: ["selectPage"] }, { kind: "component", type: i2$3.TableToolbar, selector: "cds-table-toolbar, ibm-table-toolbar", inputs: ["model", "batchText", "ariaLabel", "cancelText", "size"], outputs: ["cancel"] }, { kind: "component", type: i2$3.TableContainer, selector: "cds-table-container, ibm-table-container" }, { kind: "component", type: i2$3.TableHeader, selector: "cds-table-header, ibm-table-header" }, { kind: "component", type: i2$3.TableToolbarActions, selector: "cds-table-toolbar-actions, ibm-table-toolbar-actions" }, { kind: "component", type: i2$3.TableToolbarSearch, selector: "cds-table-toolbar-search, ibm-table-toolbar-search" }, { kind: "component", type: i2$3.TableToolbarContent, selector: "cds-table-toolbar-content, ibm-table-toolbar-content" }, { kind: "component", type: i2$3.Table, selector: "cds-table, ibm-table", inputs: ["ariaLabelledby", "ariaDescribedby", "model", "size", "skeleton", "isDataGrid", "sortable", "noBorder", "showExpandAllToggle", "showSelectionColumn", "enableSingleSelect", "scrollLoadDistance", "expandButtonAriaLabel", "sortDescendingLabel", "sortAscendingLabel", "translations", "striped", "stickyHeader", "footerTemplate", "selectionLabelColumn"], outputs: ["sort", "selectAll", "deselectAll", "selectRow", "deselectRow", "rowClick", "scrollLoad"] }, { kind: "component", type: i2$3.TableBody, selector: "[cdsTableBody], [ibmTableBody]", inputs: ["model", "enableSingleSelect", "expandButtonAriaLabel", "checkboxRowLabel", "showSelectionColumn", "size", "selectionLabelColumn", "skeleton"], outputs: ["selectRow", "deselectRow", "rowClick"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i2$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i2$3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "component", type: OverflowMenuTriggerComponent, selector: "v-overflow-menu-trigger", inputs: ["compact"] }, { kind: "component", type: CarbonTagsModalComponent, selector: "valtimo-tags-modal", inputs: ["open", "tags"], outputs: ["closeEvent"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: ActionItemDisabledPipe, name: "actionItemDisabled" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6981
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CarbonListComponent, isStandalone: false, selector: "valtimo-carbon-list", inputs: { items: "items", fields: "fields", tableTranslations: "tableTranslations", paginatorConfig: "paginatorConfig", pagination: "pagination", loading: "loading", skeletonRowCount: "skeletonRowCount", actions: "actions", actionItems: "actionItems", showActionItems: "showActionItems", header: "header", hideColumnHeader: "hideColumnHeader", initialSortState: "initialSortState", sortState: "sortState", isSearchable: "isSearchable", enableSingleSelection: "enableSingleSelection", lastColumnTemplate: "lastColumnTemplate", paginationIdentifier: "paginationIdentifier", showSelectionColumn: "showSelectionColumn", striped: "striped", hideToolbar: "hideToolbar", lockedTooltipTranslationKey: "lockedTooltipTranslationKey", movingRowsEnabled: "movingRowsEnabled", dragAndDrop: "dragAndDrop", dragAndDropDisabled: "dragAndDropDisabled" }, outputs: { rowClicked: "rowClicked", paginationClicked: "paginationClicked", paginationSet: "paginationSet", search: "search", sortChanged: "sortChanged", moveRow: "moveRow", itemsReordered: "itemsReordered" }, providers: [CarbonListFilterPipe, CarbonListDragAndDropService], viewQueries: [{ propertyName: "actionsMenuTemplate", first: true, predicate: ["actionsMenuTemplate"], descendants: true }, { propertyName: "actionTemplate", first: true, predicate: ["actionTemplate"], descendants: true }, { propertyName: "booleanTemplate", first: true, predicate: ["booleanTemplate"], descendants: true }, { propertyName: "moveRowsTemplate", first: true, predicate: ["moveRowsTemplate"], descendants: true }, { propertyName: "dragAndDropTemplate", first: true, predicate: ["dragAndDropTemplate"], descendants: true }, { propertyName: "rowDisabled", first: true, predicate: ["rowDisabled"], descendants: true }, { propertyName: "tagTemplate", first: true, predicate: ["tagTemplate"], descendants: true }, { propertyName: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true }, { propertyName: "_table", first: true, predicate: Table, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<cds-table-container\n *ngIf=\"{\n sort: sort$ | async,\n model: model$ | async,\n viewInitialized: viewInitialized$ | async,\n } as obs\"\n class=\"valtimo-carbon-list\"\n>\n <cds-table-header *ngIf=\"header\">\n <ng-content select=\"[header]\"></ng-content>\n </cds-table-header>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <cds-table-toolbar\n *ngIf=\"!hideToolbar\"\n class=\"valtimo-carbon-list__toolbar\"\n [model]=\"obs.model\"\n [batchText]=\"batchText$ | async\"\n >\n <cds-table-toolbar-actions>\n <ng-content select=\"[carbonToolbarActions]\"> </ng-content>\n </cds-table-toolbar-actions>\n\n <cds-table-toolbar-content>\n <cds-table-toolbar-search\n *ngIf=\"isSearchable\"\n [expandable]=\"true\"\n [formControl]=\"searchFormControl\"\n data-test-id=\"carbonListSearch\"\n ></cds-table-toolbar-search>\n\n <ng-content select=\"[carbonToolbarContent]\"> </ng-content>\n </cds-table-toolbar-content>\n </cds-table-toolbar>\n\n <cds-table\n *ngIf=\"!!obs.sort\"\n [ngClass]=\"{\n 'valtimo-carbon-list__header--hidden': hideColumnHeader,\n 'valtimo-carbon-list--unclickable': !this.rowClicked.observed,\n }\"\n [enableSingleSelect]=\"enableSingleSelect\"\n [model]=\"loading || !obs.viewInitialized ? skeletonModel : obs.model\"\n [showSelectionColumn]=\"showSelectionColumn\"\n [skeleton]=\"loading\"\n [striped]=\"striped\"\n (sort)=\"onSort(obs.model.header[$event])\"\n (rowClick)=\"onRowClick($event)\"\n >\n <tbody cdsTableBody>\n <tr class=\"valtimo-carbon-list__no-results\" data-test-id=\"carbonListNoResults\">\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n <ng-content></ng-content>\n </td>\n\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n {{ 'list.noResults' | translate }}\n </td>\n </tr>\n </tbody>\n </cds-table>\n\n <cds-pagination\n *ngIf=\"paginationModel && items?.length\"\n [itemsPerPageOptions]=\"paginatorConfig.itemsPerPageOptions\"\n [model]=\"paginationModel\"\n [showPageInput]=\"paginatorConfig.showPageInput\"\n [skeleton]=\"loading\"\n [translations]=\"paginationTranslations$ | async\"\n (selectPage)=\"onSelectPage($event)\"\n data-test-id=\"carbonListPagination\"\n ></cds-pagination>\n</cds-table-container>\n\n<ng-template #actionTemplate let-data=\"data\">\n <i\n class=\"clickable\"\n [ngClass]=\"data.iconClass\"\n (click)=\"$event.stopPropagation(); data.callback(data.item)\"\n ></i>\n</ng-template>\n\n<ng-template #booleanTemplate let-data=\"data\">\n {{ data | translate }}\n</ng-template>\n\n<ng-template #actionsMenuTemplate let-data=\"data\">\n <v-overflow-menu\n *ngIf=\"showActionItems\"\n [open]=\"currentOpenActionId === data.item\"\n (openChange)=\"handleActionOpenChange(data.item, $event)\"\n placement=\"bottom-end\"\n (click)=\"$event.stopPropagation()\"\n >\n <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n @for (action of data.actions; track action.label) {\n <v-overflow-menu-option\n [disabled]=\"action | actionItemDisabled: data.item | async\"\n [type]=\"action.type\"\n (selected)=\"action.callback(data.item)\"\n >\n <i *ngIf=\"!!action.iconClass\" [ngClass]=\"action.iconClass\"></i>\n\n {{ action.label | translate }}\n </v-overflow-menu-option>\n }\n </v-overflow-menu>\n</ng-template>\n\n<ng-template #rowDisabled let-data=\"data\">\n <div *ngIf=\"data.locked\" class=\"locked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ lockedTooltipTranslationKey | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n </div>\n</ng-template>\n\n<ng-template #moveRowsTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__move-rows\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveUpClick($event, data)\"\n data-test-id=\"carbonListMoveUp\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === data.length - 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveDownClick($event, data)\"\n data-test-id=\"carbonListMoveDown\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #dragAndDropTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__draggable\">\n <button\n cdsButton=\"ghost\"\n [disabled]=\"dragAndDropDisabled\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (mousedown)=\"onDragStart($event, data)\"\n data-test-id=\"carbonListDragHandle\"\n >\n <svg cdsIcon=\"draggable\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #tagTemplate let-data=\"data\">\n @if (!data.tags) {\n -\n } @else {\n <div class=\"tag-template\">\n @if (data.tags.length === 0) {\n -\n } @else {\n @for (tag of data.tags.slice(0, data.tagAmount); track tag) {\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"tag.type\">\n {{ tag.ellipsisContent ?? tag.content }}\n </cds-tag>\n }\n\n <cds-tag\n *ngIf=\"data.tags.length > data.tagAmount\"\n class=\"cds-tag--no-margin valtimo-carbon-list__expand-tag\"\n type=\"high-contrast\"\n (click)=\"onTagClick($event, data.tags)\"\n data-test-id=\"carbonListExpandTags\"\n >\n {{ data.tags.length - data.tagAmount }} <svg cdsIcon=\"add\" size=\"16\"></svg>\n </cds-tag>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #defaultTemplate let-data=\"data\">\n <span>{{ data }}</span>\n</ng-template>\n\n<valtimo-tags-modal\n [open]=\"tagModalOpen$ | async\"\n [tags]=\"tagModalData$ | async\"\n (closeEvent)=\"onCloseEvent()\"\n></valtimo-tags-modal>\n", styles: [".clickable{cursor:pointer}.container-fluid{background-color:var(--cds-layer)}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}th:first-child,td:first-child{padding-left:25px}::ng-deep tr:has(>td .locked){cursor:not-allowed}::ng-deep tr:has(>td .locked) td{color:var(--cds-text-on-color-disabled)}::ng-deep .valtimo-carbon-list__header--hidden thead{display:none}::ng-deep .valtimo-carbon-list--unclickable tr{cursor:default}.valtimo-carbon-list__toolbar:empty{display:none}.valtimo-carbon-list__no-results{cursor:default}.valtimo-carbon-list__no-results td:empty,.valtimo-carbon-list__no-results td:not(:empty)+td{display:none}.valtimo-carbon-list__move-rows,.valtimo-carbon-list__draggable{width:100%;justify-content:flex-end;display:flex;flex-direction:row;position:relative}.valtimo-carbon-list__move-rows button:not(:last-child),.valtimo-carbon-list__draggable button:not(:last-child){margin-right:8px}.valtimo-carbon-list__expand-tag{cursor:pointer}.valtimo-carbon-list label{margin-bottom:0!important}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag{margin:0}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag svg{fill:var(--cds-background)}.valtimo-carbon-list ::ng-deep .tag-template>*:not(:last-child){margin-right:8px}.valtimo-carbon-list ::ng-deep .cds--tag{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px}.valtimo-carbon-list ::ng-deep .valtimo-carbon-list__draggable .cds--btn--ghost{cursor:move!important;padding-top:8px!important;padding-bottom:8px!important}::ng-deep .valtimo-carbon-list__drag-table-row{cursor:move!important}::ng-deep .valtimo-carbon-list__drag-table-row .valtimo-carbon-list__draggable .cds--btn--ghost{outline:0;border-color:var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60)));box-shadow:inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60))),inset 0 0 0 2px var(--cds-background, #f4f4f4)}.valtimo-carbon-list ::ng-deep cds-table{overflow:hidden}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$3.Pagination, selector: "cds-pagination, ibm-pagination", inputs: ["skeleton", "model", "disabled", "pageInputDisabled", "showPageInput", "pagesUnknown", "pageSelectThreshold", "translations", "itemsPerPageOptions"], outputs: ["selectPage"] }, { kind: "component", type: i2$3.TableToolbar, selector: "cds-table-toolbar, ibm-table-toolbar", inputs: ["model", "batchText", "ariaLabel", "cancelText", "size"], outputs: ["cancel"] }, { kind: "component", type: i2$3.TableContainer, selector: "cds-table-container, ibm-table-container" }, { kind: "component", type: i2$3.TableHeader, selector: "cds-table-header, ibm-table-header" }, { kind: "component", type: i2$3.TableToolbarActions, selector: "cds-table-toolbar-actions, ibm-table-toolbar-actions" }, { kind: "component", type: i2$3.TableToolbarSearch, selector: "cds-table-toolbar-search, ibm-table-toolbar-search" }, { kind: "component", type: i2$3.TableToolbarContent, selector: "cds-table-toolbar-content, ibm-table-toolbar-content" }, { kind: "component", type: i2$3.Table, selector: "cds-table, ibm-table", inputs: ["ariaLabelledby", "ariaDescribedby", "model", "size", "skeleton", "isDataGrid", "sortable", "noBorder", "showExpandAllToggle", "showSelectionColumn", "enableSingleSelect", "scrollLoadDistance", "expandButtonAriaLabel", "sortDescendingLabel", "sortAscendingLabel", "translations", "striped", "stickyHeader", "footerTemplate", "selectionLabelColumn"], outputs: ["sort", "selectAll", "deselectAll", "selectRow", "deselectRow", "rowClick", "scrollLoad"] }, { kind: "component", type: i2$3.TableBody, selector: "[cdsTableBody], [ibmTableBody]", inputs: ["model", "enableSingleSelect", "expandButtonAriaLabel", "checkboxRowLabel", "showSelectionColumn", "size", "selectionLabelColumn", "skeleton"], outputs: ["selectRow", "deselectRow", "rowClick"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i2$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i2$3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "component", type: OverflowMenuTriggerComponent, selector: "v-overflow-menu-trigger", inputs: ["compact"] }, { kind: "component", type: CarbonTagsModalComponent, selector: "valtimo-tags-modal", inputs: ["open", "tags"], outputs: ["closeEvent"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: ActionItemDisabledPipe, name: "actionItemDisabled" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6974
6982
|
}
|
|
6975
6983
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonListComponent, decorators: [{
|
|
6976
6984
|
type: Component,
|
|
6977
|
-
args: [{ selector: 'valtimo-carbon-list', changeDetection: ChangeDetectionStrategy.OnPush, providers: [CarbonListFilterPipe, CarbonListDragAndDropService], standalone: false, 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<cds-table-container\n *ngIf=\"{\n sort: sort$ | async,\n model: model$ | async,\n viewInitialized: viewInitialized$ | async,\n } as obs\"\n class=\"valtimo-carbon-list\"\n>\n <cds-table-header *ngIf=\"header\">\n <ng-content select=\"[header]\"></ng-content>\n </cds-table-header>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <cds-table-toolbar\n *ngIf=\"!hideToolbar\"\n class=\"valtimo-carbon-list__toolbar\"\n [model]=\"obs.model\"\n [batchText]=\"batchText$ | async\"\n >\n <cds-table-toolbar-actions>\n <ng-content select=\"[carbonToolbarActions]\"> </ng-content>\n </cds-table-toolbar-actions>\n\n <cds-table-toolbar-content>\n <cds-table-toolbar-search\n *ngIf=\"isSearchable\"\n [expandable]=\"true\"\n [formControl]=\"searchFormControl\"\n data-test-id=\"carbonListSearch\"\n ></cds-table-toolbar-search>\n\n <ng-content select=\"[carbonToolbarContent]\"> </ng-content>\n </cds-table-toolbar-content>\n </cds-table-toolbar>\n\n <cds-table\n *ngIf=\"!!obs.sort\"\n [ngClass]=\"{\n 'valtimo-carbon-list__header--hidden': hideColumnHeader,\n 'valtimo-carbon-list--unclickable': !this.rowClicked.observed,\n }\"\n [enableSingleSelect]=\"enableSingleSelect\"\n [model]=\"loading || !obs.viewInitialized ? skeletonModel : obs.model\"\n [showSelectionColumn]=\"showSelectionColumn\"\n [skeleton]=\"loading\"\n [striped]=\"striped\"\n (sort)=\"onSort(obs.model.header[$event])\"\n (rowClick)=\"onRowClick($event)\"\n >\n <tbody cdsTableBody>\n <tr class=\"valtimo-carbon-list__no-results\" data-test-id=\"carbonListNoResults\">\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n <ng-content></ng-content>\n </td>\n\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n {{ 'list.noResults' | translate }}\n </td>\n </tr>\n </tbody>\n </cds-table>\n\n <cds-pagination\n *ngIf=\"paginationModel && items?.length\"\n [itemsPerPageOptions]=\"paginatorConfig.itemsPerPageOptions\"\n [model]=\"paginationModel\"\n [showPageInput]=\"paginatorConfig.showPageInput\"\n [skeleton]=\"loading\"\n [translations]=\"paginationTranslations$ | async\"\n (selectPage)=\"onSelectPage($event)\"\n data-test-id=\"carbonListPagination\"\n ></cds-pagination>\n</cds-table-container>\n\n<ng-template #actionTemplate let-data=\"data\">\n <i\n class=\"clickable\"\n [ngClass]=\"data.iconClass\"\n (click)=\"$event.stopPropagation(); data.callback(data.item)\"\n ></i>\n</ng-template>\n\n<ng-template #booleanTemplate let-data=\"data\">\n {{ data | translate }}\n</ng-template>\n\n<ng-template #actionsMenuTemplate let-data=\"data\">\n <v-overflow-menu\n *ngIf=\"showActionItems\"\n [open]=\"currentOpenActionId === data.item\"\n (openChange)=\"handleActionOpenChange(data.item, $event)\"\n placement=\"bottom-end\"\n (click)=\"$event.stopPropagation()\"\n >\n <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n @for (action of data.actions; track action.label) {\n <v-overflow-menu-option\n [disabled]=\"action | actionItemDisabled: data.item | async\"\n [type]=\"action.type\"\n (selected)=\"action.callback(data.item)\"\n >\n <i *ngIf=\"!!action.iconClass\" [ngClass]=\"action.iconClass\"></i>\n\n {{ action.label | translate }}\n </v-overflow-menu-option>\n }\n </v-overflow-menu>\n</ng-template>\n\n<ng-template #rowDisabled let-data=\"data\">\n <div *ngIf=\"data.locked\" class=\"locked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ lockedTooltipTranslationKey | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n </div>\n</ng-template>\n\n<ng-template #moveRowsTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__move-rows\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveUpClick($event, data)\"\n data-test-id=\"carbonListMoveUp\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === data.length - 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveDownClick($event, data)\"\n data-test-id=\"carbonListMoveDown\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #dragAndDropTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__draggable\">\n <button\n cdsButton=\"ghost\"\n [disabled]=\"dragAndDropDisabled\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (mousedown)=\"onDragStart($event, data)\"\n data-test-id=\"carbonListDragHandle\"\n >\n <svg cdsIcon=\"draggable\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #tagTemplate let-data=\"data\">\n @if (!data.tags) {\n -\n } @else {\n <div class=\"tag-template\">\n @if (data.tags.length === 0) {\n -\n } @else {\n @for (tag of data.tags.slice(0, data.tagAmount); track tag) {\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"tag.type\">\n {{ tag.ellipsisContent ?? tag.content }}\n </cds-tag>\n }\n\n <cds-tag\n *ngIf=\"data.tags.length > data.tagAmount\"\n class=\"cds-tag--no-margin valtimo-carbon-list__expand-tag\"\n type=\"high-contrast\"\n (click)=\"onTagClick($event, data.tags)\"\n data-test-id=\"carbonListExpandTags\"\n >\n {{ data.tags.length - data.tagAmount }} <svg cdsIcon=\"add\" size=\"16\"></svg>\n </cds-tag>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #defaultTemplate let-data=\"data\">\n <span>{{ data }}</span>\n</ng-template>\n\n<valtimo-tags-modal\n [open]=\"tagModalOpen$ | async\"\n [tags]=\"tagModalData$ | async\"\n (closeEvent)=\"onCloseEvent()\"\n></valtimo-tags-modal>\n", styles: [".clickable{cursor:pointer}.container-fluid{background-color:var(--cds-layer)}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}th:first-child,td:first-child{padding-left:25px}::ng-deep tr:has(>td .locked){cursor:not-allowed}::ng-deep tr:has(>td .locked) td{color:var(--cds-text-on-color-disabled)}::ng-deep .valtimo-carbon-list__header--hidden thead{display:none}::ng-deep .valtimo-carbon-list--unclickable tr{cursor:default}.valtimo-carbon-list__toolbar:empty{display:none}.valtimo-carbon-list__no-results{cursor:default}.valtimo-carbon-list__no-results td:empty,.valtimo-carbon-list__no-results td:not(:empty)+td{display:none}.valtimo-carbon-list__move-rows,.valtimo-carbon-list__draggable{width:100%;justify-content:flex-end;display:flex;flex-direction:row;position:relative}.valtimo-carbon-list__move-rows button:not(:last-child),.valtimo-carbon-list__draggable button:not(:last-child){margin-right:8px}.valtimo-carbon-list__expand-tag{cursor:pointer}.valtimo-carbon-list ::ng-deep .cds--tag--orange{background-color:#ffd9be;color:#8a3800}.valtimo-carbon-list ::ng-deep .cds--tag--light-green{background-color:#a7f0ba;color:#0e6027}.valtimo-carbon-list ::ng-deep .cds--tag--yellow{background-color:#fddc69;color:#684e00}.valtimo-carbon-list ::ng-deep .cds--tag--periwinkle{background-color:#e8daff;color:#6929c4}.valtimo-carbon-list label{margin-bottom:0!important}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag{margin:0}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag svg{fill:var(--cds-background)}.valtimo-carbon-list ::ng-deep .tag-template>*:not(:last-child){margin-right:8px}.valtimo-carbon-list ::ng-deep .cds--tag{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px}.valtimo-carbon-list ::ng-deep .valtimo-carbon-list__draggable .cds--btn--ghost{cursor:move!important;padding-top:8px!important;padding-bottom:8px!important}::ng-deep .valtimo-carbon-list__drag-table-row{cursor:move!important}::ng-deep .valtimo-carbon-list__drag-table-row .valtimo-carbon-list__draggable .cds--btn--ghost{outline:0;border-color:var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60)));box-shadow:inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60))),inset 0 0 0 2px var(--cds-background, #f4f4f4)}.valtimo-carbon-list ::ng-deep cds-table{overflow:hidden}\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"] }]
|
|
6985
|
+
args: [{ selector: 'valtimo-carbon-list', changeDetection: ChangeDetectionStrategy.OnPush, providers: [CarbonListFilterPipe, CarbonListDragAndDropService], standalone: false, 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<cds-table-container\n *ngIf=\"{\n sort: sort$ | async,\n model: model$ | async,\n viewInitialized: viewInitialized$ | async,\n } as obs\"\n class=\"valtimo-carbon-list\"\n>\n <cds-table-header *ngIf=\"header\">\n <ng-content select=\"[header]\"></ng-content>\n </cds-table-header>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <cds-table-toolbar\n *ngIf=\"!hideToolbar\"\n class=\"valtimo-carbon-list__toolbar\"\n [model]=\"obs.model\"\n [batchText]=\"batchText$ | async\"\n >\n <cds-table-toolbar-actions>\n <ng-content select=\"[carbonToolbarActions]\"> </ng-content>\n </cds-table-toolbar-actions>\n\n <cds-table-toolbar-content>\n <cds-table-toolbar-search\n *ngIf=\"isSearchable\"\n [expandable]=\"true\"\n [formControl]=\"searchFormControl\"\n data-test-id=\"carbonListSearch\"\n ></cds-table-toolbar-search>\n\n <ng-content select=\"[carbonToolbarContent]\"> </ng-content>\n </cds-table-toolbar-content>\n </cds-table-toolbar>\n\n <cds-table\n *ngIf=\"!!obs.sort\"\n [ngClass]=\"{\n 'valtimo-carbon-list__header--hidden': hideColumnHeader,\n 'valtimo-carbon-list--unclickable': !this.rowClicked.observed,\n }\"\n [enableSingleSelect]=\"enableSingleSelect\"\n [model]=\"loading || !obs.viewInitialized ? skeletonModel : obs.model\"\n [showSelectionColumn]=\"showSelectionColumn\"\n [skeleton]=\"loading\"\n [striped]=\"striped\"\n (sort)=\"onSort(obs.model.header[$event])\"\n (rowClick)=\"onRowClick($event)\"\n >\n <tbody cdsTableBody>\n <tr class=\"valtimo-carbon-list__no-results\" data-test-id=\"carbonListNoResults\">\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n <ng-content></ng-content>\n </td>\n\n <td [attr.colspan]=\"obs.model.header.length + (showSelectionColumn ? 1 : 0)\">\n {{ 'list.noResults' | translate }}\n </td>\n </tr>\n </tbody>\n </cds-table>\n\n <cds-pagination\n *ngIf=\"paginationModel && items?.length\"\n [itemsPerPageOptions]=\"paginatorConfig.itemsPerPageOptions\"\n [model]=\"paginationModel\"\n [showPageInput]=\"paginatorConfig.showPageInput\"\n [skeleton]=\"loading\"\n [translations]=\"paginationTranslations$ | async\"\n (selectPage)=\"onSelectPage($event)\"\n data-test-id=\"carbonListPagination\"\n ></cds-pagination>\n</cds-table-container>\n\n<ng-template #actionTemplate let-data=\"data\">\n <i\n class=\"clickable\"\n [ngClass]=\"data.iconClass\"\n (click)=\"$event.stopPropagation(); data.callback(data.item)\"\n ></i>\n</ng-template>\n\n<ng-template #booleanTemplate let-data=\"data\">\n {{ data | translate }}\n</ng-template>\n\n<ng-template #actionsMenuTemplate let-data=\"data\">\n <v-overflow-menu\n *ngIf=\"showActionItems\"\n [open]=\"currentOpenActionId === data.item\"\n (openChange)=\"handleActionOpenChange(data.item, $event)\"\n placement=\"bottom-end\"\n (click)=\"$event.stopPropagation()\"\n >\n <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n @for (action of data.actions; track action.label) {\n <v-overflow-menu-option\n [disabled]=\"action | actionItemDisabled: data.item | async\"\n [type]=\"action.type\"\n (selected)=\"action.callback(data.item)\"\n >\n <i *ngIf=\"!!action.iconClass\" [ngClass]=\"action.iconClass\"></i>\n\n {{ action.label | translate }}\n </v-overflow-menu-option>\n }\n </v-overflow-menu>\n</ng-template>\n\n<ng-template #rowDisabled let-data=\"data\">\n <div *ngIf=\"data.locked\" class=\"locked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ lockedTooltipTranslationKey | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n </div>\n</ng-template>\n\n<ng-template #moveRowsTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__move-rows\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveUpClick($event, data)\"\n data-test-id=\"carbonListMoveUp\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === data.length - 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onMoveDownClick($event, data)\"\n data-test-id=\"carbonListMoveDown\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #dragAndDropTemplate let-data=\"data\">\n <div class=\"valtimo-carbon-list__draggable\">\n <button\n cdsButton=\"ghost\"\n [disabled]=\"dragAndDropDisabled\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (mousedown)=\"onDragStart($event, data)\"\n data-test-id=\"carbonListDragHandle\"\n >\n <svg cdsIcon=\"draggable\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-template #tagTemplate let-data=\"data\">\n @if (!data.tags) {\n -\n } @else {\n <div class=\"tag-template\">\n @if (data.tags.length === 0) {\n -\n } @else {\n @for (tag of data.tags.slice(0, data.tagAmount); track tag) {\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"tag.type\">\n {{ tag.ellipsisContent ?? tag.content }}\n </cds-tag>\n }\n\n <cds-tag\n *ngIf=\"data.tags.length > data.tagAmount\"\n class=\"cds-tag--no-margin valtimo-carbon-list__expand-tag\"\n type=\"high-contrast\"\n (click)=\"onTagClick($event, data.tags)\"\n data-test-id=\"carbonListExpandTags\"\n >\n {{ data.tags.length - data.tagAmount }} <svg cdsIcon=\"add\" size=\"16\"></svg>\n </cds-tag>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #defaultTemplate let-data=\"data\">\n <span>{{ data }}</span>\n</ng-template>\n\n<valtimo-tags-modal\n [open]=\"tagModalOpen$ | async\"\n [tags]=\"tagModalData$ | async\"\n (closeEvent)=\"onCloseEvent()\"\n></valtimo-tags-modal>\n", styles: [".clickable{cursor:pointer}.container-fluid{background-color:var(--cds-layer)}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}th:first-child,td:first-child{padding-left:25px}::ng-deep tr:has(>td .locked){cursor:not-allowed}::ng-deep tr:has(>td .locked) td{color:var(--cds-text-on-color-disabled)}::ng-deep .valtimo-carbon-list__header--hidden thead{display:none}::ng-deep .valtimo-carbon-list--unclickable tr{cursor:default}.valtimo-carbon-list__toolbar:empty{display:none}.valtimo-carbon-list__no-results{cursor:default}.valtimo-carbon-list__no-results td:empty,.valtimo-carbon-list__no-results td:not(:empty)+td{display:none}.valtimo-carbon-list__move-rows,.valtimo-carbon-list__draggable{width:100%;justify-content:flex-end;display:flex;flex-direction:row;position:relative}.valtimo-carbon-list__move-rows button:not(:last-child),.valtimo-carbon-list__draggable button:not(:last-child){margin-right:8px}.valtimo-carbon-list__expand-tag{cursor:pointer}.valtimo-carbon-list label{margin-bottom:0!important}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag{margin:0}.valtimo-carbon-list ::ng-deep .tag-template .cds--tag svg{fill:var(--cds-background)}.valtimo-carbon-list ::ng-deep .tag-template>*:not(:last-child){margin-right:8px}.valtimo-carbon-list ::ng-deep .cds--tag{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px}.valtimo-carbon-list ::ng-deep .valtimo-carbon-list__draggable .cds--btn--ghost{cursor:move!important;padding-top:8px!important;padding-bottom:8px!important}::ng-deep .valtimo-carbon-list__drag-table-row{cursor:move!important}::ng-deep .valtimo-carbon-list__drag-table-row .valtimo-carbon-list__draggable .cds--btn--ghost{outline:0;border-color:var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60)));box-shadow:inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, var(--vcds-color-60))),inset 0 0 0 2px var(--cds-background, #f4f4f4)}.valtimo-carbon-list ::ng-deep cds-table{overflow:hidden}\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"] }]
|
|
6978
6986
|
}], ctorParameters: () => [{ type: EllipsisPipe }, { type: CarbonListFilterPipe }, { type: i2$3.IconService }, { type: i4.NGXLogger }, { type: i1.TranslateService }, { type: ViewContentService }, { type: KeyStateService }, { type: CarbonListDragAndDropService }, { type: i0.ElementRef }], propDecorators: { actionsMenuTemplate: [{
|
|
6979
6987
|
type: ViewChild,
|
|
6980
6988
|
args: ['actionsMenuTemplate']
|
|
@@ -7712,11 +7720,11 @@ class PageHeaderComponent {
|
|
|
7712
7720
|
this._pageHeadResizeObserver.observe(this._pageHead.nativeElement);
|
|
7713
7721
|
}
|
|
7714
7722
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageHeaderComponent, deps: [{ token: UserInterfaceService }, { token: PageHeaderService }, { token: PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7715
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: PageHeaderComponent, isStandalone: false, selector: "valtimo-page-header", viewQueries: [{ propertyName: "_contentrVcr", first: true, predicate: ["contentVcr"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_pageHead", first: true, predicate: ["pageHead"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n #pageHead\n class=\"page-head\"\n [ngClass]=\"{\n 'page-head--hidden': (showPageHeader$ | async) === false,\n 'page-head--compact': compactMode$ | async,\n 'page-head--no-content': (compactMode$ | async) && (pageActionsHasContent$ | async) === false,\n 'page-head--no-margin': pageTitleHidden$ | async,\n 'page-head--small-title': smallTitle$ | async,\n 'page-head--title-as-breadcrumb': (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n>\n <ng-container #contentVcr></ng-container>\n\n <valtimo-page-subtitle></valtimo-page-subtitle>\n\n <valtimo-page-actions></valtimo-page-actions>\n</div>\n\n<ng-container renderPageHeader>\n <ng-template>\n <div\n class=\"page-header-container\"\n [ngClass]=\"{\n 'page-header-container--compact': compactMode$ | async,\n 'page-header-container--small-title': smallTitle$ | async,\n 'page-header-container--title-as-breadcrumb':\n (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n >\n <valtimo-breadcrumb-navigation></valtimo-breadcrumb-navigation>\n\n <valtimo-page-title></valtimo-page-title>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".page-head{display:flex;width:100%;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-head--hidden{display:none}.page-head--compact{margin-bottom:16px}.page-head--small-title{align-items:flex-start;margin-bottom:0}.page-head--title-as-breadcrumb{flex-direction:column;align-items:stretch;justify-content:flex-start;margin-bottom:16px}.page-head--title-as-breadcrumb ::ng-deep .page-actions--visible{padding-left:0}.page-head--no-content,.page-head--no-margin{margin-bottom:0}.page-header-container{width:min-content}.page-header-container--compact{display:flex;width:100%;justify-content:space-between;align-items:center;padding-inline:16px}.page-header-container--small-title{display:flex;flex-direction:row;gap:8px;width:min-content}.page-header-container--title-as-breadcrumb{width:max-content}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PageTitleComponent, selector: "valtimo-page-title" }, { kind: "component", type: BreadcrumbNavigationComponent, selector: "valtimo-breadcrumb-navigation" }, { kind: "directive", type: RenderPageHeaderDirective, selector: "[renderPageHeader]" }, { kind: "component", type: PageActionsComponent, selector: "valtimo-page-actions" }, { kind: "component", type: PageSubtitleComponent, selector: "valtimo-page-subtitle" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
7723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: PageHeaderComponent, isStandalone: false, selector: "valtimo-page-header", viewQueries: [{ propertyName: "_contentrVcr", first: true, predicate: ["contentVcr"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_pageHead", first: true, predicate: ["pageHead"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n #pageHead\n class=\"page-head\"\n [ngClass]=\"{\n 'page-head--hidden': (showPageHeader$ | async) === false,\n 'page-head--compact': compactMode$ | async,\n 'page-head--no-content': (compactMode$ | async) && (pageActionsHasContent$ | async) === false,\n 'page-head--no-margin': pageTitleHidden$ | async,\n 'page-head--small-title': smallTitle$ | async,\n 'page-head--title-as-breadcrumb': (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n>\n <ng-container #contentVcr></ng-container>\n\n <valtimo-page-subtitle></valtimo-page-subtitle>\n\n <valtimo-page-actions></valtimo-page-actions>\n</div>\n\n<ng-container renderPageHeader>\n <ng-template>\n <div\n class=\"page-header-container\"\n [ngClass]=\"{\n 'page-header-container--compact': compactMode$ | async,\n 'page-header-container--small-title': smallTitle$ | async,\n 'page-header-container--title-as-breadcrumb':\n (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n >\n <valtimo-breadcrumb-navigation></valtimo-breadcrumb-navigation>\n\n <valtimo-page-title></valtimo-page-title>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".page-head{display:flex;width:100%;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-head--hidden{display:none}.page-head--compact{margin-bottom:16px}.page-head--small-title{align-items:flex-start;margin-bottom:0}.page-head--title-as-breadcrumb{flex-direction:column;align-items:stretch;justify-content:flex-start;margin-bottom:16px}.page-head--title-as-breadcrumb ::ng-deep .page-actions--visible{padding-left:0}.page-head--no-content,.page-head--no-margin{margin-bottom:0}.page-head:not(.page-head--title-as-breadcrumb) valtimo-page-actions{flex:1 0 auto;width:auto}.page-header-container{width:min-content;min-width:0}.page-header-container--compact{display:flex;width:100%;justify-content:space-between;align-items:center;padding-inline:16px}.page-header-container--small-title{display:flex;flex-direction:row;gap:8px;width:min-content}.page-header-container--title-as-breadcrumb{width:max-content}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PageTitleComponent, selector: "valtimo-page-title" }, { kind: "component", type: BreadcrumbNavigationComponent, selector: "valtimo-breadcrumb-navigation" }, { kind: "directive", type: RenderPageHeaderDirective, selector: "[renderPageHeader]" }, { kind: "component", type: PageActionsComponent, selector: "valtimo-page-actions" }, { kind: "component", type: PageSubtitleComponent, selector: "valtimo-page-subtitle" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
7716
7724
|
}
|
|
7717
7725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageHeaderComponent, decorators: [{
|
|
7718
7726
|
type: Component,
|
|
7719
|
-
args: [{ selector: 'valtimo-page-header', standalone: false, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n #pageHead\n class=\"page-head\"\n [ngClass]=\"{\n 'page-head--hidden': (showPageHeader$ | async) === false,\n 'page-head--compact': compactMode$ | async,\n 'page-head--no-content': (compactMode$ | async) && (pageActionsHasContent$ | async) === false,\n 'page-head--no-margin': pageTitleHidden$ | async,\n 'page-head--small-title': smallTitle$ | async,\n 'page-head--title-as-breadcrumb': (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n>\n <ng-container #contentVcr></ng-container>\n\n <valtimo-page-subtitle></valtimo-page-subtitle>\n\n <valtimo-page-actions></valtimo-page-actions>\n</div>\n\n<ng-container renderPageHeader>\n <ng-template>\n <div\n class=\"page-header-container\"\n [ngClass]=\"{\n 'page-header-container--compact': compactMode$ | async,\n 'page-header-container--small-title': smallTitle$ | async,\n 'page-header-container--title-as-breadcrumb':\n (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n >\n <valtimo-breadcrumb-navigation></valtimo-breadcrumb-navigation>\n\n <valtimo-page-title></valtimo-page-title>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".page-head{display:flex;width:100%;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-head--hidden{display:none}.page-head--compact{margin-bottom:16px}.page-head--small-title{align-items:flex-start;margin-bottom:0}.page-head--title-as-breadcrumb{flex-direction:column;align-items:stretch;justify-content:flex-start;margin-bottom:16px}.page-head--title-as-breadcrumb ::ng-deep .page-actions--visible{padding-left:0}.page-head--no-content,.page-head--no-margin{margin-bottom:0}.page-header-container{width:min-content}.page-header-container--compact{display:flex;width:100%;justify-content:space-between;align-items:center;padding-inline:16px}.page-header-container--small-title{display:flex;flex-direction:row;gap:8px;width:min-content}.page-header-container--title-as-breadcrumb{width:max-content}\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"] }]
|
|
7727
|
+
args: [{ selector: 'valtimo-page-header', standalone: false, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n #pageHead\n class=\"page-head\"\n [ngClass]=\"{\n 'page-head--hidden': (showPageHeader$ | async) === false,\n 'page-head--compact': compactMode$ | async,\n 'page-head--no-content': (compactMode$ | async) && (pageActionsHasContent$ | async) === false,\n 'page-head--no-margin': pageTitleHidden$ | async,\n 'page-head--small-title': smallTitle$ | async,\n 'page-head--title-as-breadcrumb': (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n>\n <ng-container #contentVcr></ng-container>\n\n <valtimo-page-subtitle></valtimo-page-subtitle>\n\n <valtimo-page-actions></valtimo-page-actions>\n</div>\n\n<ng-container renderPageHeader>\n <ng-template>\n <div\n class=\"page-header-container\"\n [ngClass]=\"{\n 'page-header-container--compact': compactMode$ | async,\n 'page-header-container--small-title': smallTitle$ | async,\n 'page-header-container--title-as-breadcrumb':\n (titleAsBreadcrumb$ | async) && !(compactMode$ | async),\n }\"\n >\n <valtimo-breadcrumb-navigation></valtimo-breadcrumb-navigation>\n\n <valtimo-page-title></valtimo-page-title>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".page-head{display:flex;width:100%;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-head--hidden{display:none}.page-head--compact{margin-bottom:16px}.page-head--small-title{align-items:flex-start;margin-bottom:0}.page-head--title-as-breadcrumb{flex-direction:column;align-items:stretch;justify-content:flex-start;margin-bottom:16px}.page-head--title-as-breadcrumb ::ng-deep .page-actions--visible{padding-left:0}.page-head--no-content,.page-head--no-margin{margin-bottom:0}.page-head:not(.page-head--title-as-breadcrumb) valtimo-page-actions{flex:1 0 auto;width:auto}.page-header-container{width:min-content;min-width:0}.page-header-container--compact{display:flex;width:100%;justify-content:space-between;align-items:center;padding-inline:16px}.page-header-container--small-title{display:flex;flex-direction:row;gap:8px;width:min-content}.page-header-container--title-as-breadcrumb{width:max-content}\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"] }]
|
|
7720
7728
|
}], ctorParameters: () => [{ type: UserInterfaceService }, { type: PageHeaderService }, { type: PageTitleService }], propDecorators: { _contentrVcr: [{
|
|
7721
7729
|
type: ViewChild,
|
|
7722
7730
|
args: ['contentVcr', { static: true, read: ViewContainerRef }]
|
|
@@ -11394,105 +11402,127 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
11394
11402
|
* See the License for the specific language governing permissions and
|
|
11395
11403
|
* limitations under the License.
|
|
11396
11404
|
*/
|
|
11397
|
-
const
|
|
11398
|
-
|
|
11399
|
-
|
|
11400
|
-
|
|
11401
|
-
|
|
11402
|
-
|
|
11403
|
-
|
|
11404
|
-
|
|
11405
|
-
|
|
11406
|
-
|
|
11407
|
-
|
|
11408
|
-
},
|
|
11405
|
+
const TextFieldEditForm$1 = Components.components.textfield.editForm;
|
|
11406
|
+
const uploaderDisplayComponents = [
|
|
11407
|
+
{
|
|
11408
|
+
type: 'textfield',
|
|
11409
|
+
input: true,
|
|
11410
|
+
key: 'label',
|
|
11411
|
+
label: 'Label',
|
|
11412
|
+
placeholder: 'Label',
|
|
11413
|
+
weight: 0,
|
|
11414
|
+
validate: {
|
|
11415
|
+
required: true,
|
|
11409
11416
|
},
|
|
11410
|
-
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
|
|
11414
|
-
|
|
11415
|
-
|
|
11416
|
-
|
|
11417
|
-
|
|
11418
|
-
|
|
11417
|
+
},
|
|
11418
|
+
{
|
|
11419
|
+
type: 'checkbox',
|
|
11420
|
+
input: true,
|
|
11421
|
+
inputType: 'checkbox',
|
|
11422
|
+
key: 'validate.required',
|
|
11423
|
+
label: 'Required',
|
|
11424
|
+
weight: 10,
|
|
11425
|
+
validate: {
|
|
11426
|
+
required: false,
|
|
11419
11427
|
},
|
|
11420
|
-
|
|
11421
|
-
|
|
11422
|
-
|
|
11423
|
-
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11428
|
+
},
|
|
11429
|
+
{
|
|
11430
|
+
type: 'textfield',
|
|
11431
|
+
input: true,
|
|
11432
|
+
key: 'key',
|
|
11433
|
+
label: 'Property Name',
|
|
11434
|
+
placeholder: 'Property Name',
|
|
11435
|
+
tooltip: 'The name of this field in the API endpoint.',
|
|
11436
|
+
weight: 20,
|
|
11437
|
+
validate: {
|
|
11438
|
+
required: true,
|
|
11430
11439
|
},
|
|
11431
|
-
|
|
11432
|
-
|
|
11433
|
-
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11438
|
-
|
|
11439
|
-
|
|
11440
|
-
|
|
11440
|
+
},
|
|
11441
|
+
{
|
|
11442
|
+
type: 'textfield',
|
|
11443
|
+
input: true,
|
|
11444
|
+
key: 'customOptions.title',
|
|
11445
|
+
label: 'Title',
|
|
11446
|
+
placeholder: 'Title',
|
|
11447
|
+
tooltip: 'Leave empty to use the default title',
|
|
11448
|
+
weight: 30,
|
|
11449
|
+
validate: {
|
|
11450
|
+
required: false,
|
|
11441
11451
|
},
|
|
11442
|
-
|
|
11443
|
-
|
|
11444
|
-
|
|
11445
|
-
|
|
11446
|
-
|
|
11447
|
-
|
|
11448
|
-
|
|
11449
|
-
|
|
11450
|
-
|
|
11452
|
+
},
|
|
11453
|
+
{
|
|
11454
|
+
type: 'checkbox',
|
|
11455
|
+
input: true,
|
|
11456
|
+
inputType: 'checkbox',
|
|
11457
|
+
key: 'customOptions.hideTitle',
|
|
11458
|
+
label: 'Hide title',
|
|
11459
|
+
weight: 40,
|
|
11460
|
+
validate: {
|
|
11461
|
+
required: false,
|
|
11451
11462
|
},
|
|
11452
|
-
|
|
11453
|
-
|
|
11454
|
-
|
|
11455
|
-
|
|
11456
|
-
|
|
11457
|
-
|
|
11458
|
-
|
|
11459
|
-
|
|
11460
|
-
|
|
11461
|
-
|
|
11463
|
+
},
|
|
11464
|
+
{
|
|
11465
|
+
type: 'textfield',
|
|
11466
|
+
input: true,
|
|
11467
|
+
key: 'customOptions.subtitle',
|
|
11468
|
+
label: 'Subtitle',
|
|
11469
|
+
placeholder: 'Title',
|
|
11470
|
+
tooltip: 'Leave empty to hide subtitle',
|
|
11471
|
+
weight: 50,
|
|
11472
|
+
validate: {
|
|
11473
|
+
required: false,
|
|
11462
11474
|
},
|
|
11463
|
-
|
|
11464
|
-
|
|
11465
|
-
|
|
11466
|
-
|
|
11467
|
-
|
|
11468
|
-
|
|
11469
|
-
|
|
11470
|
-
|
|
11471
|
-
|
|
11472
|
-
|
|
11475
|
+
},
|
|
11476
|
+
{
|
|
11477
|
+
type: 'number',
|
|
11478
|
+
input: true,
|
|
11479
|
+
key: 'customOptions.maxFileSize',
|
|
11480
|
+
label: 'Maximum file size',
|
|
11481
|
+
placeholder: 'Maximum file size',
|
|
11482
|
+
defaultValue: 5,
|
|
11483
|
+
weight: 60,
|
|
11484
|
+
validate: {
|
|
11485
|
+
required: true,
|
|
11473
11486
|
},
|
|
11474
|
-
|
|
11475
|
-
|
|
11476
|
-
|
|
11477
|
-
|
|
11478
|
-
|
|
11479
|
-
|
|
11480
|
-
|
|
11481
|
-
|
|
11482
|
-
|
|
11487
|
+
},
|
|
11488
|
+
{
|
|
11489
|
+
type: 'checkbox',
|
|
11490
|
+
input: true,
|
|
11491
|
+
inputType: 'checkbox',
|
|
11492
|
+
key: 'customOptions.hideMaxFileSize',
|
|
11493
|
+
label: 'Hide maximum file size',
|
|
11494
|
+
weight: 70,
|
|
11495
|
+
validate: {
|
|
11496
|
+
required: false,
|
|
11483
11497
|
},
|
|
11484
|
-
|
|
11485
|
-
|
|
11486
|
-
|
|
11487
|
-
|
|
11488
|
-
|
|
11489
|
-
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
|
|
11498
|
+
},
|
|
11499
|
+
{
|
|
11500
|
+
type: 'checkbox',
|
|
11501
|
+
input: true,
|
|
11502
|
+
inputType: 'checkbox',
|
|
11503
|
+
key: 'customOptions.camera',
|
|
11504
|
+
label: 'Allow camera uploads',
|
|
11505
|
+
weight: 80,
|
|
11506
|
+
validate: {
|
|
11507
|
+
required: false,
|
|
11493
11508
|
},
|
|
11494
|
-
|
|
11495
|
-
|
|
11509
|
+
},
|
|
11510
|
+
];
|
|
11511
|
+
const formIoUploaderEditForm = () => {
|
|
11512
|
+
const editForm = TextFieldEditForm$1();
|
|
11513
|
+
editForm.components.unshift({ key: 'type', type: 'hidden' });
|
|
11514
|
+
const tabsComponent = editForm.components.find(component => component.key === 'tabs');
|
|
11515
|
+
if (tabsComponent) {
|
|
11516
|
+
const displayTab = tabsComponent.components.find(tab => tab.key === 'display');
|
|
11517
|
+
if (displayTab) {
|
|
11518
|
+
displayTab.components = uploaderDisplayComponents;
|
|
11519
|
+
}
|
|
11520
|
+
// Keep only the tabs relevant to the custom uploader: the curated Display tab
|
|
11521
|
+
// plus the standard Conditional and Logic tabs for configuring visibility/logic.
|
|
11522
|
+
tabsComponent.components = tabsComponent.components.filter(tab => ['display', 'conditional', 'logic'].includes(tab.key));
|
|
11523
|
+
}
|
|
11524
|
+
return editForm;
|
|
11525
|
+
};
|
|
11496
11526
|
|
|
11497
11527
|
/*
|
|
11498
11528
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -11510,7 +11540,7 @@ const formIoUploaderEditForm = () => ({
|
|
|
11510
11540
|
* limitations under the License.
|
|
11511
11541
|
*/
|
|
11512
11542
|
const customUploaderType = 'valtimo-file';
|
|
11513
|
-
const COMPONENT_OPTIONS$
|
|
11543
|
+
const COMPONENT_OPTIONS$6 = {
|
|
11514
11544
|
type: customUploaderType,
|
|
11515
11545
|
selector: 'valtimo-form-io-uploader',
|
|
11516
11546
|
title: 'Valtimo File Upload',
|
|
@@ -11521,8 +11551,8 @@ const COMPONENT_OPTIONS$5 = {
|
|
|
11521
11551
|
editForm: formIoUploaderEditForm,
|
|
11522
11552
|
};
|
|
11523
11553
|
function registerFormioUploadComponent(injector) {
|
|
11524
|
-
if (!customElements.get(COMPONENT_OPTIONS$
|
|
11525
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11554
|
+
if (!customElements.get(COMPONENT_OPTIONS$6.selector)) {
|
|
11555
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$6, FormIoUploaderComponent, injector);
|
|
11526
11556
|
}
|
|
11527
11557
|
}
|
|
11528
11558
|
|
|
@@ -11605,7 +11635,7 @@ const formIoCurrentUserEditForm = () => ({
|
|
|
11605
11635
|
* See the License for the specific language governing permissions and
|
|
11606
11636
|
* limitations under the License.
|
|
11607
11637
|
*/
|
|
11608
|
-
const COMPONENT_OPTIONS$
|
|
11638
|
+
const COMPONENT_OPTIONS$5 = {
|
|
11609
11639
|
type: 'valtimo-current-user',
|
|
11610
11640
|
selector: 'valtimo-form-io-current-user',
|
|
11611
11641
|
title: 'Valtimo Current User',
|
|
@@ -11618,7 +11648,7 @@ const COMPONENT_OPTIONS$4 = {
|
|
|
11618
11648
|
},
|
|
11619
11649
|
};
|
|
11620
11650
|
function registerFormioCurrentUserComponent(injector) {
|
|
11621
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11651
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$5, FormIoCurrentUserComponent, injector);
|
|
11622
11652
|
}
|
|
11623
11653
|
|
|
11624
11654
|
/*
|
|
@@ -11636,7 +11666,7 @@ function registerFormioCurrentUserComponent(injector) {
|
|
|
11636
11666
|
* See the License for the specific language governing permissions and
|
|
11637
11667
|
* limitations under the License.
|
|
11638
11668
|
*/
|
|
11639
|
-
const COMPONENT_OPTIONS$
|
|
11669
|
+
const COMPONENT_OPTIONS$4 = {
|
|
11640
11670
|
type: 'iban',
|
|
11641
11671
|
selector: 'valtimo-iban',
|
|
11642
11672
|
title: 'Iban',
|
|
@@ -11653,7 +11683,7 @@ const COMPONENT_OPTIONS$3 = {
|
|
|
11653
11683
|
},
|
|
11654
11684
|
};
|
|
11655
11685
|
function registerFormioIbanComponent(injector) {
|
|
11656
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11686
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$4, FormIoIbanComponent, injector);
|
|
11657
11687
|
}
|
|
11658
11688
|
|
|
11659
11689
|
/*
|
|
@@ -11766,7 +11796,7 @@ const currencyEditForm = () => {
|
|
|
11766
11796
|
* See the License for the specific language governing permissions and
|
|
11767
11797
|
* limitations under the License.
|
|
11768
11798
|
*/
|
|
11769
|
-
const COMPONENT_OPTIONS$
|
|
11799
|
+
const COMPONENT_OPTIONS$3 = {
|
|
11770
11800
|
type: 'currency',
|
|
11771
11801
|
selector: 'valtimo-currency',
|
|
11772
11802
|
title: 'Currency',
|
|
@@ -11784,7 +11814,7 @@ const COMPONENT_OPTIONS$2 = {
|
|
|
11784
11814
|
editForm: currencyEditForm,
|
|
11785
11815
|
};
|
|
11786
11816
|
function registerFormioCurrencyComponent(injector) {
|
|
11787
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11817
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$3, FormIoCurrencyComponent, injector);
|
|
11788
11818
|
}
|
|
11789
11819
|
|
|
11790
11820
|
/*
|
|
@@ -11882,36 +11912,148 @@ function registerFormioFileSelectorComponent(injector) {
|
|
|
11882
11912
|
* See the License for the specific language governing permissions and
|
|
11883
11913
|
* limitations under the License.
|
|
11884
11914
|
*/
|
|
11885
|
-
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
|
|
11890
|
-
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11915
|
+
/**
|
|
11916
|
+
* @deprecated Migrate old design to Carbon
|
|
11917
|
+
*/
|
|
11918
|
+
class DatePickerComponent {
|
|
11919
|
+
set fullWidth(value) {
|
|
11920
|
+
this.fullWidthClass = value;
|
|
11921
|
+
}
|
|
11922
|
+
set defaultDate(value) {
|
|
11923
|
+
this.dateValue$.next(value);
|
|
11924
|
+
}
|
|
11925
|
+
constructor(translateService) {
|
|
11926
|
+
this.translateService = translateService;
|
|
11927
|
+
this.fullWidthClass = false;
|
|
11928
|
+
this.name = '';
|
|
11929
|
+
this.title = '';
|
|
11930
|
+
this.placeholder = '';
|
|
11931
|
+
this.titleTranslationKey = '';
|
|
11932
|
+
this.margin = false;
|
|
11933
|
+
this.disabled = false;
|
|
11934
|
+
this.tooltip = '';
|
|
11935
|
+
this.required = false;
|
|
11936
|
+
this.smallLabel = false;
|
|
11937
|
+
this.enableTime = false;
|
|
11938
|
+
this.carbonTheme = 'g10';
|
|
11939
|
+
this.valueChange = new EventEmitter();
|
|
11940
|
+
this.dateValue$ = new BehaviorSubject('');
|
|
11941
|
+
this._subscriptions = new Subscription();
|
|
11942
|
+
this.onChange = (selectedDates, dateStr) => {
|
|
11943
|
+
this.dateValue$.next(dateStr);
|
|
11894
11944
|
};
|
|
11895
|
-
this.itemsSelected = new EventEmitter();
|
|
11896
11945
|
}
|
|
11897
|
-
|
|
11898
|
-
this.
|
|
11946
|
+
ngAfterViewInit() {
|
|
11947
|
+
this.openLocaleSubscription();
|
|
11948
|
+
this.openDateValueSubscription();
|
|
11949
|
+
this.openClearSubscription();
|
|
11899
11950
|
}
|
|
11900
|
-
|
|
11901
|
-
|
|
11951
|
+
ngOnDestroy() {
|
|
11952
|
+
this._subscriptions.unsubscribe();
|
|
11953
|
+
}
|
|
11954
|
+
openLocaleSubscription() {
|
|
11955
|
+
this._subscriptions.add(this.translateService.stream('key').subscribe(() => {
|
|
11956
|
+
this.setFlatpickrInstance(this.translateService.currentLang);
|
|
11957
|
+
}));
|
|
11958
|
+
}
|
|
11959
|
+
openDateValueSubscription() {
|
|
11960
|
+
this._subscriptions.add(this.dateValue$.subscribe(dateValue => {
|
|
11961
|
+
this.valueChange.emit(dateValue);
|
|
11962
|
+
}));
|
|
11963
|
+
}
|
|
11964
|
+
setFlatpickrInstance(localeKey) {
|
|
11965
|
+
this._flatpickrInstance?.destroy();
|
|
11966
|
+
this._flatpickrInstance = flatpickr(this.datePickerElement.nativeElement, {
|
|
11967
|
+
locale: this.getLocale(localeKey),
|
|
11968
|
+
onChange: [this.onChange],
|
|
11969
|
+
defaultDate: this.getFlatpickrValue(),
|
|
11970
|
+
enableTime: this.enableTime,
|
|
11971
|
+
});
|
|
11972
|
+
this.emitDate();
|
|
11973
|
+
}
|
|
11974
|
+
emitDate() {
|
|
11975
|
+
const currentDate = this._flatpickrInstance.selectedDates[0];
|
|
11976
|
+
const formattedDate = currentDate && this._flatpickrInstance.formatDate(currentDate, 'Y-m-d');
|
|
11977
|
+
if (formattedDate) {
|
|
11978
|
+
this.dateValue$.next(formattedDate);
|
|
11979
|
+
}
|
|
11980
|
+
}
|
|
11981
|
+
getFlatpickrValue() {
|
|
11982
|
+
const savedValue = this.dateValue$.getValue();
|
|
11983
|
+
const todayDate = this.defaultDateIsToday && new Date();
|
|
11984
|
+
const defaultDate = this.defaultDate;
|
|
11985
|
+
return todayDate || defaultDate || savedValue;
|
|
11986
|
+
}
|
|
11987
|
+
getLocale(localeKey) {
|
|
11988
|
+
let locale;
|
|
11989
|
+
switch (localeKey) {
|
|
11990
|
+
case 'nl':
|
|
11991
|
+
locale = Dutch;
|
|
11992
|
+
break;
|
|
11993
|
+
case 'de':
|
|
11994
|
+
locale = German;
|
|
11995
|
+
break;
|
|
11996
|
+
case 'en':
|
|
11997
|
+
locale = english;
|
|
11998
|
+
break;
|
|
11999
|
+
default:
|
|
12000
|
+
locale = english;
|
|
12001
|
+
break;
|
|
12002
|
+
}
|
|
12003
|
+
return locale;
|
|
12004
|
+
}
|
|
12005
|
+
openClearSubscription() {
|
|
12006
|
+
if (this.clear$) {
|
|
12007
|
+
this._subscriptions.add(this.clear$.subscribe(() => {
|
|
12008
|
+
this.dateValue$.next('');
|
|
12009
|
+
}));
|
|
12010
|
+
}
|
|
12011
|
+
}
|
|
12012
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12013
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: DatePickerComponent, isStandalone: false, selector: "v-date-picker", inputs: { name: "name", title: "title", placeholder: "placeholder", titleTranslationKey: "titleTranslationKey", widthPx: "widthPx", fullWidth: "fullWidth", margin: "margin", disabled: "disabled", tooltip: "tooltip", required: "required", defaultDate: "defaultDate", defaultDateIsToday: "defaultDateIsToday", smallLabel: "smallLabel", clear$: "clear$", enableTime: "enableTime", carbonTheme: "carbonTheme" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.full-width": "this.fullWidthClass" } }, viewQueries: [{ propertyName: "datePickerElement", first: true, predicate: ["datePickerElement"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"v-date-picker-container\">\n <ng-container *ngTemplateOutlet=\"inputTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n</div>\n\n<ng-template #inputTitle>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [small]=\"smallLabel\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n</ng-template>\n\n<ng-template #dateInput>\n <input\n #datePickerElement\n cdsText\n [ngClass]=\"{\n 'v-date-picker--full-width': fullWidthClass,\n 'v-date-picker--margin': margin,\n }\"\n [ngModel]=\"dateValue$ | async\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [style.width.px]=\"widthPx + 20\"\n type=\"text\"\n />\n</ng-template>\n", styles: [".full-width{width:100%}.v-date-picker-container{display:flex;flex-direction:column}.v-date-picker{all:unset;font-size:var(--v-input-font-size);line-height:var(--v-input-line-height);color:var(--v-input-color);font-weight:var(--v-input-font-weight);padding-block-start:var(--v-input-padding-block);padding-block-end:var(--v-input-padding-block);padding-inline-start:var(--v-input-padding-inline);padding-inline-end:var(--v-input-padding-inline);background-color:var(--v-input-bg-color);border-radius:var(--v-input-border-radius);border:var(--v-input-border);transition:var(--v-input-transition);width:var(--v-input-default-width);box-sizing:border-box}.v-date-picker:focus{outline:var(--v-input-focus-border);outline-offset:var(--v-outline-offset)}.v-date-picker:disabled{color:var(--v-input-font-color-disabled);cursor:var(--v-input-disabled-cursor)}.v-date-picker--full-width{width:100%}.v-date-picker--margin{margin-block-end:var(--v-input-margin)}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
11902
12014
|
}
|
|
11903
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12015
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
11904
12016
|
type: Component,
|
|
11905
|
-
args: [{ selector: '
|
|
11906
|
-
}], propDecorators: {
|
|
12017
|
+
args: [{ selector: 'v-date-picker', standalone: false, 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=\"v-date-picker-container\">\n <ng-container *ngTemplateOutlet=\"inputTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n</div>\n\n<ng-template #inputTitle>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [small]=\"smallLabel\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n</ng-template>\n\n<ng-template #dateInput>\n <input\n #datePickerElement\n cdsText\n [ngClass]=\"{\n 'v-date-picker--full-width': fullWidthClass,\n 'v-date-picker--margin': margin,\n }\"\n [ngModel]=\"dateValue$ | async\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [style.width.px]=\"widthPx + 20\"\n type=\"text\"\n />\n</ng-template>\n", styles: [".full-width{width:100%}.v-date-picker-container{display:flex;flex-direction:column}.v-date-picker{all:unset;font-size:var(--v-input-font-size);line-height:var(--v-input-line-height);color:var(--v-input-color);font-weight:var(--v-input-font-weight);padding-block-start:var(--v-input-padding-block);padding-block-end:var(--v-input-padding-block);padding-inline-start:var(--v-input-padding-inline);padding-inline-end:var(--v-input-padding-inline);background-color:var(--v-input-bg-color);border-radius:var(--v-input-border-radius);border:var(--v-input-border);transition:var(--v-input-transition);width:var(--v-input-default-width);box-sizing:border-box}.v-date-picker:focus{outline:var(--v-input-focus-border);outline-offset:var(--v-outline-offset)}.v-date-picker:disabled{color:var(--v-input-font-color-disabled);cursor:var(--v-input-disabled-cursor)}.v-date-picker--full-width{width:100%}.v-date-picker--margin{margin-block-end:var(--v-input-margin)}\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"] }]
|
|
12018
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { fullWidthClass: [{
|
|
12019
|
+
type: HostBinding,
|
|
12020
|
+
args: ['class.full-width']
|
|
12021
|
+
}], datePickerElement: [{
|
|
12022
|
+
type: ViewChild,
|
|
12023
|
+
args: ['datePickerElement']
|
|
12024
|
+
}], name: [{
|
|
11907
12025
|
type: Input
|
|
11908
|
-
}],
|
|
12026
|
+
}], title: [{
|
|
11909
12027
|
type: Input
|
|
11910
|
-
}],
|
|
12028
|
+
}], placeholder: [{
|
|
11911
12029
|
type: Input
|
|
11912
|
-
}],
|
|
12030
|
+
}], titleTranslationKey: [{
|
|
11913
12031
|
type: Input
|
|
11914
|
-
}],
|
|
12032
|
+
}], widthPx: [{
|
|
12033
|
+
type: Input
|
|
12034
|
+
}], fullWidth: [{
|
|
12035
|
+
type: Input
|
|
12036
|
+
}], margin: [{
|
|
12037
|
+
type: Input
|
|
12038
|
+
}], disabled: [{
|
|
12039
|
+
type: Input
|
|
12040
|
+
}], tooltip: [{
|
|
12041
|
+
type: Input
|
|
12042
|
+
}], required: [{
|
|
12043
|
+
type: Input
|
|
12044
|
+
}], defaultDate: [{
|
|
12045
|
+
type: Input
|
|
12046
|
+
}], defaultDateIsToday: [{
|
|
12047
|
+
type: Input
|
|
12048
|
+
}], smallLabel: [{
|
|
12049
|
+
type: Input
|
|
12050
|
+
}], clear$: [{
|
|
12051
|
+
type: Input
|
|
12052
|
+
}], enableTime: [{
|
|
12053
|
+
type: Input
|
|
12054
|
+
}], carbonTheme: [{
|
|
12055
|
+
type: Input
|
|
12056
|
+
}], valueChange: [{
|
|
11915
12057
|
type: Output
|
|
11916
12058
|
}] } });
|
|
11917
12059
|
|
|
@@ -11930,17 +12072,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
11930
12072
|
* See the License for the specific language governing permissions and
|
|
11931
12073
|
* limitations under the License.
|
|
11932
12074
|
*/
|
|
11933
|
-
|
|
11934
|
-
|
|
11935
|
-
|
|
11936
|
-
|
|
12075
|
+
/**
|
|
12076
|
+
* @deprecated Migrate old design to Carbon
|
|
12077
|
+
*/
|
|
12078
|
+
class DatePickerModule {
|
|
12079
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12080
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, declarations: [DatePickerComponent], imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1], exports: [DatePickerComponent] }); }
|
|
12081
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1] }); }
|
|
11937
12082
|
}
|
|
11938
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12083
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, decorators: [{
|
|
11939
12084
|
type: NgModule,
|
|
11940
12085
|
args: [{
|
|
11941
|
-
declarations: [
|
|
11942
|
-
imports: [CommonModule,
|
|
11943
|
-
exports: [
|
|
12086
|
+
declarations: [DatePickerComponent],
|
|
12087
|
+
imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1],
|
|
12088
|
+
exports: [DatePickerComponent],
|
|
11944
12089
|
}]
|
|
11945
12090
|
}] });
|
|
11946
12091
|
|
|
@@ -12414,6 +12559,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12414
12559
|
type: Output
|
|
12415
12560
|
}] } });
|
|
12416
12561
|
|
|
12562
|
+
/*
|
|
12563
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
12564
|
+
*
|
|
12565
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12566
|
+
* you may not use this file except in compliance with the License.
|
|
12567
|
+
* You may obtain a copy of the License at
|
|
12568
|
+
*
|
|
12569
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
12570
|
+
*
|
|
12571
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12572
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12573
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12574
|
+
* See the License for the specific language governing permissions and
|
|
12575
|
+
* limitations under the License.
|
|
12576
|
+
*/
|
|
12577
|
+
class InputModule {
|
|
12578
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12579
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: InputModule, declarations: [InputComponent, DigitOnlyDirective], imports: [CommonModule,
|
|
12580
|
+
TranslateModule,
|
|
12581
|
+
FormsModule,
|
|
12582
|
+
InputLabelModule,
|
|
12583
|
+
ButtonModule,
|
|
12584
|
+
CheckboxModule,
|
|
12585
|
+
InputModule$1,
|
|
12586
|
+
IconModule], exports: [InputComponent] }); }
|
|
12587
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, imports: [CommonModule,
|
|
12588
|
+
TranslateModule,
|
|
12589
|
+
FormsModule,
|
|
12590
|
+
InputLabelModule,
|
|
12591
|
+
ButtonModule,
|
|
12592
|
+
CheckboxModule,
|
|
12593
|
+
InputModule$1,
|
|
12594
|
+
IconModule] }); }
|
|
12595
|
+
}
|
|
12596
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, decorators: [{
|
|
12597
|
+
type: NgModule,
|
|
12598
|
+
args: [{
|
|
12599
|
+
declarations: [InputComponent, DigitOnlyDirective],
|
|
12600
|
+
imports: [
|
|
12601
|
+
CommonModule,
|
|
12602
|
+
TranslateModule,
|
|
12603
|
+
FormsModule,
|
|
12604
|
+
InputLabelModule,
|
|
12605
|
+
ButtonModule,
|
|
12606
|
+
CheckboxModule,
|
|
12607
|
+
InputModule$1,
|
|
12608
|
+
IconModule,
|
|
12609
|
+
],
|
|
12610
|
+
exports: [InputComponent],
|
|
12611
|
+
}]
|
|
12612
|
+
}] });
|
|
12613
|
+
|
|
12417
12614
|
/*
|
|
12418
12615
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
12419
12616
|
*
|
|
@@ -12454,8 +12651,9 @@ class SelectComponent {
|
|
|
12454
12651
|
setDisabledState(isDisabled) {
|
|
12455
12652
|
this.$disabled.set(isDisabled);
|
|
12456
12653
|
}
|
|
12457
|
-
constructor(translateService) {
|
|
12654
|
+
constructor(translateService, changeDetectorRef) {
|
|
12458
12655
|
this.translateService = translateService;
|
|
12656
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
12459
12657
|
this.$disabled = signal(false);
|
|
12460
12658
|
this.invalid = false;
|
|
12461
12659
|
this.multiple = false;
|
|
@@ -12488,10 +12686,17 @@ class SelectComponent {
|
|
|
12488
12686
|
const isSelected = Array.isArray(selected)
|
|
12489
12687
|
? selected.includes(listItem.id)
|
|
12490
12688
|
: selected === listItem.id;
|
|
12689
|
+
// Only replace the content with the translation when it resolved to an actual (different)
|
|
12690
|
+
// string. When an item's content happens to match a translation namespace, instant()
|
|
12691
|
+
// returns that nested object; using it would render the option as "[object Object]", so we
|
|
12692
|
+
// keep the original content instead.
|
|
12693
|
+
const translated = typeof translation === 'string' && translation !== listItem.content
|
|
12694
|
+
? translation
|
|
12695
|
+
: listItem.content;
|
|
12491
12696
|
return {
|
|
12492
12697
|
...listItem,
|
|
12493
12698
|
selected: isSelected,
|
|
12494
|
-
content:
|
|
12699
|
+
content: translated,
|
|
12495
12700
|
};
|
|
12496
12701
|
})));
|
|
12497
12702
|
this._onChange = () => { };
|
|
@@ -12502,6 +12707,17 @@ class SelectComponent {
|
|
|
12502
12707
|
this.openSelectedSubscription();
|
|
12503
12708
|
this.openClearSubjectSubscription();
|
|
12504
12709
|
}
|
|
12710
|
+
ngAfterViewInit() {
|
|
12711
|
+
// The underlying Carbon combobox computes its displayed value asynchronously, in a setTimeout
|
|
12712
|
+
// scheduled during its own view initialization. When this component lives under an OnPush
|
|
12713
|
+
// ancestor that is not marked dirty, that update is never flushed to the DOM, so a preselected
|
|
12714
|
+
// value only becomes visible after the user interacts with the control. Because this setTimeout
|
|
12715
|
+
// is scheduled after the combobox's (lifecycle hooks of child views run first), it runs once
|
|
12716
|
+
// the combobox has set its display value, and detectChanges() flushes it to the DOM. A
|
|
12717
|
+
// setTimeout is used instead of NgZone.onStable so the flush also works in apps with
|
|
12718
|
+
// long-running background tasks that keep the zone from ever stabilizing.
|
|
12719
|
+
this._displayFlushTimeoutId = setTimeout(() => this.changeDetectorRef.detectChanges());
|
|
12720
|
+
}
|
|
12505
12721
|
ngOnChanges(changes) {
|
|
12506
12722
|
if (changes?.items?.currentValue ||
|
|
12507
12723
|
changes?.defaultSelectionId?.currentValue ||
|
|
@@ -12513,6 +12729,8 @@ class SelectComponent {
|
|
|
12513
12729
|
ngOnDestroy() {
|
|
12514
12730
|
this._selectedSubscription?.unsubscribe();
|
|
12515
12731
|
this._clearSubjectSubscription?.unsubscribe();
|
|
12732
|
+
if (this._displayFlushTimeoutId !== undefined)
|
|
12733
|
+
clearTimeout(this._displayFlushTimeoutId);
|
|
12516
12734
|
}
|
|
12517
12735
|
setSelected(selectedValue) {
|
|
12518
12736
|
const id = !Array.isArray(selectedValue) && selectedValue?.id;
|
|
@@ -12535,6 +12753,12 @@ class SelectComponent {
|
|
|
12535
12753
|
clear() {
|
|
12536
12754
|
this.setSelectedValue(this.multiple ? [] : '');
|
|
12537
12755
|
}
|
|
12756
|
+
onDropdownClose() {
|
|
12757
|
+
// The Carbon combobox closes itself (e.g. on an outside click) by toggling internal state.
|
|
12758
|
+
// Under an OnPush ancestor that change is not flushed to the DOM, so the open dropdown would
|
|
12759
|
+
// stay visible. Marking this view for check flushes the close.
|
|
12760
|
+
this.changeDetectorRef.markForCheck();
|
|
12761
|
+
}
|
|
12538
12762
|
setDefaultSelection() {
|
|
12539
12763
|
this.listItems$.pipe(take(1)).subscribe(listItems => {
|
|
12540
12764
|
const itemsIds = listItems?.map(item => item.id);
|
|
@@ -12571,14 +12795,14 @@ class SelectComponent {
|
|
|
12571
12795
|
});
|
|
12572
12796
|
}
|
|
12573
12797
|
}
|
|
12574
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12798
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12575
12799
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: SelectComponent, isStandalone: false, selector: "v-select", inputs: { items: "items", defaultSelection: "defaultSelection", defaultSelectionId: "defaultSelectionId", defaultSelectionIds: "defaultSelectionIds", disabled: "disabled", dropUp: "dropUp", invalid: "invalid", multiple: "multiple", margin: "margin", widthInPx: "widthInPx", notFoundText: "notFoundText", clearAllText: "clearAllText", clearText: "clearText", clearable: "clearable", name: "name", title: "title", titleTranslationKey: "titleTranslationKey", clearSelectionSubject$: "clearSelectionSubject$", tooltip: "tooltip", required: "required", loading: "loading", loadingText: "loadingText", placeholder: "placeholder", smallMargin: "smallMargin", carbonTheme: "carbonTheme", appendInline: "appendInline", warn: "warn", warnText: "warnText", dataTestId: "dataTestId" }, outputs: { selectedChange: "selectedChange" }, providers: [
|
|
12576
12800
|
{
|
|
12577
12801
|
provide: NG_VALUE_ACCESSOR,
|
|
12578
12802
|
useExisting: forwardRef(() => SelectComponent),
|
|
12579
12803
|
multi: true,
|
|
12580
12804
|
},
|
|
12581
|
-
], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async,\n } as vars\"\n class=\"v-select-container\"\n [ngClass]=\"{\n 'v-select-container--margin': margin,\n 'v-select-container--small-margin': smallMargin,\n 'v-select-container--not-clearable': !clearable,\n }\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <cds-combo-box\n [attr.data-testid]=\"dataTestId\"\n [appendInline]=\"appendInline\"\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"$disabled() || loading || (vars?.items || []).length === 0\"\n [dropUp]=\"dropUp\"\n [invalid]=\"invalid\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : (vars?.items || []).length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n [warn]=\"warn\"\n [warnText]=\"warnText\"\n (clear)=\"clear()\"\n (selected)=\"setSelected($event)\"\n >\n <cds-dropdown-list [items]=\"vars?.items || []\"></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: [".v-select-container--margin{margin-block-end:var(--v-input-margin)}.v-select-container--small-margin{margin-block-end:var(--v-input-small-margin)}.v-select-container--not-clearable .cds--list-box.cds--combo-box .cds--list-box__field>.cds--list-box__selection{display:none!important}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i2$3.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i2$3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
12805
|
+
], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async,\n } as vars\"\n class=\"v-select-container\"\n [ngClass]=\"{\n 'v-select-container--margin': margin,\n 'v-select-container--small-margin': smallMargin,\n 'v-select-container--not-clearable': !clearable,\n }\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <cds-combo-box\n [attr.data-testid]=\"dataTestId\"\n [appendInline]=\"appendInline\"\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"$disabled() || loading || (vars?.items || []).length === 0\"\n [dropUp]=\"dropUp\"\n [invalid]=\"invalid\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : (vars?.items || []).length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n [warn]=\"warn\"\n [warnText]=\"warnText\"\n (clear)=\"clear()\"\n (close)=\"onDropdownClose()\"\n (selected)=\"setSelected($event)\"\n >\n <cds-dropdown-list [items]=\"vars?.items || []\"></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: [".v-select-container--margin{margin-block-end:var(--v-input-margin)}.v-select-container--small-margin{margin-block-end:var(--v-input-small-margin)}.v-select-container--not-clearable .cds--list-box.cds--combo-box .cds--list-box__field>.cds--list-box__selection{display:none!important}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i2$3.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i2$3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
12582
12806
|
}
|
|
12583
12807
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectComponent, decorators: [{
|
|
12584
12808
|
type: Component,
|
|
@@ -12588,8 +12812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12588
12812
|
useExisting: forwardRef(() => SelectComponent),
|
|
12589
12813
|
multi: true,
|
|
12590
12814
|
},
|
|
12591
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async,\n } as vars\"\n class=\"v-select-container\"\n [ngClass]=\"{\n 'v-select-container--margin': margin,\n 'v-select-container--small-margin': smallMargin,\n 'v-select-container--not-clearable': !clearable,\n }\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <cds-combo-box\n [attr.data-testid]=\"dataTestId\"\n [appendInline]=\"appendInline\"\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"$disabled() || loading || (vars?.items || []).length === 0\"\n [dropUp]=\"dropUp\"\n [invalid]=\"invalid\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : (vars?.items || []).length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n [warn]=\"warn\"\n [warnText]=\"warnText\"\n (clear)=\"clear()\"\n (selected)=\"setSelected($event)\"\n >\n <cds-dropdown-list [items]=\"vars?.items || []\"></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: [".v-select-container--margin{margin-block-end:var(--v-input-margin)}.v-select-container--small-margin{margin-block-end:var(--v-input-small-margin)}.v-select-container--not-clearable .cds--list-box.cds--combo-box .cds--list-box__field>.cds--list-box__selection{display:none!important}\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"] }]
|
|
12592
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { items: [{
|
|
12815
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async,\n } as vars\"\n class=\"v-select-container\"\n [ngClass]=\"{\n 'v-select-container--margin': margin,\n 'v-select-container--small-margin': smallMargin,\n 'v-select-container--not-clearable': !clearable,\n }\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <cds-combo-box\n [attr.data-testid]=\"dataTestId\"\n [appendInline]=\"appendInline\"\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"$disabled() || loading || (vars?.items || []).length === 0\"\n [dropUp]=\"dropUp\"\n [invalid]=\"invalid\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : (vars?.items || []).length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n [warn]=\"warn\"\n [warnText]=\"warnText\"\n (clear)=\"clear()\"\n (close)=\"onDropdownClose()\"\n (selected)=\"setSelected($event)\"\n >\n <cds-dropdown-list [items]=\"vars?.items || []\"></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: [".v-select-container--margin{margin-block-end:var(--v-input-margin)}.v-select-container--small-margin{margin-block-end:var(--v-input-small-margin)}.v-select-container--not-clearable .cds--list-box.cds--combo-box .cds--list-box__field>.cds--list-box__selection{display:none!important}\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"] }]
|
|
12816
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { items: [{
|
|
12593
12817
|
type: Input
|
|
12594
12818
|
}], defaultSelection: [{
|
|
12595
12819
|
type: Input
|
|
@@ -12666,49 +12890,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12666
12890
|
* See the License for the specific language governing permissions and
|
|
12667
12891
|
* limitations under the License.
|
|
12668
12892
|
*/
|
|
12669
|
-
class
|
|
12670
|
-
|
|
12671
|
-
|
|
12672
|
-
|
|
12673
|
-
this.keyColumnFlex = 1;
|
|
12674
|
-
this.valueColumnFlex = 1;
|
|
12675
|
-
this.valueChange = new EventEmitter();
|
|
12676
|
-
this.testIds = KEY_VALUE_TEST_IDS;
|
|
12677
|
-
}
|
|
12678
|
-
onInputChange(type, inputValue) {
|
|
12679
|
-
this.valueChange.emit({ value: this.value, inputValue, type });
|
|
12680
|
-
}
|
|
12681
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12682
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KeyValueComponent, isStandalone: true, selector: "valtimo-key-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", index: "index", value: "value", fullWidth: "fullWidth", disabled: "disabled", keyColumnFlex: "keyColumnFlex", valueColumnFlex: "valueColumnFlex" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.--full-width": "this.fullWidth" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n cdsLayer\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('key', $event.target.value)\"\n [attr.data-test-id]=\"testIds.keyInput\"\n />\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n cdsLayer\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('value', $event.target.value)\"\n [attr.data-test-id]=\"testIds.valueInput\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "component", type: i2$3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }] }); }
|
|
12893
|
+
class SelectModule {
|
|
12894
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12895
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, declarations: [SelectComponent], imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule], exports: [SelectComponent] }); }
|
|
12896
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule] }); }
|
|
12683
12897
|
}
|
|
12684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12685
|
-
type:
|
|
12686
|
-
args: [{
|
|
12687
|
-
|
|
12688
|
-
|
|
12689
|
-
|
|
12690
|
-
|
|
12691
|
-
|
|
12692
|
-
type: Input
|
|
12693
|
-
}], value: [{
|
|
12694
|
-
type: Input
|
|
12695
|
-
}], fullWidth: [{
|
|
12696
|
-
type: Input
|
|
12697
|
-
}, {
|
|
12698
|
-
type: HostBinding,
|
|
12699
|
-
args: ['class.--full-width']
|
|
12700
|
-
}], disabled: [{
|
|
12701
|
-
type: Input
|
|
12702
|
-
}], keyColumnFlex: [{
|
|
12703
|
-
type: Input
|
|
12704
|
-
}], valueColumnFlex: [{
|
|
12705
|
-
type: Input
|
|
12706
|
-
}], valueChange: [{
|
|
12707
|
-
type: Output
|
|
12708
|
-
}] } });
|
|
12898
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, decorators: [{
|
|
12899
|
+
type: NgModule,
|
|
12900
|
+
args: [{
|
|
12901
|
+
declarations: [SelectComponent],
|
|
12902
|
+
imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule],
|
|
12903
|
+
exports: [SelectComponent],
|
|
12904
|
+
}]
|
|
12905
|
+
}] });
|
|
12709
12906
|
|
|
12710
12907
|
/*
|
|
12711
|
-
* Copyright 2015-
|
|
12908
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
12712
12909
|
*
|
|
12713
12910
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12714
12911
|
* you may not use this file except in compliance with the License.
|
|
@@ -12722,37 +12919,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12722
12919
|
* See the License for the specific language governing permissions and
|
|
12723
12920
|
* limitations under the License.
|
|
12724
12921
|
*/
|
|
12725
|
-
class
|
|
12726
|
-
constructor() {
|
|
12727
|
-
this.
|
|
12728
|
-
this.
|
|
12729
|
-
this.valueChange = new EventEmitter();
|
|
12730
|
-
this.testIds = SINGLE_VALUE_TEST_IDS;
|
|
12922
|
+
class ObjectManagementSelectService {
|
|
12923
|
+
constructor(_http) {
|
|
12924
|
+
this._http = _http;
|
|
12925
|
+
this._API_URL = '/api/v1/object-management/objects';
|
|
12731
12926
|
}
|
|
12732
|
-
|
|
12733
|
-
|
|
12927
|
+
getObjects(params) {
|
|
12928
|
+
let httpParams = new HttpParams()
|
|
12929
|
+
.set('page', (params.page ?? 0).toString())
|
|
12930
|
+
.set('size', (params.size ?? 20).toString());
|
|
12931
|
+
if (params.id) {
|
|
12932
|
+
httpParams = httpParams.set('id', params.id);
|
|
12933
|
+
}
|
|
12934
|
+
if (params.title) {
|
|
12935
|
+
httpParams = httpParams.set('title', params.title);
|
|
12936
|
+
}
|
|
12937
|
+
if (params.dataAttrs) {
|
|
12938
|
+
httpParams = httpParams.set('dataAttrs', params.dataAttrs);
|
|
12939
|
+
}
|
|
12940
|
+
if (params.sort) {
|
|
12941
|
+
httpParams = httpParams.set('sort', params.sort);
|
|
12942
|
+
}
|
|
12943
|
+
return this._http.get(this._API_URL, { params: httpParams });
|
|
12734
12944
|
}
|
|
12735
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12736
|
-
static { this.ɵ
|
|
12945
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectManagementSelectService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12946
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectManagementSelectService, providedIn: 'root' }); }
|
|
12737
12947
|
}
|
|
12738
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12739
|
-
type:
|
|
12740
|
-
args: [{
|
|
12741
|
-
}],
|
|
12742
|
-
type: Input
|
|
12743
|
-
}], fullWidth: [{
|
|
12744
|
-
type: Input
|
|
12745
|
-
}, {
|
|
12746
|
-
type: HostBinding,
|
|
12747
|
-
args: ['class.--full-width']
|
|
12748
|
-
}], disabled: [{
|
|
12749
|
-
type: Input
|
|
12750
|
-
}], valueChange: [{
|
|
12751
|
-
type: Output
|
|
12752
|
-
}] } });
|
|
12948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectManagementSelectService, decorators: [{
|
|
12949
|
+
type: Injectable,
|
|
12950
|
+
args: [{ providedIn: 'root' }]
|
|
12951
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }] });
|
|
12753
12952
|
|
|
12754
12953
|
/*
|
|
12755
|
-
* Copyright 2015-
|
|
12954
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
12756
12955
|
*
|
|
12757
12956
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12758
12957
|
* you may not use this file except in compliance with the License.
|
|
@@ -12766,69 +12965,1105 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12766
12965
|
* See the License for the specific language governing permissions and
|
|
12767
12966
|
* limitations under the License.
|
|
12768
12967
|
*/
|
|
12769
|
-
class
|
|
12770
|
-
constructor() {
|
|
12771
|
-
this.
|
|
12772
|
-
this.
|
|
12968
|
+
class ObjectManagementSelectComponent {
|
|
12969
|
+
constructor(_service, _iconService) {
|
|
12970
|
+
this._service = _service;
|
|
12971
|
+
this._iconService = _iconService;
|
|
12773
12972
|
this.disabled = false;
|
|
12774
|
-
this.
|
|
12775
|
-
this.
|
|
12776
|
-
this.valueColumnFlex = 1;
|
|
12973
|
+
this.label = '';
|
|
12974
|
+
this.valueFormat = 'id';
|
|
12777
12975
|
this.valueChange = new EventEmitter();
|
|
12778
|
-
this.
|
|
12976
|
+
this.tableFields = [];
|
|
12977
|
+
this.tableItems = [];
|
|
12978
|
+
this.loading = false;
|
|
12979
|
+
this.pagination = { page: 1, size: 20, collectionSize: 0 };
|
|
12980
|
+
this.currentSort = null;
|
|
12981
|
+
this.initialSortState = null;
|
|
12982
|
+
this.filterValues = {};
|
|
12983
|
+
this.filterableColumns = [];
|
|
12984
|
+
this.filtersExpanded = false;
|
|
12985
|
+
this.dropdownOptionsMap = {};
|
|
12986
|
+
this.clearInputs$ = new Subject();
|
|
12987
|
+
this.clearSelects$ = new Subject();
|
|
12988
|
+
this.accumulatedSelections = [];
|
|
12989
|
+
this.selectionTableItems = [];
|
|
12990
|
+
this.selectionSort = null;
|
|
12991
|
+
this._objectManagementId = '';
|
|
12992
|
+
this._objectManagementTitle = '';
|
|
12993
|
+
this._columns = [];
|
|
12994
|
+
this._pageSize = 20;
|
|
12995
|
+
this._initialized = false;
|
|
12996
|
+
this._hydrated = false;
|
|
12997
|
+
this._requestSequence = 0;
|
|
12998
|
+
this._idSelectionFields = [
|
|
12999
|
+
{ key: 'id', label: 'ID', viewType: ViewType.TEXT },
|
|
13000
|
+
];
|
|
13001
|
+
this._iconService.registerAll([Search16]);
|
|
12779
13002
|
}
|
|
12780
|
-
|
|
12781
|
-
|
|
13003
|
+
set objectManagementId(val) {
|
|
13004
|
+
if (val === this._objectManagementId) {
|
|
13005
|
+
return;
|
|
13006
|
+
}
|
|
13007
|
+
this._objectManagementId = val;
|
|
13008
|
+
this._resetConfigState();
|
|
13009
|
+
if (val && this._initialized) {
|
|
13010
|
+
this._loadData();
|
|
13011
|
+
}
|
|
12782
13012
|
}
|
|
12783
|
-
|
|
12784
|
-
|
|
12785
|
-
}
|
|
12786
|
-
|
|
12787
|
-
|
|
12788
|
-
|
|
12789
|
-
}
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
|
|
12798
|
-
|
|
12799
|
-
|
|
12800
|
-
|
|
12801
|
-
|
|
12802
|
-
|
|
12803
|
-
|
|
12804
|
-
|
|
12805
|
-
}
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12811
|
-
|
|
12812
|
-
|
|
12813
|
-
|
|
12814
|
-
|
|
12815
|
-
|
|
12816
|
-
|
|
12817
|
-
|
|
12818
|
-
|
|
12819
|
-
|
|
12820
|
-
|
|
12821
|
-
|
|
12822
|
-
|
|
12823
|
-
|
|
12824
|
-
|
|
12825
|
-
|
|
12826
|
-
|
|
12827
|
-
|
|
12828
|
-
|
|
12829
|
-
|
|
12830
|
-
|
|
12831
|
-
|
|
13013
|
+
get objectManagementId() {
|
|
13014
|
+
return this._objectManagementId;
|
|
13015
|
+
}
|
|
13016
|
+
set objectManagementTitle(val) {
|
|
13017
|
+
if (val === this._objectManagementTitle) {
|
|
13018
|
+
return;
|
|
13019
|
+
}
|
|
13020
|
+
this._objectManagementTitle = val;
|
|
13021
|
+
this._resetConfigState();
|
|
13022
|
+
if (val && this._initialized && !this._objectManagementId) {
|
|
13023
|
+
this._loadData();
|
|
13024
|
+
}
|
|
13025
|
+
}
|
|
13026
|
+
get objectManagementTitle() {
|
|
13027
|
+
return this._objectManagementTitle;
|
|
13028
|
+
}
|
|
13029
|
+
set columns(val) {
|
|
13030
|
+
this._columns = val || [];
|
|
13031
|
+
if (this._initialized) {
|
|
13032
|
+
this._initializeColumns();
|
|
13033
|
+
if (this._hasConfigIdentifier && this.tableItems.length === 0) {
|
|
13034
|
+
this._loadData();
|
|
13035
|
+
}
|
|
13036
|
+
}
|
|
13037
|
+
}
|
|
13038
|
+
get columns() {
|
|
13039
|
+
return this._columns;
|
|
13040
|
+
}
|
|
13041
|
+
set pageSize(val) {
|
|
13042
|
+
this._pageSize = val || 20;
|
|
13043
|
+
this.pagination.size = this._pageSize;
|
|
13044
|
+
}
|
|
13045
|
+
get pageSize() {
|
|
13046
|
+
return this._pageSize;
|
|
13047
|
+
}
|
|
13048
|
+
set value(val) {
|
|
13049
|
+
if (Array.isArray(val)) {
|
|
13050
|
+
this.accumulatedSelections = val;
|
|
13051
|
+
this._hydrated = true;
|
|
13052
|
+
if (this._initialized) {
|
|
13053
|
+
this._updateSelectionTableItems();
|
|
13054
|
+
}
|
|
13055
|
+
}
|
|
13056
|
+
}
|
|
13057
|
+
get value() {
|
|
13058
|
+
return this._hydrated ? this.accumulatedSelections : undefined;
|
|
13059
|
+
}
|
|
13060
|
+
get canAddMore() {
|
|
13061
|
+
const selectedCount = (this._carbonList?.selectedItems?.filter(i => !i.locked) || []).length;
|
|
13062
|
+
if (selectedCount === 0)
|
|
13063
|
+
return false; // Nothing to add
|
|
13064
|
+
if (this.validate?.maxLength == null)
|
|
13065
|
+
return true;
|
|
13066
|
+
const remainingSlots = this.validate.maxLength - this.accumulatedSelections.length;
|
|
13067
|
+
return selectedCount <= remainingSlots;
|
|
13068
|
+
}
|
|
13069
|
+
get showFilters() {
|
|
13070
|
+
return this._initialized && this.filterableColumns.length > 0;
|
|
13071
|
+
}
|
|
13072
|
+
get selectionFields() {
|
|
13073
|
+
return this.valueFormat === 'id' ? this._idSelectionFields : this.tableFields;
|
|
13074
|
+
}
|
|
13075
|
+
get _hasConfigIdentifier() {
|
|
13076
|
+
return !!this._objectManagementId || !!this._objectManagementTitle;
|
|
13077
|
+
}
|
|
13078
|
+
ngOnInit() {
|
|
13079
|
+
this._initialized = true;
|
|
13080
|
+
this.pagination.size = this.pageSize;
|
|
13081
|
+
this._initializeColumns();
|
|
13082
|
+
this._updateSelectionTableItems();
|
|
13083
|
+
if (this._hasConfigIdentifier) {
|
|
13084
|
+
this._loadData();
|
|
13085
|
+
}
|
|
13086
|
+
}
|
|
13087
|
+
onSort(event) {
|
|
13088
|
+
const columnKey = event?.state?.name;
|
|
13089
|
+
if (!columnKey) {
|
|
13090
|
+
this.currentSort = null;
|
|
13091
|
+
}
|
|
13092
|
+
else if (this.currentSort?.key === columnKey) {
|
|
13093
|
+
if (this.currentSort.direction === 'desc') {
|
|
13094
|
+
this.currentSort = { key: columnKey, direction: 'asc' };
|
|
13095
|
+
}
|
|
13096
|
+
else {
|
|
13097
|
+
this.currentSort = null;
|
|
13098
|
+
}
|
|
13099
|
+
}
|
|
13100
|
+
else {
|
|
13101
|
+
this.currentSort = { key: columnKey, direction: 'desc' };
|
|
13102
|
+
}
|
|
13103
|
+
this.pagination.page = 1;
|
|
13104
|
+
this._loadData();
|
|
13105
|
+
}
|
|
13106
|
+
onPageChange(page) {
|
|
13107
|
+
this.pagination.page = page;
|
|
13108
|
+
this._loadData();
|
|
13109
|
+
}
|
|
13110
|
+
onPageSizeChange(size) {
|
|
13111
|
+
this.pagination.size = size;
|
|
13112
|
+
this.pagination.page = 1;
|
|
13113
|
+
this._loadData();
|
|
13114
|
+
}
|
|
13115
|
+
onSearch() {
|
|
13116
|
+
this.pagination.page = 1;
|
|
13117
|
+
this._loadData();
|
|
13118
|
+
}
|
|
13119
|
+
onClearFilters() {
|
|
13120
|
+
this.filterValues = {};
|
|
13121
|
+
this.clearInputs$.next(null);
|
|
13122
|
+
this.clearSelects$.next();
|
|
13123
|
+
this.pagination.page = 1;
|
|
13124
|
+
this._loadData();
|
|
13125
|
+
}
|
|
13126
|
+
onAddSelection() {
|
|
13127
|
+
if (!this._carbonList)
|
|
13128
|
+
return;
|
|
13129
|
+
// Filter out locked items (already selected)
|
|
13130
|
+
const selected = (this._carbonList.selectedItems || []).filter(item => !item.locked);
|
|
13131
|
+
const added = [];
|
|
13132
|
+
for (const item of selected) {
|
|
13133
|
+
if (this.validate?.maxLength != null &&
|
|
13134
|
+
this.accumulatedSelections.length + added.length >= this.validate.maxLength) {
|
|
13135
|
+
break;
|
|
13136
|
+
}
|
|
13137
|
+
added.push(this._formatSelectionValue(item));
|
|
13138
|
+
}
|
|
13139
|
+
if (added.length > 0) {
|
|
13140
|
+
this.accumulatedSelections = [...this.accumulatedSelections, ...added];
|
|
13141
|
+
}
|
|
13142
|
+
this._carbonList.model?.selectAll(false);
|
|
13143
|
+
this._updateLockedState();
|
|
13144
|
+
this._emitValue();
|
|
13145
|
+
}
|
|
13146
|
+
onRemoveSelectedSelections() {
|
|
13147
|
+
if (!this._selectionList)
|
|
13148
|
+
return;
|
|
13149
|
+
const selected = this._selectionList.selectedItems || [];
|
|
13150
|
+
const idsToRemove = new Set(selected.map((item) => item.id));
|
|
13151
|
+
this.accumulatedSelections = this.accumulatedSelections.filter(s => !idsToRemove.has(s.id));
|
|
13152
|
+
this._selectionList.model?.selectAll(false);
|
|
13153
|
+
this._updateLockedState();
|
|
13154
|
+
this._emitValue();
|
|
13155
|
+
}
|
|
13156
|
+
onSelectionSort(event) {
|
|
13157
|
+
const columnKey = event?.state?.name;
|
|
13158
|
+
if (!columnKey) {
|
|
13159
|
+
this.selectionSort = null;
|
|
13160
|
+
}
|
|
13161
|
+
else if (this.selectionSort?.key === columnKey) {
|
|
13162
|
+
if (this.selectionSort.direction === 'desc') {
|
|
13163
|
+
this.selectionSort = { key: columnKey, direction: 'asc' };
|
|
13164
|
+
}
|
|
13165
|
+
else {
|
|
13166
|
+
this.selectionSort = null;
|
|
13167
|
+
}
|
|
13168
|
+
}
|
|
13169
|
+
else {
|
|
13170
|
+
this.selectionSort = { key: columnKey, direction: 'desc' };
|
|
13171
|
+
}
|
|
13172
|
+
this._updateSelectionTableItems();
|
|
13173
|
+
}
|
|
13174
|
+
onClearSelections() {
|
|
13175
|
+
this.accumulatedSelections = [];
|
|
13176
|
+
this._updateLockedState();
|
|
13177
|
+
this._emitValue();
|
|
13178
|
+
}
|
|
13179
|
+
loadData() {
|
|
13180
|
+
this._loadData();
|
|
13181
|
+
}
|
|
13182
|
+
_loadData() {
|
|
13183
|
+
if (!this._hasConfigIdentifier)
|
|
13184
|
+
return;
|
|
13185
|
+
this.loading = true;
|
|
13186
|
+
this._fetchObjects();
|
|
13187
|
+
}
|
|
13188
|
+
_resetConfigState() {
|
|
13189
|
+
this.tableItems = [];
|
|
13190
|
+
this.currentSort = null;
|
|
13191
|
+
this.initialSortState = null;
|
|
13192
|
+
this.pagination = { ...this.pagination, page: 1, collectionSize: 0 };
|
|
13193
|
+
}
|
|
13194
|
+
_fetchObjects() {
|
|
13195
|
+
const requestSequence = ++this._requestSequence;
|
|
13196
|
+
const dataAttrs = this._buildDataAttrsString();
|
|
13197
|
+
const sort = this._buildSortString();
|
|
13198
|
+
this._service
|
|
13199
|
+
.getObjects({
|
|
13200
|
+
id: this._objectManagementId || undefined,
|
|
13201
|
+
title: !this._objectManagementId ? this._objectManagementTitle : undefined,
|
|
13202
|
+
dataAttrs: dataAttrs || undefined,
|
|
13203
|
+
page: this.pagination.page - 1,
|
|
13204
|
+
size: this.pagination.size,
|
|
13205
|
+
sort: sort || undefined,
|
|
13206
|
+
})
|
|
13207
|
+
.subscribe({
|
|
13208
|
+
next: response => {
|
|
13209
|
+
if (requestSequence !== this._requestSequence)
|
|
13210
|
+
return;
|
|
13211
|
+
this.tableItems = response.content.map(obj => this._mapObjectToRow(obj));
|
|
13212
|
+
this.pagination = {
|
|
13213
|
+
...this.pagination,
|
|
13214
|
+
collectionSize: response.totalElements,
|
|
13215
|
+
};
|
|
13216
|
+
this.loading = false;
|
|
13217
|
+
},
|
|
13218
|
+
error: () => {
|
|
13219
|
+
if (requestSequence !== this._requestSequence)
|
|
13220
|
+
return;
|
|
13221
|
+
this.loading = false;
|
|
13222
|
+
},
|
|
13223
|
+
});
|
|
13224
|
+
}
|
|
13225
|
+
_initializeColumns() {
|
|
13226
|
+
this.tableFields = this._columns.map(col => ({
|
|
13227
|
+
key: col.path,
|
|
13228
|
+
label: col.label,
|
|
13229
|
+
sortable: (col.sortable ?? true) && this._isSortableColumn(col.path),
|
|
13230
|
+
viewType: this._mapViewType(col.viewType),
|
|
13231
|
+
}));
|
|
13232
|
+
this.filterableColumns = this._columns.filter(col => col.filterable && this._isFilterableColumn(col.path));
|
|
13233
|
+
// Apply default sort from first column with defaultSortDirection set
|
|
13234
|
+
if (!this.currentSort) {
|
|
13235
|
+
const defaultSortCol = this._columns.find(col => col.sortable && col.defaultSortDirection && col.defaultSortDirection !== 'none');
|
|
13236
|
+
if (defaultSortCol) {
|
|
13237
|
+
const direction = defaultSortCol.defaultSortDirection;
|
|
13238
|
+
this.currentSort = {
|
|
13239
|
+
key: defaultSortCol.path,
|
|
13240
|
+
direction,
|
|
13241
|
+
};
|
|
13242
|
+
this.initialSortState = {
|
|
13243
|
+
state: {
|
|
13244
|
+
name: defaultSortCol.path,
|
|
13245
|
+
direction: direction.toUpperCase(),
|
|
13246
|
+
},
|
|
13247
|
+
isSorting: true,
|
|
13248
|
+
};
|
|
13249
|
+
}
|
|
13250
|
+
}
|
|
13251
|
+
this.dropdownOptionsMap = {};
|
|
13252
|
+
for (const col of this.filterableColumns) {
|
|
13253
|
+
if (col.inputType === 'dropdown' && col.dropdownOptionsJson) {
|
|
13254
|
+
this.dropdownOptionsMap[col.path] = this._parseDropdownOptions(col.dropdownOptionsJson);
|
|
13255
|
+
}
|
|
13256
|
+
if (!(col.path in this.filterValues)) {
|
|
13257
|
+
this.filterValues[col.path] = '';
|
|
13258
|
+
}
|
|
13259
|
+
if (col.inputType === 'dateRange') {
|
|
13260
|
+
if (!(col.path + '_start' in this.filterValues)) {
|
|
13261
|
+
this.filterValues[col.path + '_start'] = '';
|
|
13262
|
+
}
|
|
13263
|
+
if (!(col.path + '_end' in this.filterValues)) {
|
|
13264
|
+
this.filterValues[col.path + '_end'] = '';
|
|
13265
|
+
}
|
|
13266
|
+
}
|
|
13267
|
+
}
|
|
13268
|
+
}
|
|
13269
|
+
_parseDropdownOptions(json) {
|
|
13270
|
+
try {
|
|
13271
|
+
const options = JSON.parse(json);
|
|
13272
|
+
return options.map(opt => ({ id: opt.value, text: opt.label }));
|
|
13273
|
+
}
|
|
13274
|
+
catch {
|
|
13275
|
+
return [];
|
|
13276
|
+
}
|
|
13277
|
+
}
|
|
13278
|
+
_mapViewType(type) {
|
|
13279
|
+
switch (type) {
|
|
13280
|
+
case 'date':
|
|
13281
|
+
return ViewType.DATE;
|
|
13282
|
+
case 'boolean':
|
|
13283
|
+
return ViewType.BOOLEAN;
|
|
13284
|
+
default:
|
|
13285
|
+
return ViewType.TEXT;
|
|
13286
|
+
}
|
|
13287
|
+
}
|
|
13288
|
+
_mapObjectToRow(obj) {
|
|
13289
|
+
const row = { _source: obj, id: obj.uuid };
|
|
13290
|
+
for (const col of this._columns) {
|
|
13291
|
+
row[col.path] = this._getNestedValue(obj, col.path);
|
|
13292
|
+
}
|
|
13293
|
+
// Mark already-selected items as locked (shows lock icon, filtered out on Add)
|
|
13294
|
+
if (this._isAlreadySelected(row)) {
|
|
13295
|
+
row.locked = true;
|
|
13296
|
+
}
|
|
13297
|
+
return row;
|
|
13298
|
+
}
|
|
13299
|
+
_getNestedValue(obj, path) {
|
|
13300
|
+
return path.split('.').reduce((current, key) => current?.[key], obj);
|
|
13301
|
+
}
|
|
13302
|
+
_isAlreadySelected(row) {
|
|
13303
|
+
return this.accumulatedSelections.some(sel => sel.id === row.id);
|
|
13304
|
+
}
|
|
13305
|
+
_updateLockedState() {
|
|
13306
|
+
this.tableItems = this.tableItems.map(row => ({
|
|
13307
|
+
...row,
|
|
13308
|
+
locked: this._isAlreadySelected(row),
|
|
13309
|
+
}));
|
|
13310
|
+
}
|
|
13311
|
+
_buildDataAttrsString() {
|
|
13312
|
+
const filters = [];
|
|
13313
|
+
for (const col of this.filterableColumns) {
|
|
13314
|
+
if (!this._isDataColumn(col.path))
|
|
13315
|
+
continue;
|
|
13316
|
+
const dataAttrPath = this._pathToDataAttr(col.path);
|
|
13317
|
+
if (col.filterType === 'range' && col.inputType === 'dateRange') {
|
|
13318
|
+
const startValue = this._sanitizeFilterValue(this.filterValues[col.path + '_start']);
|
|
13319
|
+
const endValue = this._sanitizeFilterValue(this.filterValues[col.path + '_end']);
|
|
13320
|
+
if (startValue) {
|
|
13321
|
+
filters.push(`${dataAttrPath}__gte__${startValue}`);
|
|
13322
|
+
}
|
|
13323
|
+
if (endValue) {
|
|
13324
|
+
filters.push(`${dataAttrPath}__lte__${endValue}`);
|
|
13325
|
+
}
|
|
13326
|
+
}
|
|
13327
|
+
else {
|
|
13328
|
+
const value = this.filterValues[col.path];
|
|
13329
|
+
if (value === undefined || value === null || value === '')
|
|
13330
|
+
continue;
|
|
13331
|
+
const sanitized = this._sanitizeFilterValue(value);
|
|
13332
|
+
if (!sanitized)
|
|
13333
|
+
continue;
|
|
13334
|
+
filters.push(`${dataAttrPath}__${col.filterType || 'icontains'}__${sanitized}`);
|
|
13335
|
+
}
|
|
13336
|
+
}
|
|
13337
|
+
return filters.length > 0 ? filters.join(',') : null;
|
|
13338
|
+
}
|
|
13339
|
+
_sanitizeFilterValue(value) {
|
|
13340
|
+
if (value === undefined || value === null)
|
|
13341
|
+
return '';
|
|
13342
|
+
return String(value).replace(/,/g, '').replace(/__/g, '');
|
|
13343
|
+
}
|
|
13344
|
+
_buildSortString() {
|
|
13345
|
+
if (!this.currentSort)
|
|
13346
|
+
return null;
|
|
13347
|
+
const col = this._columns.find(c => c.path === this.currentSort.key);
|
|
13348
|
+
if (!col || !this._isSortableColumn(col.path))
|
|
13349
|
+
return null;
|
|
13350
|
+
const direction = this.currentSort.direction === 'asc' ? 'ASC' : 'DESC';
|
|
13351
|
+
const orderingPath = col.path.replace(/\./g, '__');
|
|
13352
|
+
return `${orderingPath},${direction}`;
|
|
13353
|
+
}
|
|
13354
|
+
_isDataColumn(path) {
|
|
13355
|
+
return !!path && path.startsWith('record.data.');
|
|
13356
|
+
}
|
|
13357
|
+
_isFilterableColumn(path) {
|
|
13358
|
+
return this._isDataColumn(path);
|
|
13359
|
+
}
|
|
13360
|
+
_isSortableColumn(path) {
|
|
13361
|
+
return !!path && path.startsWith('record.');
|
|
13362
|
+
}
|
|
13363
|
+
_pathToDataAttr(path) {
|
|
13364
|
+
if (!path || !this._isDataColumn(path))
|
|
13365
|
+
return '';
|
|
13366
|
+
return path.replace('record.data.', '').replace(/\./g, '__');
|
|
13367
|
+
}
|
|
13368
|
+
_formatSelectionValue(item) {
|
|
13369
|
+
const source = item['_source'];
|
|
13370
|
+
switch (this.valueFormat) {
|
|
13371
|
+
case 'id':
|
|
13372
|
+
return { id: source.uuid };
|
|
13373
|
+
case 'full':
|
|
13374
|
+
return { id: source.uuid, ...source };
|
|
13375
|
+
case 'columns':
|
|
13376
|
+
default: {
|
|
13377
|
+
const mapped = { id: source.uuid };
|
|
13378
|
+
for (const col of this._columns) {
|
|
13379
|
+
this._setNestedValue(mapped, col.path, this._getNestedValue(source, col.path));
|
|
13380
|
+
}
|
|
13381
|
+
return mapped;
|
|
13382
|
+
}
|
|
13383
|
+
}
|
|
13384
|
+
}
|
|
13385
|
+
_setNestedValue(target, path, value) {
|
|
13386
|
+
const keys = path.split('.');
|
|
13387
|
+
let current = target;
|
|
13388
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
13389
|
+
const key = keys[i];
|
|
13390
|
+
if (current[key] === null || typeof current[key] !== 'object') {
|
|
13391
|
+
current[key] = {};
|
|
13392
|
+
}
|
|
13393
|
+
current = current[key];
|
|
13394
|
+
}
|
|
13395
|
+
current[keys[keys.length - 1]] = value;
|
|
13396
|
+
}
|
|
13397
|
+
_updateSelectionTableItems() {
|
|
13398
|
+
let items = this.accumulatedSelections.map(sel => {
|
|
13399
|
+
const row = { _source: sel, id: sel.id };
|
|
13400
|
+
for (const col of this._columns) {
|
|
13401
|
+
row[col.path] = this._getNestedValue(sel, col.path);
|
|
13402
|
+
}
|
|
13403
|
+
return row;
|
|
13404
|
+
});
|
|
13405
|
+
if (this.selectionSort) {
|
|
13406
|
+
const { key, direction } = this.selectionSort;
|
|
13407
|
+
items = [...items].sort((a, b) => {
|
|
13408
|
+
const valA = a[key] ?? '';
|
|
13409
|
+
const valB = b[key] ?? '';
|
|
13410
|
+
const cmp = String(valA).localeCompare(String(valB));
|
|
13411
|
+
return direction === 'asc' ? cmp : -cmp;
|
|
13412
|
+
});
|
|
13413
|
+
}
|
|
13414
|
+
this.selectionTableItems = items;
|
|
13415
|
+
}
|
|
13416
|
+
_emitValue() {
|
|
13417
|
+
this._updateSelectionTableItems();
|
|
13418
|
+
this.valueChange.emit(this.accumulatedSelections);
|
|
13419
|
+
}
|
|
13420
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectManagementSelectComponent, deps: [{ token: ObjectManagementSelectService }, { token: i2$3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13421
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ObjectManagementSelectComponent, isStandalone: true, selector: "valtimo-object-management-select", inputs: { disabled: "disabled", label: "label", validate: "validate", valueFormat: "valueFormat", objectManagementId: "objectManagementId", objectManagementTitle: "objectManagementTitle", columns: "columns", pageSize: "pageSize", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "_carbonList", first: true, predicate: ["carbonList"], descendants: true }, { propertyName: "_selectionList", first: true, predicate: ["selectionList"], descendants: true }], ngImport: i0, template: "<!--\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n -->\n\n<ng-template #textFilter let-col>\n <div class=\"search-field-container\">\n <v-input\n [name]=\"col.path\"\n [title]=\"col.label | translate\"\n [fullWidth]=\"true\"\n [smallLabel]=\"true\"\n [disabled]=\"disabled\"\n [defaultValue]=\"filterValues[col.path] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-input>\n </div>\n</ng-template>\n\n<ng-template #dropdownFilter let-col>\n <div class=\"search-field-container\">\n <v-input-label [title]=\"col.label | translate\" [small]=\"true\"></v-input-label>\n <v-select\n [items]=\"dropdownOptionsMap[col.path]\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"col.path\"\n [disabled]=\"disabled\"\n [defaultSelectionId]=\"filterValues[col.path] ?? null\"\n [clearSelectionSubject$]=\"clearSelects$\"\n (selectedChange)=\"filterValues[col.path] = $event\"\n [appendInline]=\"false\"\n ></v-select>\n </div>\n</ng-template>\n\n<ng-template #dateFilter let-col>\n <div class=\"search-field-container\">\n <v-date-picker\n [title]=\"col.label | translate\"\n [name]=\"col.path\"\n fullWidth=\"true\"\n [smallLabel]=\"true\"\n [disabled]=\"disabled\"\n [defaultDate]=\"filterValues[col.path] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-date-picker>\n </div>\n</ng-template>\n\n<ng-template #dateRangeFilter let-col>\n <div class=\"search-field-container search-field-container--full\">\n <v-input-label [title]=\"col.label | translate\" [small]=\"true\"></v-input-label>\n <div class=\"date-range-fields\">\n <v-date-picker\n [name]=\"col.path + '_start'\"\n fullWidth=\"true\"\n [disabled]=\"disabled\"\n [defaultDate]=\"filterValues[col.path + '_start'] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path + '_start'] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-date-picker>\n <span class=\"to-text\">{{ 'searchFields.to' | translate }}</span>\n <v-date-picker\n [name]=\"col.path + '_end'\"\n fullWidth=\"true\"\n [disabled]=\"disabled\"\n [defaultDate]=\"filterValues[col.path + '_end'] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path + '_end'] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-date-picker>\n </div>\n </div>\n</ng-template>\n\n<div class=\"object-management-select\" data-test-id=\"object-management-select\">\n <cds-accordion *ngIf=\"showFilters\" class=\"filter-accordion\">\n <cds-accordion-item [title]=\"'searchFields.searchButtonText' | translate\" [expanded]=\"filtersExpanded\">\n <div class=\"search-fields-container\">\n <ng-container *ngFor=\"let col of filterableColumns\">\n <ng-container *ngIf=\"col.inputType === 'text' || !col.inputType\">\n <ng-container *ngTemplateOutlet=\"textFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"col.inputType === 'dropdown'\">\n <ng-container *ngTemplateOutlet=\"dropdownFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"col.inputType === 'date'\">\n <ng-container *ngTemplateOutlet=\"dateFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"col.inputType === 'dateRange'\">\n <ng-container *ngTemplateOutlet=\"dateRangeFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <button type=\"button\" cdsButton=\"tertiary\" (click)=\"onClearFilters()\" [disabled]=\"disabled\">\n {{ 'searchFields.clearButtonText' | translate }}\n </button>\n <button type=\"button\" cdsButton=\"primary\" (click)=\"onSearch()\" [disabled]=\"disabled\">\n {{ 'searchFields.searchButtonText' | translate }}\n </button>\n </div>\n </cds-accordion-item>\n </cds-accordion>\n\n <valtimo-carbon-list\n #carbonList\n [fields]=\"tableFields\"\n [items]=\"tableItems\"\n [loading]=\"loading\"\n [skeletonRowCount]=\"2\"\n [header]=\"false\"\n [hideToolbar]=\"false\"\n [isSearchable]=\"false\"\n [showSelectionColumn]=\"true\"\n [pagination]=\"pagination\"\n [initialSortState]=\"initialSortState\"\n (sortChanged)=\"onSort($event)\"\n (paginationClicked)=\"onPageChange($event)\"\n (paginationSet)=\"onPageSizeChange($event)\"\n data-test-id=\"object-management-select-list\"\n >\n <button\n type=\"button\"\n carbonToolbarContent\n cdsButton=\"ghost\"\n [title]=\"'searchFields.searchButtonText' | translate\"\n (click)=\"loadData()\"\n [disabled]=\"loading\"\n >\n <svg cdsIcon=\"search\" size=\"16\"></svg>\n </button>\n <button\n type=\"button\"\n carbonToolbarActions\n cdsButton=\"primary\"\n (click)=\"onAddSelection()\"\n [disabled]=\"disabled || !canAddMore\"\n data-test-id=\"object-management-select-add-button\"\n >\n {{ 'interface.add' | translate }}\n </button>\n </valtimo-carbon-list>\n\n <div class=\"selections-section\" *ngIf=\"accumulatedSelections.length > 0\">\n <valtimo-carbon-list\n #selectionList\n [fields]=\"selectionFields\"\n [items]=\"selectionTableItems\"\n [header]=\"true\"\n [hideToolbar]=\"false\"\n [isSearchable]=\"false\"\n [showSelectionColumn]=\"true\"\n (sortChanged)=\"onSelectionSort($event)\"\n data-test-id=\"object-management-select-selections\"\n >\n <span header>{{ 'interface.list.multipleSelect' | translate:{count: accumulatedSelections.length} }}</span>\n <button\n type=\"button\"\n carbonToolbarContent\n cdsButton=\"ghost\"\n (click)=\"onClearSelections()\"\n [disabled]=\"disabled\"\n >\n {{ 'interface.clearAll' | translate }}\n </button>\n <button\n type=\"button\"\n carbonToolbarActions\n cdsButton=\"danger\"\n (click)=\"onRemoveSelectedSelections()\"\n [disabled]=\"disabled\"\n data-test-id=\"object-management-select-remove-button\"\n >\n {{ 'interface.delete' | translate }}\n </button>\n </valtimo-carbon-list>\n </div>\n</div>\n", styles: [".object-management-select{display:flex;flex-direction:column;gap:0}.filter-accordion ::ng-deep .cds--accordion{background-color:var(--cds-layer)}.filter-accordion ::ng-deep .cds--accordion__item{border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle);border-block-start:1px solid var(--cds-border-subtle);border-block-end:none}.filter-accordion ::ng-deep .cds--accordion__heading{height:48px}.filter-accordion ::ng-deep .cds--accordion__content{padding:0 16px}::ng-deep .cds--table-toolbar{background-color:var(--cds-layer);border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle)}.search-fields-container{padding-bottom:16px;padding-top:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}@media (max-width: 480px){.search-fields-container{grid-template-columns:1fr}}.search-field-container--full{grid-column:span 2}@media (max-width: 480px){.search-field-container--full{grid-column:span 1}}.date-range-fields{display:grid;grid-template-columns:5fr 2fr 5fr;align-items:center;gap:8px}@media (max-width: 480px){.date-range-fields{grid-template-columns:1fr}}.to-text{text-align:center}.buttons-container{width:100%;display:flex;justify-content:flex-end;gap:16px;padding-bottom:16px}.selections-section{margin-top:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i2$3.Accordion, selector: "cds-accordion, ibm-accordion", inputs: ["align", "size", "skeleton"] }, { kind: "component", type: i2$3.AccordionItem, selector: "cds-accordion-item, ibm-accordion-item", inputs: ["title", "context", "id", "skeleton", "expanded", "disabled"], outputs: ["selected"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim", "presetsTitle", "presetOptions"], outputs: ["valueChange"] }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "warn", "warnText", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: DatePickerComponent, selector: "v-date-picker", inputs: ["name", "title", "placeholder", "titleTranslationKey", "widthPx", "fullWidth", "margin", "disabled", "tooltip", "required", "defaultDate", "defaultDateIsToday", "smallLabel", "clear$", "enableTime", "carbonTheme"], outputs: ["valueChange"] }] }); }
|
|
13422
|
+
}
|
|
13423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectManagementSelectComponent, decorators: [{
|
|
13424
|
+
type: Component,
|
|
13425
|
+
args: [{ selector: 'valtimo-object-management-select', standalone: true, imports: [
|
|
13426
|
+
CommonModule,
|
|
13427
|
+
FormsModule,
|
|
13428
|
+
CarbonListModule,
|
|
13429
|
+
AccordionModule,
|
|
13430
|
+
ButtonModule,
|
|
13431
|
+
IconModule,
|
|
13432
|
+
TranslateModule,
|
|
13433
|
+
InputModule,
|
|
13434
|
+
InputLabelModule,
|
|
13435
|
+
SelectModule,
|
|
13436
|
+
DatePickerModule,
|
|
13437
|
+
], template: "<!--\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n -->\n\n<ng-template #textFilter let-col>\n <div class=\"search-field-container\">\n <v-input\n [name]=\"col.path\"\n [title]=\"col.label | translate\"\n [fullWidth]=\"true\"\n [smallLabel]=\"true\"\n [disabled]=\"disabled\"\n [defaultValue]=\"filterValues[col.path] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-input>\n </div>\n</ng-template>\n\n<ng-template #dropdownFilter let-col>\n <div class=\"search-field-container\">\n <v-input-label [title]=\"col.label | translate\" [small]=\"true\"></v-input-label>\n <v-select\n [items]=\"dropdownOptionsMap[col.path]\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"col.path\"\n [disabled]=\"disabled\"\n [defaultSelectionId]=\"filterValues[col.path] ?? null\"\n [clearSelectionSubject$]=\"clearSelects$\"\n (selectedChange)=\"filterValues[col.path] = $event\"\n [appendInline]=\"false\"\n ></v-select>\n </div>\n</ng-template>\n\n<ng-template #dateFilter let-col>\n <div class=\"search-field-container\">\n <v-date-picker\n [title]=\"col.label | translate\"\n [name]=\"col.path\"\n fullWidth=\"true\"\n [smallLabel]=\"true\"\n [disabled]=\"disabled\"\n [defaultDate]=\"filterValues[col.path] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-date-picker>\n </div>\n</ng-template>\n\n<ng-template #dateRangeFilter let-col>\n <div class=\"search-field-container search-field-container--full\">\n <v-input-label [title]=\"col.label | translate\" [small]=\"true\"></v-input-label>\n <div class=\"date-range-fields\">\n <v-date-picker\n [name]=\"col.path + '_start'\"\n fullWidth=\"true\"\n [disabled]=\"disabled\"\n [defaultDate]=\"filterValues[col.path + '_start'] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path + '_start'] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-date-picker>\n <span class=\"to-text\">{{ 'searchFields.to' | translate }}</span>\n <v-date-picker\n [name]=\"col.path + '_end'\"\n fullWidth=\"true\"\n [disabled]=\"disabled\"\n [defaultDate]=\"filterValues[col.path + '_end'] || ''\"\n [clear$]=\"clearInputs$\"\n (valueChange)=\"filterValues[col.path + '_end'] = $event\"\n (keyup.enter)=\"onSearch()\"\n ></v-date-picker>\n </div>\n </div>\n</ng-template>\n\n<div class=\"object-management-select\" data-test-id=\"object-management-select\">\n <cds-accordion *ngIf=\"showFilters\" class=\"filter-accordion\">\n <cds-accordion-item [title]=\"'searchFields.searchButtonText' | translate\" [expanded]=\"filtersExpanded\">\n <div class=\"search-fields-container\">\n <ng-container *ngFor=\"let col of filterableColumns\">\n <ng-container *ngIf=\"col.inputType === 'text' || !col.inputType\">\n <ng-container *ngTemplateOutlet=\"textFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"col.inputType === 'dropdown'\">\n <ng-container *ngTemplateOutlet=\"dropdownFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"col.inputType === 'date'\">\n <ng-container *ngTemplateOutlet=\"dateFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"col.inputType === 'dateRange'\">\n <ng-container *ngTemplateOutlet=\"dateRangeFilter; context: { $implicit: col }\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <button type=\"button\" cdsButton=\"tertiary\" (click)=\"onClearFilters()\" [disabled]=\"disabled\">\n {{ 'searchFields.clearButtonText' | translate }}\n </button>\n <button type=\"button\" cdsButton=\"primary\" (click)=\"onSearch()\" [disabled]=\"disabled\">\n {{ 'searchFields.searchButtonText' | translate }}\n </button>\n </div>\n </cds-accordion-item>\n </cds-accordion>\n\n <valtimo-carbon-list\n #carbonList\n [fields]=\"tableFields\"\n [items]=\"tableItems\"\n [loading]=\"loading\"\n [skeletonRowCount]=\"2\"\n [header]=\"false\"\n [hideToolbar]=\"false\"\n [isSearchable]=\"false\"\n [showSelectionColumn]=\"true\"\n [pagination]=\"pagination\"\n [initialSortState]=\"initialSortState\"\n (sortChanged)=\"onSort($event)\"\n (paginationClicked)=\"onPageChange($event)\"\n (paginationSet)=\"onPageSizeChange($event)\"\n data-test-id=\"object-management-select-list\"\n >\n <button\n type=\"button\"\n carbonToolbarContent\n cdsButton=\"ghost\"\n [title]=\"'searchFields.searchButtonText' | translate\"\n (click)=\"loadData()\"\n [disabled]=\"loading\"\n >\n <svg cdsIcon=\"search\" size=\"16\"></svg>\n </button>\n <button\n type=\"button\"\n carbonToolbarActions\n cdsButton=\"primary\"\n (click)=\"onAddSelection()\"\n [disabled]=\"disabled || !canAddMore\"\n data-test-id=\"object-management-select-add-button\"\n >\n {{ 'interface.add' | translate }}\n </button>\n </valtimo-carbon-list>\n\n <div class=\"selections-section\" *ngIf=\"accumulatedSelections.length > 0\">\n <valtimo-carbon-list\n #selectionList\n [fields]=\"selectionFields\"\n [items]=\"selectionTableItems\"\n [header]=\"true\"\n [hideToolbar]=\"false\"\n [isSearchable]=\"false\"\n [showSelectionColumn]=\"true\"\n (sortChanged)=\"onSelectionSort($event)\"\n data-test-id=\"object-management-select-selections\"\n >\n <span header>{{ 'interface.list.multipleSelect' | translate:{count: accumulatedSelections.length} }}</span>\n <button\n type=\"button\"\n carbonToolbarContent\n cdsButton=\"ghost\"\n (click)=\"onClearSelections()\"\n [disabled]=\"disabled\"\n >\n {{ 'interface.clearAll' | translate }}\n </button>\n <button\n type=\"button\"\n carbonToolbarActions\n cdsButton=\"danger\"\n (click)=\"onRemoveSelectedSelections()\"\n [disabled]=\"disabled\"\n data-test-id=\"object-management-select-remove-button\"\n >\n {{ 'interface.delete' | translate }}\n </button>\n </valtimo-carbon-list>\n </div>\n</div>\n", styles: [".object-management-select{display:flex;flex-direction:column;gap:0}.filter-accordion ::ng-deep .cds--accordion{background-color:var(--cds-layer)}.filter-accordion ::ng-deep .cds--accordion__item{border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle);border-block-start:1px solid var(--cds-border-subtle);border-block-end:none}.filter-accordion ::ng-deep .cds--accordion__heading{height:48px}.filter-accordion ::ng-deep .cds--accordion__content{padding:0 16px}::ng-deep .cds--table-toolbar{background-color:var(--cds-layer);border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle)}.search-fields-container{padding-bottom:16px;padding-top:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}@media (max-width: 480px){.search-fields-container{grid-template-columns:1fr}}.search-field-container--full{grid-column:span 2}@media (max-width: 480px){.search-field-container--full{grid-column:span 1}}.date-range-fields{display:grid;grid-template-columns:5fr 2fr 5fr;align-items:center;gap:8px}@media (max-width: 480px){.date-range-fields{grid-template-columns:1fr}}.to-text{text-align:center}.buttons-container{width:100%;display:flex;justify-content:flex-end;gap:16px;padding-bottom:16px}.selections-section{margin-top:1rem}\n"] }]
|
|
13438
|
+
}], ctorParameters: () => [{ type: ObjectManagementSelectService }, { type: i2$3.IconService }], propDecorators: { disabled: [{
|
|
13439
|
+
type: Input
|
|
13440
|
+
}], label: [{
|
|
13441
|
+
type: Input
|
|
13442
|
+
}], validate: [{
|
|
13443
|
+
type: Input
|
|
13444
|
+
}], valueFormat: [{
|
|
13445
|
+
type: Input
|
|
13446
|
+
}], valueChange: [{
|
|
13447
|
+
type: Output
|
|
13448
|
+
}], _carbonList: [{
|
|
13449
|
+
type: ViewChild,
|
|
13450
|
+
args: ['carbonList']
|
|
13451
|
+
}], _selectionList: [{
|
|
13452
|
+
type: ViewChild,
|
|
13453
|
+
args: ['selectionList']
|
|
13454
|
+
}], objectManagementId: [{
|
|
13455
|
+
type: Input
|
|
13456
|
+
}], objectManagementTitle: [{
|
|
13457
|
+
type: Input
|
|
13458
|
+
}], columns: [{
|
|
13459
|
+
type: Input
|
|
13460
|
+
}], pageSize: [{
|
|
13461
|
+
type: Input
|
|
13462
|
+
}], value: [{
|
|
13463
|
+
type: Input
|
|
13464
|
+
}] } });
|
|
13465
|
+
|
|
13466
|
+
/*
|
|
13467
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
13468
|
+
*
|
|
13469
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13470
|
+
* you may not use this file except in compliance with the License.
|
|
13471
|
+
* You may obtain a copy of the License at
|
|
13472
|
+
*
|
|
13473
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13474
|
+
*
|
|
13475
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13476
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13477
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13478
|
+
* See the License for the specific language governing permissions and
|
|
13479
|
+
* limitations under the License.
|
|
13480
|
+
*/
|
|
13481
|
+
const objectManagementSelectEditForm = () => ({
|
|
13482
|
+
components: [
|
|
13483
|
+
{ type: 'hidden', key: 'type' },
|
|
13484
|
+
{
|
|
13485
|
+
type: 'tabs',
|
|
13486
|
+
key: 'tabs',
|
|
13487
|
+
components: [
|
|
13488
|
+
{
|
|
13489
|
+
label: 'Display',
|
|
13490
|
+
key: 'display',
|
|
13491
|
+
weight: 0,
|
|
13492
|
+
components: [
|
|
13493
|
+
{
|
|
13494
|
+
type: 'textfield',
|
|
13495
|
+
key: 'label',
|
|
13496
|
+
label: 'Label',
|
|
13497
|
+
input: true,
|
|
13498
|
+
validate: { required: true },
|
|
13499
|
+
},
|
|
13500
|
+
{
|
|
13501
|
+
type: 'textfield',
|
|
13502
|
+
key: 'key',
|
|
13503
|
+
label: 'Property Name',
|
|
13504
|
+
input: true,
|
|
13505
|
+
validate: { required: true },
|
|
13506
|
+
},
|
|
13507
|
+
],
|
|
13508
|
+
},
|
|
13509
|
+
{
|
|
13510
|
+
label: 'Data',
|
|
13511
|
+
key: 'data',
|
|
13512
|
+
weight: 10,
|
|
13513
|
+
components: [
|
|
13514
|
+
{
|
|
13515
|
+
type: 'radio',
|
|
13516
|
+
key: 'customOptions.identifierType',
|
|
13517
|
+
label: 'Identify Configuration By',
|
|
13518
|
+
input: true,
|
|
13519
|
+
inline: true,
|
|
13520
|
+
defaultValue: 'title',
|
|
13521
|
+
values: [
|
|
13522
|
+
{ value: 'title', label: 'Title' },
|
|
13523
|
+
{ value: 'id', label: 'ID' },
|
|
13524
|
+
],
|
|
13525
|
+
},
|
|
13526
|
+
{
|
|
13527
|
+
type: 'textfield',
|
|
13528
|
+
key: 'customOptions.objectManagementId',
|
|
13529
|
+
label: 'Object Management Configuration ID',
|
|
13530
|
+
input: true,
|
|
13531
|
+
tooltip: 'UUID of the Object Management configuration.',
|
|
13532
|
+
customConditional: "show = data.customOptions?.identifierType === 'id'",
|
|
13533
|
+
},
|
|
13534
|
+
{
|
|
13535
|
+
type: 'textfield',
|
|
13536
|
+
key: 'customOptions.objectManagementTitle',
|
|
13537
|
+
label: 'Object Management Configuration Title',
|
|
13538
|
+
input: true,
|
|
13539
|
+
tooltip: 'Title of the Object Management configuration.',
|
|
13540
|
+
customConditional: "show = !data.customOptions?.identifierType || data.customOptions?.identifierType === 'title'",
|
|
13541
|
+
},
|
|
13542
|
+
{
|
|
13543
|
+
type: 'number',
|
|
13544
|
+
key: 'customOptions.pageSize',
|
|
13545
|
+
label: 'Page Size',
|
|
13546
|
+
input: true,
|
|
13547
|
+
defaultValue: 20,
|
|
13548
|
+
tooltip: 'Number of items per page',
|
|
13549
|
+
},
|
|
13550
|
+
{
|
|
13551
|
+
type: 'select',
|
|
13552
|
+
key: 'customOptions.valueFormat',
|
|
13553
|
+
label: 'Value Format',
|
|
13554
|
+
input: true,
|
|
13555
|
+
defaultValue: 'id',
|
|
13556
|
+
data: {
|
|
13557
|
+
values: [
|
|
13558
|
+
{ value: 'id', label: 'ID Only' },
|
|
13559
|
+
{ value: 'full', label: 'Full Object' },
|
|
13560
|
+
{ value: 'columns', label: 'Column Values' },
|
|
13561
|
+
],
|
|
13562
|
+
},
|
|
13563
|
+
tooltip: 'What data to store in the form value',
|
|
13564
|
+
},
|
|
13565
|
+
],
|
|
13566
|
+
},
|
|
13567
|
+
{
|
|
13568
|
+
label: 'Columns',
|
|
13569
|
+
key: 'columns',
|
|
13570
|
+
weight: 20,
|
|
13571
|
+
components: [
|
|
13572
|
+
{
|
|
13573
|
+
type: 'editgrid',
|
|
13574
|
+
key: 'customOptions.columns',
|
|
13575
|
+
label: 'Column Configuration',
|
|
13576
|
+
input: true,
|
|
13577
|
+
reorder: false,
|
|
13578
|
+
inlineEdit: false,
|
|
13579
|
+
rowDrafts: false,
|
|
13580
|
+
addAnother: 'Add Column',
|
|
13581
|
+
saveRow: 'Save',
|
|
13582
|
+
removeRow: 'Remove',
|
|
13583
|
+
templates: {
|
|
13584
|
+
header: '<div class="row"><div class="col-sm-4"><strong>Label</strong></div>' +
|
|
13585
|
+
'<div class="col-sm-4"><strong>Object Path</strong></div>' +
|
|
13586
|
+
'<div class="col-sm-2"><strong>Options</strong></div>' +
|
|
13587
|
+
'<div class="col-sm-2"></div></div>',
|
|
13588
|
+
row: '<div class="row">' +
|
|
13589
|
+
'<div class="col-sm-4">{{ row.label || "(no label)" }}</div>' +
|
|
13590
|
+
'<div class="col-sm-4"><code>{{ row.path || "—" }}</code></div>' +
|
|
13591
|
+
'<div class="col-sm-2">' +
|
|
13592
|
+
'{% if (row.filterable) { %}<span class="cds--tag cds--tag--cyan">search</span> {% } %}' +
|
|
13593
|
+
'{% if (row.sortable) { %}<span class="cds--tag cds--tag--teal">sort</span>{% } %}' +
|
|
13594
|
+
'</div>' +
|
|
13595
|
+
'<div class="col-sm-2"><div class="btn-group pull-right">' +
|
|
13596
|
+
'<button class="btn btn-sm btn-light editRow"><i class="fa fa-edit"></i></button> ' +
|
|
13597
|
+
'<button class="btn btn-sm btn-light removeRow"><i class="fa fa-times"></i></button>' +
|
|
13598
|
+
'</div></div>' +
|
|
13599
|
+
'</div>',
|
|
13600
|
+
footer: '',
|
|
13601
|
+
},
|
|
13602
|
+
components: [
|
|
13603
|
+
{
|
|
13604
|
+
type: 'textfield',
|
|
13605
|
+
key: 'path',
|
|
13606
|
+
label: 'Object Path',
|
|
13607
|
+
input: true,
|
|
13608
|
+
tooltip: 'Path to the value in the object. e.g., record.data.name, record.startAt, uuid.',
|
|
13609
|
+
validate: { required: true },
|
|
13610
|
+
},
|
|
13611
|
+
{
|
|
13612
|
+
type: 'textfield',
|
|
13613
|
+
key: 'label',
|
|
13614
|
+
label: 'Label',
|
|
13615
|
+
input: true,
|
|
13616
|
+
tooltip: 'Column header. Supports translation keys (e.g. columns.name).',
|
|
13617
|
+
},
|
|
13618
|
+
{
|
|
13619
|
+
type: 'select',
|
|
13620
|
+
key: 'viewType',
|
|
13621
|
+
label: 'Display Type',
|
|
13622
|
+
input: true,
|
|
13623
|
+
defaultValue: 'text',
|
|
13624
|
+
data: {
|
|
13625
|
+
values: [
|
|
13626
|
+
{ value: 'text', label: 'Text' },
|
|
13627
|
+
{ value: 'date', label: 'Date' },
|
|
13628
|
+
{ value: 'boolean', label: 'Boolean' },
|
|
13629
|
+
],
|
|
13630
|
+
},
|
|
13631
|
+
},
|
|
13632
|
+
{
|
|
13633
|
+
type: 'checkbox',
|
|
13634
|
+
key: 'sortable',
|
|
13635
|
+
label: 'Sortable',
|
|
13636
|
+
input: true,
|
|
13637
|
+
tooltip: 'Only supported for record.* paths.',
|
|
13638
|
+
customConditional: "show = row.path && row.path.startsWith('record.')",
|
|
13639
|
+
},
|
|
13640
|
+
{
|
|
13641
|
+
type: 'select',
|
|
13642
|
+
key: 'defaultSortDirection',
|
|
13643
|
+
label: 'Default Sort',
|
|
13644
|
+
input: true,
|
|
13645
|
+
defaultValue: 'none',
|
|
13646
|
+
tooltip: 'Initial sort direction when component loads.',
|
|
13647
|
+
customConditional: 'show = row.sortable === true',
|
|
13648
|
+
data: {
|
|
13649
|
+
values: [
|
|
13650
|
+
{ value: 'none', label: 'None' },
|
|
13651
|
+
{ value: 'desc', label: 'Descending (newest/highest first)' },
|
|
13652
|
+
{ value: 'asc', label: 'Ascending (oldest/lowest first)' },
|
|
13653
|
+
],
|
|
13654
|
+
},
|
|
13655
|
+
},
|
|
13656
|
+
{
|
|
13657
|
+
type: 'checkbox',
|
|
13658
|
+
key: 'filterable',
|
|
13659
|
+
label: 'Searchable',
|
|
13660
|
+
input: true,
|
|
13661
|
+
tooltip: 'Only supported for record.data.* paths.',
|
|
13662
|
+
customConditional: "show = row.path && row.path.startsWith('record.data.')",
|
|
13663
|
+
},
|
|
13664
|
+
{
|
|
13665
|
+
type: 'select',
|
|
13666
|
+
key: 'filterType',
|
|
13667
|
+
label: 'Search Type',
|
|
13668
|
+
input: true,
|
|
13669
|
+
defaultValue: 'icontains',
|
|
13670
|
+
customConditional: 'show = row.filterable === true',
|
|
13671
|
+
data: {
|
|
13672
|
+
custom: "values = row.inputType === 'dateRange' " +
|
|
13673
|
+
"? [{value:'range',label:'Range'},{value:'gte',label:'Start Date Only'},{value:'lte',label:'End Date Only'}] " +
|
|
13674
|
+
": [{value:'exact',label:'Exact Match'},{value:'icontains',label:'Contains (case-insensitive)'},{value:'gte',label:'Greater/Equal'},{value:'lte',label:'Less/Equal'}]",
|
|
13675
|
+
},
|
|
13676
|
+
},
|
|
13677
|
+
{
|
|
13678
|
+
type: 'select',
|
|
13679
|
+
key: 'inputType',
|
|
13680
|
+
label: 'Search Field Type',
|
|
13681
|
+
input: true,
|
|
13682
|
+
defaultValue: 'text',
|
|
13683
|
+
customConditional: 'show = row.filterable === true',
|
|
13684
|
+
data: {
|
|
13685
|
+
values: [
|
|
13686
|
+
{ value: 'text', label: 'Text Field' },
|
|
13687
|
+
{ value: 'dropdown', label: 'Dropdown' },
|
|
13688
|
+
{ value: 'date', label: 'Date Picker' },
|
|
13689
|
+
{ value: 'dateRange', label: 'Date Range' },
|
|
13690
|
+
],
|
|
13691
|
+
},
|
|
13692
|
+
},
|
|
13693
|
+
{
|
|
13694
|
+
type: 'textfield',
|
|
13695
|
+
key: 'dropdownOptionsJson',
|
|
13696
|
+
label: 'Search Dropdown Options (JSON)',
|
|
13697
|
+
input: true,
|
|
13698
|
+
placeholder: '[{"value":"URGENT","label":"Urgent"}]',
|
|
13699
|
+
tooltip: 'JSON array of options with value and label properties.',
|
|
13700
|
+
customConditional: "show = row.filterable === true && row.inputType === 'dropdown'",
|
|
13701
|
+
},
|
|
13702
|
+
],
|
|
13703
|
+
},
|
|
13704
|
+
],
|
|
13705
|
+
},
|
|
13706
|
+
{
|
|
13707
|
+
label: 'Validation',
|
|
13708
|
+
key: 'validation',
|
|
13709
|
+
weight: 30,
|
|
13710
|
+
components: [
|
|
13711
|
+
{
|
|
13712
|
+
type: 'checkbox',
|
|
13713
|
+
key: 'validate.required',
|
|
13714
|
+
label: 'Required',
|
|
13715
|
+
input: true,
|
|
13716
|
+
tooltip: 'Field must have at least 1 selection',
|
|
13717
|
+
},
|
|
13718
|
+
{
|
|
13719
|
+
type: 'number',
|
|
13720
|
+
key: 'validate.minLength',
|
|
13721
|
+
label: 'Minimum Selections',
|
|
13722
|
+
input: true,
|
|
13723
|
+
tooltip: 'Minimum required selections',
|
|
13724
|
+
},
|
|
13725
|
+
{
|
|
13726
|
+
type: 'number',
|
|
13727
|
+
key: 'validate.maxLength',
|
|
13728
|
+
label: 'Maximum Selections',
|
|
13729
|
+
input: true,
|
|
13730
|
+
tooltip: 'Maximum selections allowed. Add button disabled when reached.',
|
|
13731
|
+
},
|
|
13732
|
+
{
|
|
13733
|
+
type: 'textfield',
|
|
13734
|
+
key: 'errors.custom',
|
|
13735
|
+
label: 'Selection Error Message',
|
|
13736
|
+
input: true,
|
|
13737
|
+
placeholder: 'e.g. "Select between 2 and 5 items"',
|
|
13738
|
+
tooltip: 'Error message shown when min/max selection requirements are not met.',
|
|
13739
|
+
},
|
|
13740
|
+
],
|
|
13741
|
+
},
|
|
13742
|
+
],
|
|
13743
|
+
},
|
|
13744
|
+
],
|
|
13745
|
+
});
|
|
13746
|
+
|
|
13747
|
+
/*
|
|
13748
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
13749
|
+
*
|
|
13750
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13751
|
+
* you may not use this file except in compliance with the License.
|
|
13752
|
+
* You may obtain a copy of the License at
|
|
13753
|
+
*
|
|
13754
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13755
|
+
*
|
|
13756
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13757
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13758
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13759
|
+
* See the License for the specific language governing permissions and
|
|
13760
|
+
* limitations under the License.
|
|
13761
|
+
*/
|
|
13762
|
+
const COMPONENT_OPTIONS$2 = {
|
|
13763
|
+
type: 'object-management-select',
|
|
13764
|
+
selector: 'valtimo-object-management-select',
|
|
13765
|
+
title: 'Object Management Select',
|
|
13766
|
+
group: 'advanced',
|
|
13767
|
+
icon: 'table',
|
|
13768
|
+
fieldOptions: ['label', 'validate'],
|
|
13769
|
+
editForm: objectManagementSelectEditForm,
|
|
13770
|
+
emptyValue: [],
|
|
13771
|
+
schema: {
|
|
13772
|
+
label: 'Object Management Select',
|
|
13773
|
+
hideLabel: false,
|
|
13774
|
+
tableView: false,
|
|
13775
|
+
validate: {
|
|
13776
|
+
// Built-in minLength/maxLength only work for strings; this handles arrays.
|
|
13777
|
+
// Returns error message string directly (formio's t() doesn't resolve custom translation keys).
|
|
13778
|
+
// Uses errors.custom from form definition if set, otherwise default message.
|
|
13779
|
+
// Empty array skipped here - let required validator handle that case.
|
|
13780
|
+
custom: 'var arr = input || []; ' +
|
|
13781
|
+
'if (arr.length === 0) { valid = true; } else { ' +
|
|
13782
|
+
'var min = component.validate?.minLength; ' +
|
|
13783
|
+
'var max = component.validate?.maxLength; ' +
|
|
13784
|
+
'var isValid = (min == null || arr.length >= min) && (max == null || arr.length <= max); ' +
|
|
13785
|
+
'var msg = component.errors?.custom || (component.label + " does not meet selection requirements"); ' +
|
|
13786
|
+
'valid = isValid ? true : msg; }',
|
|
13787
|
+
},
|
|
13788
|
+
},
|
|
13789
|
+
};
|
|
13790
|
+
function registerObjectManagementSelectFormioComponent(injector) {
|
|
13791
|
+
if (!customElements.get(COMPONENT_OPTIONS$2.selector)) {
|
|
13792
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$2, ObjectManagementSelectComponent, injector);
|
|
13793
|
+
}
|
|
13794
|
+
}
|
|
13795
|
+
|
|
13796
|
+
/*
|
|
13797
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
13798
|
+
*
|
|
13799
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13800
|
+
* you may not use this file except in compliance with the License.
|
|
13801
|
+
* You may obtain a copy of the License at
|
|
13802
|
+
*
|
|
13803
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13804
|
+
*
|
|
13805
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13806
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13807
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13808
|
+
* See the License for the specific language governing permissions and
|
|
13809
|
+
* limitations under the License.
|
|
13810
|
+
*/
|
|
13811
|
+
|
|
13812
|
+
/*
|
|
13813
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13814
|
+
*
|
|
13815
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13816
|
+
* you may not use this file except in compliance with the License.
|
|
13817
|
+
* You may obtain a copy of the License at
|
|
13818
|
+
*
|
|
13819
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13820
|
+
*
|
|
13821
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13822
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13823
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13824
|
+
* See the License for the specific language governing permissions and
|
|
13825
|
+
* limitations under the License.
|
|
13826
|
+
*/
|
|
13827
|
+
class MultiselectDropdownComponent {
|
|
13828
|
+
constructor() {
|
|
13829
|
+
this.items = [];
|
|
13830
|
+
this.dropdownSettings = {
|
|
13831
|
+
singleSelection: false,
|
|
13832
|
+
selectAllText: 'Select All',
|
|
13833
|
+
unSelectAllText: 'UnSelect All',
|
|
13834
|
+
itemsShowLimit: 3,
|
|
13835
|
+
allowSearchFilter: true,
|
|
13836
|
+
};
|
|
13837
|
+
this.itemsSelected = new EventEmitter();
|
|
13838
|
+
}
|
|
13839
|
+
onItemsSelected() {
|
|
13840
|
+
this.itemsSelected.emit(this.selectedItems);
|
|
13841
|
+
}
|
|
13842
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiselectDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13843
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: MultiselectDropdownComponent, isStandalone: false, selector: "valtimo-multiselect-dropdown", inputs: { selectedItems: "selectedItems", items: "items", placeHolder: "placeHolder", dropdownSettings: "dropdownSettings" }, outputs: { itemsSelected: "itemsSelected" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-multiselect-dropdown\n [placeholder]=\"placeHolder\"\n [data]=\"items\"\n [(ngModel)]=\"selectedItems\"\n [settings]=\"dropdownSettings\"\n (onDropDownClose)=\"onItemsSelected()\"\n></ng-multiselect-dropdown>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2$5.MultiSelectComponent, selector: "ng-multiselect-dropdown", inputs: ["placeholder", "disabled", "settings", "data"], outputs: ["onFilterChange", "onDropDownClose", "onSelect", "onDeSelect", "onSelectAll", "onDeSelectAll"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
13844
|
+
}
|
|
13845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiselectDropdownComponent, decorators: [{
|
|
13846
|
+
type: Component,
|
|
13847
|
+
args: [{ selector: 'valtimo-multiselect-dropdown', standalone: false, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-multiselect-dropdown\n [placeholder]=\"placeHolder\"\n [data]=\"items\"\n [(ngModel)]=\"selectedItems\"\n [settings]=\"dropdownSettings\"\n (onDropDownClose)=\"onItemsSelected()\"\n></ng-multiselect-dropdown>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
13848
|
+
}], propDecorators: { selectedItems: [{
|
|
13849
|
+
type: Input
|
|
13850
|
+
}], items: [{
|
|
13851
|
+
type: Input
|
|
13852
|
+
}], placeHolder: [{
|
|
13853
|
+
type: Input
|
|
13854
|
+
}], dropdownSettings: [{
|
|
13855
|
+
type: Input
|
|
13856
|
+
}], itemsSelected: [{
|
|
13857
|
+
type: Output
|
|
13858
|
+
}] } });
|
|
13859
|
+
|
|
13860
|
+
/*
|
|
13861
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13862
|
+
*
|
|
13863
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13864
|
+
* you may not use this file except in compliance with the License.
|
|
13865
|
+
* You may obtain a copy of the License at
|
|
13866
|
+
*
|
|
13867
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13868
|
+
*
|
|
13869
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13870
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13871
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13872
|
+
* See the License for the specific language governing permissions and
|
|
13873
|
+
* limitations under the License.
|
|
13874
|
+
*/
|
|
13875
|
+
class MultiselectDropdownModule {
|
|
13876
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiselectDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13877
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: MultiselectDropdownModule, declarations: [MultiselectDropdownComponent], imports: [CommonModule, ReactiveFormsModule, NgMultiSelectDropDownModule, FormsModule], exports: [MultiselectDropdownComponent] }); }
|
|
13878
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiselectDropdownModule, imports: [CommonModule, ReactiveFormsModule, NgMultiSelectDropDownModule, FormsModule] }); }
|
|
13879
|
+
}
|
|
13880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiselectDropdownModule, decorators: [{
|
|
13881
|
+
type: NgModule,
|
|
13882
|
+
args: [{
|
|
13883
|
+
declarations: [MultiselectDropdownComponent],
|
|
13884
|
+
imports: [CommonModule, ReactiveFormsModule, NgMultiSelectDropDownModule, FormsModule],
|
|
13885
|
+
exports: [MultiselectDropdownComponent],
|
|
13886
|
+
}]
|
|
13887
|
+
}] });
|
|
13888
|
+
|
|
13889
|
+
/*
|
|
13890
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13891
|
+
*
|
|
13892
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13893
|
+
* you may not use this file except in compliance with the License.
|
|
13894
|
+
* You may obtain a copy of the License at
|
|
13895
|
+
*
|
|
13896
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13897
|
+
*
|
|
13898
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13899
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13900
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13901
|
+
* See the License for the specific language governing permissions and
|
|
13902
|
+
* limitations under the License.
|
|
13903
|
+
*/
|
|
13904
|
+
class KeyValueComponent {
|
|
13905
|
+
constructor() {
|
|
13906
|
+
this.fullWidth = false;
|
|
13907
|
+
this.disabled = false;
|
|
13908
|
+
this.keyColumnFlex = 1;
|
|
13909
|
+
this.valueColumnFlex = 1;
|
|
13910
|
+
this.valueChange = new EventEmitter();
|
|
13911
|
+
this.testIds = KEY_VALUE_TEST_IDS;
|
|
13912
|
+
}
|
|
13913
|
+
onInputChange(type, inputValue) {
|
|
13914
|
+
this.valueChange.emit({ value: this.value, inputValue, type });
|
|
13915
|
+
}
|
|
13916
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13917
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KeyValueComponent, isStandalone: true, selector: "valtimo-key-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", index: "index", value: "value", fullWidth: "fullWidth", disabled: "disabled", keyColumnFlex: "keyColumnFlex", valueColumnFlex: "valueColumnFlex" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.--full-width": "this.fullWidth" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n cdsLayer\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('key', $event.target.value)\"\n [attr.data-test-id]=\"testIds.keyInput\"\n />\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n cdsLayer\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('value', $event.target.value)\"\n [attr.data-test-id]=\"testIds.valueInput\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "component", type: i2$3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }] }); }
|
|
13918
|
+
}
|
|
13919
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyValueComponent, decorators: [{
|
|
13920
|
+
type: Component,
|
|
13921
|
+
args: [{ selector: 'valtimo-key-value', standalone: true, imports: [CommonModule, InputModule$1, LayerModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n cdsLayer\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('key', $event.target.value)\"\n [attr.data-test-id]=\"testIds.keyInput\"\n />\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n cdsLayer\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('value', $event.target.value)\"\n [attr.data-test-id]=\"testIds.valueInput\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\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"] }]
|
|
13922
|
+
}], propDecorators: { keyColumnTitle: [{
|
|
13923
|
+
type: Input
|
|
13924
|
+
}], valueColumnTitle: [{
|
|
13925
|
+
type: Input
|
|
13926
|
+
}], index: [{
|
|
13927
|
+
type: Input
|
|
13928
|
+
}], value: [{
|
|
13929
|
+
type: Input
|
|
13930
|
+
}], fullWidth: [{
|
|
13931
|
+
type: Input
|
|
13932
|
+
}, {
|
|
13933
|
+
type: HostBinding,
|
|
13934
|
+
args: ['class.--full-width']
|
|
13935
|
+
}], disabled: [{
|
|
13936
|
+
type: Input
|
|
13937
|
+
}], keyColumnFlex: [{
|
|
13938
|
+
type: Input
|
|
13939
|
+
}], valueColumnFlex: [{
|
|
13940
|
+
type: Input
|
|
13941
|
+
}], valueChange: [{
|
|
13942
|
+
type: Output
|
|
13943
|
+
}] } });
|
|
13944
|
+
|
|
13945
|
+
/*
|
|
13946
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13947
|
+
*
|
|
13948
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13949
|
+
* you may not use this file except in compliance with the License.
|
|
13950
|
+
* You may obtain a copy of the License at
|
|
13951
|
+
*
|
|
13952
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13953
|
+
*
|
|
13954
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13955
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
13956
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13957
|
+
* See the License for the specific language governing permissions and
|
|
13958
|
+
* limitations under the License.
|
|
13959
|
+
*/
|
|
13960
|
+
class SingleValueComponent {
|
|
13961
|
+
constructor() {
|
|
13962
|
+
this.fullWidth = false;
|
|
13963
|
+
this.disabled = false;
|
|
13964
|
+
this.valueChange = new EventEmitter();
|
|
13965
|
+
this.testIds = SINGLE_VALUE_TEST_IDS;
|
|
13966
|
+
}
|
|
13967
|
+
onInputChange(inputValue) {
|
|
13968
|
+
this.valueChange.emit({ value: this.value, inputValue });
|
|
13969
|
+
}
|
|
13970
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SingleValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13971
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: SingleValueComponent, isStandalone: true, selector: "valtimo-single-value", inputs: { value: "value", fullWidth: "fullWidth", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.--full-width": "this.fullWidth" } }, 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=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <input\n cdsText\n [defaultValue]=\"value?.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event.target.value)\"\n [attr.data-test-id]=\"testIds.input\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }] }); }
|
|
13972
|
+
}
|
|
13973
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SingleValueComponent, decorators: [{
|
|
13974
|
+
type: Component,
|
|
13975
|
+
args: [{ selector: 'valtimo-single-value', standalone: true, imports: [CommonModule, InputModule$1], 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=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <input\n cdsText\n [defaultValue]=\"value?.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange($event.target.value)\"\n [attr.data-test-id]=\"testIds.input\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\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"] }]
|
|
13976
|
+
}], propDecorators: { value: [{
|
|
13977
|
+
type: Input
|
|
13978
|
+
}], fullWidth: [{
|
|
13979
|
+
type: Input
|
|
13980
|
+
}, {
|
|
13981
|
+
type: HostBinding,
|
|
13982
|
+
args: ['class.--full-width']
|
|
13983
|
+
}], disabled: [{
|
|
13984
|
+
type: Input
|
|
13985
|
+
}], valueChange: [{
|
|
13986
|
+
type: Output
|
|
13987
|
+
}] } });
|
|
13988
|
+
|
|
13989
|
+
/*
|
|
13990
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13991
|
+
*
|
|
13992
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13993
|
+
* you may not use this file except in compliance with the License.
|
|
13994
|
+
* You may obtain a copy of the License at
|
|
13995
|
+
*
|
|
13996
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13997
|
+
*
|
|
13998
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13999
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
14000
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14001
|
+
* See the License for the specific language governing permissions and
|
|
14002
|
+
* limitations under the License.
|
|
14003
|
+
*/
|
|
14004
|
+
class KeyDropdownValueComponent {
|
|
14005
|
+
constructor() {
|
|
14006
|
+
this.dropdownWidth = 250;
|
|
14007
|
+
this.fullWidth = false;
|
|
14008
|
+
this.disabled = false;
|
|
14009
|
+
this.keyColumnFlex = 1;
|
|
14010
|
+
this.dropdownColumnFlex = 1;
|
|
14011
|
+
this.valueColumnFlex = 1;
|
|
14012
|
+
this.valueChange = new EventEmitter();
|
|
14013
|
+
this.testIds = KEY_DROPDOWN_VALUE_TEST_IDS;
|
|
14014
|
+
}
|
|
14015
|
+
onInputChange(type, inputValue) {
|
|
14016
|
+
this.valueChange.emit({ value: this.value, inputValue, type });
|
|
14017
|
+
}
|
|
14018
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyDropdownValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14019
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KeyDropdownValueComponent, isStandalone: true, selector: "valtimo-key-dropdown-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", dropdownColumnTitle: "dropdownColumnTitle", index: "index", value: "value", dropdownItems$: "dropdownItems$", dropdownWidth: "dropdownWidth", fullWidth: "fullWidth", disabled: "disabled", keyColumnFlex: "keyColumnFlex", dropdownColumnFlex: "dropdownColumnFlex", valueColumnFlex: "valueColumnFlex" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.--full-width": "this.fullWidth" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('key', $event.target.value)\"\n [attr.data-test-id]=\"testIds.keyInput\"\n />\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.minWidth.px]=\"dropdownWidth\"\n [style.flex]=\"dropdownColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && dropdownColumnTitle\">{{ dropdownColumnTitle }}</cds-label>\n\n <cds-dropdown\n [dropUp]=\"false\"\n (selected)=\"onInputChange('dropdown', $event.item.id)\"\n [appendInline]=\"true\"\n [attr.data-test-id]=\"testIds.dropdown\"\n >\n <cds-dropdown-list [items]=\"dropdownItems$ | async\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('value', $event.target.value)\"\n [attr.data-test-id]=\"testIds.valueInput\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule$1 }, { kind: "component", type: i2$3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2$3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }] }); }
|
|
14020
|
+
}
|
|
14021
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyDropdownValueComponent, decorators: [{
|
|
14022
|
+
type: Component,
|
|
14023
|
+
args: [{ selector: 'valtimo-key-dropdown-value', standalone: true, imports: [CommonModule, InputModule$1, DropdownModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('key', $event.target.value)\"\n [attr.data-test-id]=\"testIds.keyInput\"\n />\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.minWidth.px]=\"dropdownWidth\"\n [style.flex]=\"dropdownColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && dropdownColumnTitle\">{{ dropdownColumnTitle }}</cds-label>\n\n <cds-dropdown\n [dropUp]=\"false\"\n (selected)=\"onInputChange('dropdown', $event.item.id)\"\n [appendInline]=\"true\"\n [attr.data-test-id]=\"testIds.dropdown\"\n >\n <cds-dropdown-list [items]=\"dropdownItems$ | async\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n</div>\n\n<div class=\"v-multi-input__separator\"></div>\n\n<div\n class=\"v-multi-input__input\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onInputChange('value', $event.target.value)\"\n [attr.data-test-id]=\"testIds.valueInput\"\n />\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}\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"] }]
|
|
14024
|
+
}], propDecorators: { keyColumnTitle: [{
|
|
14025
|
+
type: Input
|
|
14026
|
+
}], valueColumnTitle: [{
|
|
14027
|
+
type: Input
|
|
14028
|
+
}], dropdownColumnTitle: [{
|
|
14029
|
+
type: Input
|
|
14030
|
+
}], index: [{
|
|
14031
|
+
type: Input
|
|
14032
|
+
}], value: [{
|
|
14033
|
+
type: Input
|
|
14034
|
+
}], dropdownItems$: [{
|
|
14035
|
+
type: Input
|
|
14036
|
+
}], dropdownWidth: [{
|
|
14037
|
+
type: Input
|
|
14038
|
+
}], fullWidth: [{
|
|
14039
|
+
type: Input
|
|
14040
|
+
}, {
|
|
14041
|
+
type: HostBinding,
|
|
14042
|
+
args: ['class.--full-width']
|
|
14043
|
+
}], disabled: [{
|
|
14044
|
+
type: Input
|
|
14045
|
+
}], keyColumnFlex: [{
|
|
14046
|
+
type: Input
|
|
14047
|
+
}], dropdownColumnFlex: [{
|
|
14048
|
+
type: Input
|
|
14049
|
+
}], valueColumnFlex: [{
|
|
14050
|
+
type: Input
|
|
14051
|
+
}], valueChange: [{
|
|
14052
|
+
type: Output
|
|
14053
|
+
}] } });
|
|
14054
|
+
|
|
14055
|
+
/*
|
|
14056
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14057
|
+
*
|
|
14058
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14059
|
+
* you may not use this file except in compliance with the License.
|
|
14060
|
+
* You may obtain a copy of the License at
|
|
14061
|
+
*
|
|
14062
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14063
|
+
*
|
|
14064
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14065
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
14066
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12832
14067
|
* See the License for the specific language governing permissions and
|
|
12833
14068
|
* limitations under the License.
|
|
12834
14069
|
*/
|
|
@@ -13318,292 +14553,132 @@ class CarbonMultiInputComponent {
|
|
|
13318
14553
|
this._onTouched();
|
|
13319
14554
|
}));
|
|
13320
14555
|
}
|
|
13321
|
-
getArrayOfXLength(length) {
|
|
13322
|
-
return Array(length).fill(0);
|
|
13323
|
-
}
|
|
13324
|
-
filterAndMapValues(values) {
|
|
13325
|
-
return values
|
|
13326
|
-
.map(value => this.getMappedValue(value))
|
|
13327
|
-
.filter(value => this.isValueValid(value));
|
|
13328
|
-
}
|
|
13329
|
-
isValueValid(value) {
|
|
13330
|
-
switch (this.type) {
|
|
13331
|
-
case 'value':
|
|
13332
|
-
return !!value;
|
|
13333
|
-
case 'keyValue':
|
|
13334
|
-
case 'keyValuePathSelector':
|
|
13335
|
-
case 'valuePathSelectorValue':
|
|
13336
|
-
return !!(value.value || value.key);
|
|
13337
|
-
case 'keyDropdownValue':
|
|
13338
|
-
case 'valuePathSelectorDropdownValue':
|
|
13339
|
-
return !!(value.value &&
|
|
13340
|
-
value.key &&
|
|
13341
|
-
value.dropdown);
|
|
13342
|
-
case 'arbitraryAmount':
|
|
13343
|
-
const objectValues = Object.values(value);
|
|
13344
|
-
const positiveValuesAmount = objectValues.filter(objectValue => !!objectValue);
|
|
13345
|
-
return objectValues.length === positiveValuesAmount.length;
|
|
13346
|
-
default:
|
|
13347
|
-
return false;
|
|
13348
|
-
}
|
|
13349
|
-
}
|
|
13350
|
-
openDefaultValuesSubscription() {
|
|
13351
|
-
this._subscriptions.add(this._defaultValues$.subscribe(defaultValues => {
|
|
13352
|
-
if (defaultValues.length < this.minimumAmountOfRows)
|
|
13353
|
-
return;
|
|
13354
|
-
this.values$.next(defaultValues.map(defaultValue => ({ ...defaultValue, uuid: v4() })));
|
|
13355
|
-
}));
|
|
13356
|
-
}
|
|
13357
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonMultiInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13358
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CarbonMultiInputComponent, isStandalone: false, selector: "valtimo-carbon-multi-input", inputs: { addRowText: "addRowText", addButtonType: "addButtonType", addRowTranslationKey: "addRowTranslationKey", arbitraryAmountTitles: "arbitraryAmountTitles", arbitraryValueAmount: "arbitraryValueAmount", defaultValues: "defaultValues", deleteRowText: "deleteRowText", deleteRowTranslationKey: "deleteRowTranslationKey", disabled: "disabled", dropdownColumnTitle: "dropdownColumnTitle", dropdownItems: "dropdownItems", dropdownWidth: "dropdownWidth", fullWidth: "fullWidth", hideAddButton: "hideAddButton", hideDeleteButton: "hideDeleteButton", initialAmountOfRows: "initialAmountOfRows", keyColumnTitle: "keyColumnTitle", margin: "margin", maxRows: "maxRows", minimumAmountOfRows: "minimumAmountOfRows", name: "name", required: "required", title: "title", titleTranslationKey: "titleTranslationKey", tooltip: "tooltip", type: "type", valueColumnTitle: "valueColumnTitle", valuePathSelectorCaseDefinitionKey: "valuePathSelectorCaseDefinitionKey", valuePathSelectorPrefixes: "valuePathSelectorPrefixes", valuePathSelectorShowCaseDefinitionSelector: "valuePathSelectorShowCaseDefinitionSelector", valuePathSelectorNotation: "valuePathSelectorNotation", keyColumnFlex: "keyColumnFlex", dropdownColumnFlex: "dropdownColumnFlex", valueColumnFlex: "valueColumnFlex" }, outputs: { valueChange: "valueChange", allValuesValidEvent: "allValuesValidEvent" }, providers: [
|
|
13359
|
-
{
|
|
13360
|
-
provide: NG_VALUE_ACCESSOR,
|
|
13361
|
-
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
13362
|
-
multi: true,
|
|
13363
|
-
},
|
|
13364
|
-
], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate),\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin, 'v-multi-input--no-delete-button': hideDeleteButton}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n @switch (type) {\n @case ('value') {\n <valtimo-single-value\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, 'value')\"\n ></valtimo-single-value>\n }\n @case ('keyValue') {\n <valtimo-key-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value>\n }\n @case ('keyDropdownValue') {\n <valtimo-key-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-dropdown-value>\n }\n @case ('arbitraryAmount') {\n <valtimo-arbitrary-amount-value\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [arbitraryAmountTitles]=\"arbitraryAmountTitles\"\n [amountOfArbitraryValuesArray$]=\"amountOfArbitraryValuesArray$\"\n (valueChange)=\"\n onValueChange($event.value, $event.inputValue, $event.type, $event.arbitraryIndex)\n \"\n ></valtimo-arbitrary-amount-value>\n }\n @case ('keyValuePathSelector') {\n <valtimo-key-value-path-selector\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value-path-selector>\n }\n @case ('valuePathSelectorValue') {\n <valtimo-value-path-selector-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorValue-' + i\"\n ></valtimo-value-path-selector-value>\n }\n @case ('valuePathSelectorDropdownValue') {\n <valtimo-value-path-selector-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorDropdownValue-' + i\"\n ></valtimo-value-path-selector-dropdown-value>\n }\n }\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || $disabled()\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n [attr.data-test-id]=\"'multiInputDeleteButton-' + i\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n [cdsButton]=\"addButtonType\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || $disabled()\"\n (click)=\"addRow()\"\n [attr.data-test-id]=\"'multiInputAddButton-' + i\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n", styles: [".v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{flex:1}.v-multi-input__separator{height:40px;width:12px;display:flex;justify-content:flex-start}.v-multi-input__separator:before{content:\"\";height:100%;width:1px;background-color:var(--cds-border-subtle-selected)}.v-multi-input--no-delete-button .v-multi-input__input:last-child{margin-inline-end:0}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "directive", type: i2$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: KeyValueComponent, selector: "valtimo-key-value", inputs: ["keyColumnTitle", "valueColumnTitle", "index", "value", "fullWidth", "disabled", "keyColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: SingleValueComponent, selector: "valtimo-single-value", inputs: ["value", "fullWidth", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: KeyDropdownValueComponent, selector: "valtimo-key-dropdown-value", inputs: ["keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "index", "value", "dropdownItems$", "dropdownWidth", "fullWidth", "disabled", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: ArbitraryAmountValueComponent, selector: "valtimo-arbitrary-amount-value", inputs: ["index", "value", "fullWidth", "disabled", "arbitraryAmountTitles", "amountOfArbitraryValuesArray$"], outputs: ["valueChange"] }, { kind: "component", type: KeyValuePathSelectorComponent, selector: "valtimo-key-value-path-selector", inputs: ["keyColumnTitle", "valueColumnTitle", "index", "value", "fullWidth", "disabled", "caseDefinitionKey", "prefixes", "showCaseDefinitionSelector", "notation", "keyColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: ValuePathSelectorValueComponent, selector: "valtimo-value-path-selector-value", inputs: ["keyColumnTitle", "valueColumnTitle", "index", "value", "fullWidth", "disabled", "caseDefinitionKey", "prefixes", "showCaseDefinitionSelector", "notation", "keyColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: ValuePathSelectorDropdownValueComponent, selector: "valtimo-value-path-selector-dropdown-value", inputs: ["keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "index", "value", "dropdownItems$", "caseDefinitionKey", "prefixes", "showCaseDefinitionSelector", "notation", "dropdownWidth", "fullWidth", "disabled", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
13365
|
-
}
|
|
13366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonMultiInputComponent, decorators: [{
|
|
13367
|
-
type: Component,
|
|
13368
|
-
args: [{ selector: 'valtimo-carbon-multi-input', encapsulation: ViewEncapsulation.None, standalone: false, providers: [
|
|
13369
|
-
{
|
|
13370
|
-
provide: NG_VALUE_ACCESSOR,
|
|
13371
|
-
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
13372
|
-
multi: true,
|
|
13373
|
-
},
|
|
13374
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate),\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin, 'v-multi-input--no-delete-button': hideDeleteButton}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n @switch (type) {\n @case ('value') {\n <valtimo-single-value\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, 'value')\"\n ></valtimo-single-value>\n }\n @case ('keyValue') {\n <valtimo-key-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value>\n }\n @case ('keyDropdownValue') {\n <valtimo-key-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-dropdown-value>\n }\n @case ('arbitraryAmount') {\n <valtimo-arbitrary-amount-value\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [arbitraryAmountTitles]=\"arbitraryAmountTitles\"\n [amountOfArbitraryValuesArray$]=\"amountOfArbitraryValuesArray$\"\n (valueChange)=\"\n onValueChange($event.value, $event.inputValue, $event.type, $event.arbitraryIndex)\n \"\n ></valtimo-arbitrary-amount-value>\n }\n @case ('keyValuePathSelector') {\n <valtimo-key-value-path-selector\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value-path-selector>\n }\n @case ('valuePathSelectorValue') {\n <valtimo-value-path-selector-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorValue-' + i\"\n ></valtimo-value-path-selector-value>\n }\n @case ('valuePathSelectorDropdownValue') {\n <valtimo-value-path-selector-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorDropdownValue-' + i\"\n ></valtimo-value-path-selector-dropdown-value>\n }\n }\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || $disabled()\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n [attr.data-test-id]=\"'multiInputDeleteButton-' + i\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n [cdsButton]=\"addButtonType\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || $disabled()\"\n (click)=\"addRow()\"\n [attr.data-test-id]=\"'multiInputAddButton-' + i\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n", styles: [".v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{flex:1}.v-multi-input__separator{height:40px;width:12px;display:flex;justify-content:flex-start}.v-multi-input__separator:before{content:\"\";height:100%;width:1px;background-color:var(--cds-border-subtle-selected)}.v-multi-input--no-delete-button .v-multi-input__input:last-child{margin-inline-end:0}\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"] }]
|
|
13375
|
-
}], propDecorators: { addRowText: [{
|
|
13376
|
-
type: Input
|
|
13377
|
-
}], addButtonType: [{
|
|
13378
|
-
type: Input
|
|
13379
|
-
}], addRowTranslationKey: [{
|
|
13380
|
-
type: Input
|
|
13381
|
-
}], arbitraryAmountTitles: [{
|
|
13382
|
-
type: Input
|
|
13383
|
-
}], arbitraryValueAmount: [{
|
|
13384
|
-
type: Input
|
|
13385
|
-
}], defaultValues: [{
|
|
13386
|
-
type: Input
|
|
13387
|
-
}], deleteRowText: [{
|
|
13388
|
-
type: Input
|
|
13389
|
-
}], deleteRowTranslationKey: [{
|
|
13390
|
-
type: Input
|
|
13391
|
-
}], disabled: [{
|
|
13392
|
-
type: Input
|
|
13393
|
-
}], dropdownColumnTitle: [{
|
|
13394
|
-
type: Input
|
|
13395
|
-
}], dropdownItems: [{
|
|
13396
|
-
type: Input
|
|
13397
|
-
}], dropdownWidth: [{
|
|
13398
|
-
type: Input
|
|
13399
|
-
}], fullWidth: [{
|
|
13400
|
-
type: Input
|
|
13401
|
-
}], hideAddButton: [{
|
|
13402
|
-
type: Input
|
|
13403
|
-
}], hideDeleteButton: [{
|
|
13404
|
-
type: Input
|
|
13405
|
-
}], initialAmountOfRows: [{
|
|
13406
|
-
type: Input
|
|
13407
|
-
}], keyColumnTitle: [{
|
|
13408
|
-
type: Input
|
|
13409
|
-
}], margin: [{
|
|
13410
|
-
type: Input
|
|
13411
|
-
}], maxRows: [{
|
|
13412
|
-
type: Input
|
|
13413
|
-
}], minimumAmountOfRows: [{
|
|
13414
|
-
type: Input
|
|
13415
|
-
}], name: [{
|
|
13416
|
-
type: Input
|
|
13417
|
-
}], required: [{
|
|
13418
|
-
type: Input
|
|
13419
|
-
}], title: [{
|
|
13420
|
-
type: Input
|
|
13421
|
-
}], titleTranslationKey: [{
|
|
13422
|
-
type: Input
|
|
13423
|
-
}], tooltip: [{
|
|
13424
|
-
type: Input
|
|
13425
|
-
}], type: [{
|
|
13426
|
-
type: Input
|
|
13427
|
-
}], valueColumnTitle: [{
|
|
13428
|
-
type: Input
|
|
13429
|
-
}], valuePathSelectorCaseDefinitionKey: [{
|
|
13430
|
-
type: Input
|
|
13431
|
-
}], valuePathSelectorPrefixes: [{
|
|
13432
|
-
type: Input
|
|
13433
|
-
}], valuePathSelectorShowCaseDefinitionSelector: [{
|
|
13434
|
-
type: Input
|
|
13435
|
-
}], valuePathSelectorNotation: [{
|
|
13436
|
-
type: Input
|
|
13437
|
-
}], keyColumnFlex: [{
|
|
13438
|
-
type: Input
|
|
13439
|
-
}], dropdownColumnFlex: [{
|
|
13440
|
-
type: Input
|
|
13441
|
-
}], valueColumnFlex: [{
|
|
13442
|
-
type: Input
|
|
13443
|
-
}], valueChange: [{
|
|
13444
|
-
type: Output
|
|
13445
|
-
}], allValuesValidEvent: [{
|
|
13446
|
-
type: Output
|
|
13447
|
-
}] } });
|
|
13448
|
-
|
|
13449
|
-
/*
|
|
13450
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13451
|
-
*
|
|
13452
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13453
|
-
* you may not use this file except in compliance with the License.
|
|
13454
|
-
* You may obtain a copy of the License at
|
|
13455
|
-
*
|
|
13456
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13457
|
-
*
|
|
13458
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
13459
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
13460
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13461
|
-
* See the License for the specific language governing permissions and
|
|
13462
|
-
* limitations under the License.
|
|
13463
|
-
*/
|
|
13464
|
-
/**
|
|
13465
|
-
* @deprecated Migrate old design to Carbon
|
|
13466
|
-
*/
|
|
13467
|
-
class DatePickerComponent {
|
|
13468
|
-
set fullWidth(value) {
|
|
13469
|
-
this.fullWidthClass = value;
|
|
13470
|
-
}
|
|
13471
|
-
set defaultDate(value) {
|
|
13472
|
-
this.dateValue$.next(value);
|
|
13473
|
-
}
|
|
13474
|
-
constructor(translateService) {
|
|
13475
|
-
this.translateService = translateService;
|
|
13476
|
-
this.fullWidthClass = false;
|
|
13477
|
-
this.name = '';
|
|
13478
|
-
this.title = '';
|
|
13479
|
-
this.placeholder = '';
|
|
13480
|
-
this.titleTranslationKey = '';
|
|
13481
|
-
this.margin = false;
|
|
13482
|
-
this.disabled = false;
|
|
13483
|
-
this.tooltip = '';
|
|
13484
|
-
this.required = false;
|
|
13485
|
-
this.smallLabel = false;
|
|
13486
|
-
this.enableTime = false;
|
|
13487
|
-
this.carbonTheme = 'g10';
|
|
13488
|
-
this.valueChange = new EventEmitter();
|
|
13489
|
-
this.dateValue$ = new BehaviorSubject('');
|
|
13490
|
-
this._subscriptions = new Subscription();
|
|
13491
|
-
this.onChange = (selectedDates, dateStr) => {
|
|
13492
|
-
this.dateValue$.next(dateStr);
|
|
13493
|
-
};
|
|
13494
|
-
}
|
|
13495
|
-
ngAfterViewInit() {
|
|
13496
|
-
this.openLocaleSubscription();
|
|
13497
|
-
this.openDateValueSubscription();
|
|
13498
|
-
this.openClearSubscription();
|
|
13499
|
-
}
|
|
13500
|
-
ngOnDestroy() {
|
|
13501
|
-
this._subscriptions.unsubscribe();
|
|
13502
|
-
}
|
|
13503
|
-
openLocaleSubscription() {
|
|
13504
|
-
this._subscriptions.add(this.translateService.stream('key').subscribe(() => {
|
|
13505
|
-
this.setFlatpickrInstance(this.translateService.currentLang);
|
|
13506
|
-
}));
|
|
13507
|
-
}
|
|
13508
|
-
openDateValueSubscription() {
|
|
13509
|
-
this._subscriptions.add(this.dateValue$.subscribe(dateValue => {
|
|
13510
|
-
this.valueChange.emit(dateValue);
|
|
13511
|
-
}));
|
|
13512
|
-
}
|
|
13513
|
-
setFlatpickrInstance(localeKey) {
|
|
13514
|
-
this._flatpickrInstance?.destroy();
|
|
13515
|
-
this._flatpickrInstance = flatpickr(this.datePickerElement.nativeElement, {
|
|
13516
|
-
locale: this.getLocale(localeKey),
|
|
13517
|
-
onChange: [this.onChange],
|
|
13518
|
-
defaultDate: this.getFlatpickrValue(),
|
|
13519
|
-
enableTime: this.enableTime,
|
|
13520
|
-
});
|
|
13521
|
-
this.emitDate();
|
|
13522
|
-
}
|
|
13523
|
-
emitDate() {
|
|
13524
|
-
const currentDate = this._flatpickrInstance.selectedDates[0];
|
|
13525
|
-
const formattedDate = currentDate && this._flatpickrInstance.formatDate(currentDate, 'Y-m-d');
|
|
13526
|
-
if (formattedDate) {
|
|
13527
|
-
this.dateValue$.next(formattedDate);
|
|
13528
|
-
}
|
|
13529
|
-
}
|
|
13530
|
-
getFlatpickrValue() {
|
|
13531
|
-
const savedValue = this.dateValue$.getValue();
|
|
13532
|
-
const todayDate = this.defaultDateIsToday && new Date();
|
|
13533
|
-
const defaultDate = this.defaultDate;
|
|
13534
|
-
return todayDate || defaultDate || savedValue;
|
|
13535
|
-
}
|
|
13536
|
-
getLocale(localeKey) {
|
|
13537
|
-
let locale;
|
|
13538
|
-
switch (localeKey) {
|
|
13539
|
-
case 'nl':
|
|
13540
|
-
locale = Dutch;
|
|
13541
|
-
break;
|
|
13542
|
-
case 'de':
|
|
13543
|
-
locale = German;
|
|
13544
|
-
break;
|
|
13545
|
-
case 'en':
|
|
13546
|
-
locale = english;
|
|
13547
|
-
break;
|
|
14556
|
+
getArrayOfXLength(length) {
|
|
14557
|
+
return Array(length).fill(0);
|
|
14558
|
+
}
|
|
14559
|
+
filterAndMapValues(values) {
|
|
14560
|
+
return values
|
|
14561
|
+
.map(value => this.getMappedValue(value))
|
|
14562
|
+
.filter(value => this.isValueValid(value));
|
|
14563
|
+
}
|
|
14564
|
+
isValueValid(value) {
|
|
14565
|
+
switch (this.type) {
|
|
14566
|
+
case 'value':
|
|
14567
|
+
return !!value;
|
|
14568
|
+
case 'keyValue':
|
|
14569
|
+
case 'keyValuePathSelector':
|
|
14570
|
+
case 'valuePathSelectorValue':
|
|
14571
|
+
return !!(value.value || value.key);
|
|
14572
|
+
case 'keyDropdownValue':
|
|
14573
|
+
case 'valuePathSelectorDropdownValue':
|
|
14574
|
+
return !!(value.value &&
|
|
14575
|
+
value.key &&
|
|
14576
|
+
value.dropdown);
|
|
14577
|
+
case 'arbitraryAmount':
|
|
14578
|
+
const objectValues = Object.values(value);
|
|
14579
|
+
const positiveValuesAmount = objectValues.filter(objectValue => !!objectValue);
|
|
14580
|
+
return objectValues.length === positiveValuesAmount.length;
|
|
13548
14581
|
default:
|
|
13549
|
-
|
|
13550
|
-
break;
|
|
14582
|
+
return false;
|
|
13551
14583
|
}
|
|
13552
|
-
return locale;
|
|
13553
14584
|
}
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
}));
|
|
13559
|
-
}
|
|
14585
|
+
openDefaultValuesSubscription() {
|
|
14586
|
+
this._subscriptions.add(this._defaultValues$.subscribe(defaultValues => {
|
|
14587
|
+
if (defaultValues.length < this.minimumAmountOfRows)
|
|
14588
|
+
return;
|
|
14589
|
+
this.values$.next(defaultValues.map(defaultValue => ({ ...defaultValue, uuid: v4() })));
|
|
14590
|
+
}));
|
|
13560
14591
|
}
|
|
13561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
13562
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
14592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonMultiInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14593
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CarbonMultiInputComponent, isStandalone: false, selector: "valtimo-carbon-multi-input", inputs: { addRowText: "addRowText", addButtonType: "addButtonType", addRowTranslationKey: "addRowTranslationKey", arbitraryAmountTitles: "arbitraryAmountTitles", arbitraryValueAmount: "arbitraryValueAmount", defaultValues: "defaultValues", deleteRowText: "deleteRowText", deleteRowTranslationKey: "deleteRowTranslationKey", disabled: "disabled", dropdownColumnTitle: "dropdownColumnTitle", dropdownItems: "dropdownItems", dropdownWidth: "dropdownWidth", fullWidth: "fullWidth", hideAddButton: "hideAddButton", hideDeleteButton: "hideDeleteButton", initialAmountOfRows: "initialAmountOfRows", keyColumnTitle: "keyColumnTitle", margin: "margin", maxRows: "maxRows", minimumAmountOfRows: "minimumAmountOfRows", name: "name", required: "required", title: "title", titleTranslationKey: "titleTranslationKey", tooltip: "tooltip", type: "type", valueColumnTitle: "valueColumnTitle", valuePathSelectorCaseDefinitionKey: "valuePathSelectorCaseDefinitionKey", valuePathSelectorPrefixes: "valuePathSelectorPrefixes", valuePathSelectorShowCaseDefinitionSelector: "valuePathSelectorShowCaseDefinitionSelector", valuePathSelectorNotation: "valuePathSelectorNotation", keyColumnFlex: "keyColumnFlex", dropdownColumnFlex: "dropdownColumnFlex", valueColumnFlex: "valueColumnFlex" }, outputs: { valueChange: "valueChange", allValuesValidEvent: "allValuesValidEvent" }, providers: [
|
|
14594
|
+
{
|
|
14595
|
+
provide: NG_VALUE_ACCESSOR,
|
|
14596
|
+
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
14597
|
+
multi: true,
|
|
14598
|
+
},
|
|
14599
|
+
], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate),\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin, 'v-multi-input--no-delete-button': hideDeleteButton}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n @switch (type) {\n @case ('value') {\n <valtimo-single-value\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, 'value')\"\n ></valtimo-single-value>\n }\n @case ('keyValue') {\n <valtimo-key-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value>\n }\n @case ('keyDropdownValue') {\n <valtimo-key-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-dropdown-value>\n }\n @case ('arbitraryAmount') {\n <valtimo-arbitrary-amount-value\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [arbitraryAmountTitles]=\"arbitraryAmountTitles\"\n [amountOfArbitraryValuesArray$]=\"amountOfArbitraryValuesArray$\"\n (valueChange)=\"\n onValueChange($event.value, $event.inputValue, $event.type, $event.arbitraryIndex)\n \"\n ></valtimo-arbitrary-amount-value>\n }\n @case ('keyValuePathSelector') {\n <valtimo-key-value-path-selector\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value-path-selector>\n }\n @case ('valuePathSelectorValue') {\n <valtimo-value-path-selector-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorValue-' + i\"\n ></valtimo-value-path-selector-value>\n }\n @case ('valuePathSelectorDropdownValue') {\n <valtimo-value-path-selector-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorDropdownValue-' + i\"\n ></valtimo-value-path-selector-dropdown-value>\n }\n }\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || $disabled()\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n [attr.data-test-id]=\"'multiInputDeleteButton-' + i\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n [cdsButton]=\"addButtonType\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || $disabled()\"\n (click)=\"addRow()\"\n [attr.data-test-id]=\"'multiInputAddButton-' + i\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n", styles: [".v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{flex:1}.v-multi-input__separator{height:40px;width:12px;display:flex;justify-content:flex-start}.v-multi-input__separator:before{content:\"\";height:100%;width:1px;background-color:var(--cds-border-subtle-selected)}.v-multi-input--no-delete-button .v-multi-input__input:last-child{margin-inline-end:0}\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: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "directive", type: i2$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: KeyValueComponent, selector: "valtimo-key-value", inputs: ["keyColumnTitle", "valueColumnTitle", "index", "value", "fullWidth", "disabled", "keyColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: SingleValueComponent, selector: "valtimo-single-value", inputs: ["value", "fullWidth", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: KeyDropdownValueComponent, selector: "valtimo-key-dropdown-value", inputs: ["keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "index", "value", "dropdownItems$", "dropdownWidth", "fullWidth", "disabled", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: ArbitraryAmountValueComponent, selector: "valtimo-arbitrary-amount-value", inputs: ["index", "value", "fullWidth", "disabled", "arbitraryAmountTitles", "amountOfArbitraryValuesArray$"], outputs: ["valueChange"] }, { kind: "component", type: KeyValuePathSelectorComponent, selector: "valtimo-key-value-path-selector", inputs: ["keyColumnTitle", "valueColumnTitle", "index", "value", "fullWidth", "disabled", "caseDefinitionKey", "prefixes", "showCaseDefinitionSelector", "notation", "keyColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: ValuePathSelectorValueComponent, selector: "valtimo-value-path-selector-value", inputs: ["keyColumnTitle", "valueColumnTitle", "index", "value", "fullWidth", "disabled", "caseDefinitionKey", "prefixes", "showCaseDefinitionSelector", "notation", "keyColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "component", type: ValuePathSelectorDropdownValueComponent, selector: "valtimo-value-path-selector-dropdown-value", inputs: ["keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "index", "value", "dropdownItems$", "caseDefinitionKey", "prefixes", "showCaseDefinitionSelector", "notation", "dropdownWidth", "fullWidth", "disabled", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
13563
14600
|
}
|
|
13564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
14601
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonMultiInputComponent, decorators: [{
|
|
13565
14602
|
type: Component,
|
|
13566
|
-
args: [{ selector: '
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
|
|
13570
|
-
|
|
13571
|
-
|
|
13572
|
-
|
|
13573
|
-
|
|
14603
|
+
args: [{ selector: 'valtimo-carbon-multi-input', encapsulation: ViewEncapsulation.None, standalone: false, providers: [
|
|
14604
|
+
{
|
|
14605
|
+
provide: NG_VALUE_ACCESSOR,
|
|
14606
|
+
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
14607
|
+
multi: true,
|
|
14608
|
+
},
|
|
14609
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate),\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin, 'v-multi-input--no-delete-button': hideDeleteButton}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n @switch (type) {\n @case ('value') {\n <valtimo-single-value\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, 'value')\"\n ></valtimo-single-value>\n }\n @case ('keyValue') {\n <valtimo-key-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value>\n }\n @case ('keyDropdownValue') {\n <valtimo-key-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-dropdown-value>\n }\n @case ('arbitraryAmount') {\n <valtimo-arbitrary-amount-value\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [arbitraryAmountTitles]=\"arbitraryAmountTitles\"\n [amountOfArbitraryValuesArray$]=\"amountOfArbitraryValuesArray$\"\n (valueChange)=\"\n onValueChange($event.value, $event.inputValue, $event.type, $event.arbitraryIndex)\n \"\n ></valtimo-arbitrary-amount-value>\n }\n @case ('keyValuePathSelector') {\n <valtimo-key-value-path-selector\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n ></valtimo-key-value-path-selector>\n }\n @case ('valuePathSelectorValue') {\n <valtimo-value-path-selector-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorValue-' + i\"\n ></valtimo-value-path-selector-value>\n }\n @case ('valuePathSelectorDropdownValue') {\n <valtimo-value-path-selector-dropdown-value\n [keyColumnTitle]=\"keyColumnTitle\"\n [dropdownColumnTitle]=\"dropdownColumnTitle\"\n [valueColumnTitle]=\"valueColumnTitle\"\n [index]=\"i\"\n [value]=\"value\"\n [fullWidth]=\"fullWidth\"\n [disabled]=\"$disabled()\"\n [caseDefinitionKey]=\"valuePathSelectorCaseDefinitionKey\"\n [prefixes]=\"valuePathSelectorPrefixes\"\n [dropdownItems$]=\"getDropdownItemsForRow(i)\"\n [dropdownWidth]=\"dropdownWidth\"\n [showCaseDefinitionSelector]=\"valuePathSelectorShowCaseDefinitionSelector\"\n [notation]=\"valuePathSelectorNotation\"\n [keyColumnFlex]=\"keyColumnFlex\"\n [dropdownColumnFlex]=\"dropdownColumnFlex\"\n [valueColumnFlex]=\"valueColumnFlex\"\n (valueChange)=\"onValueChange($event.value, $event.inputValue, $event.type)\"\n [attr.data-test-id]=\"'multiInputValuePathSelectorDropdownValue-' + i\"\n ></valtimo-value-path-selector-dropdown-value>\n }\n }\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || $disabled()\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n [attr.data-test-id]=\"'multiInputDeleteButton-' + i\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n [cdsButton]=\"addButtonType\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || $disabled()\"\n (click)=\"addRow()\"\n [attr.data-test-id]=\"'multiInputAddButton-' + i\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n", styles: [".v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{flex:1}.v-multi-input__separator{height:40px;width:12px;display:flex;justify-content:flex-start}.v-multi-input__separator:before{content:\"\";height:100%;width:1px;background-color:var(--cds-border-subtle-selected)}.v-multi-input--no-delete-button .v-multi-input__input:last-child{margin-inline-end:0}\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"] }]
|
|
14610
|
+
}], propDecorators: { addRowText: [{
|
|
13574
14611
|
type: Input
|
|
13575
|
-
}],
|
|
14612
|
+
}], addButtonType: [{
|
|
13576
14613
|
type: Input
|
|
13577
|
-
}],
|
|
14614
|
+
}], addRowTranslationKey: [{
|
|
13578
14615
|
type: Input
|
|
13579
|
-
}],
|
|
14616
|
+
}], arbitraryAmountTitles: [{
|
|
13580
14617
|
type: Input
|
|
13581
|
-
}],
|
|
14618
|
+
}], arbitraryValueAmount: [{
|
|
14619
|
+
type: Input
|
|
14620
|
+
}], defaultValues: [{
|
|
14621
|
+
type: Input
|
|
14622
|
+
}], deleteRowText: [{
|
|
14623
|
+
type: Input
|
|
14624
|
+
}], deleteRowTranslationKey: [{
|
|
14625
|
+
type: Input
|
|
14626
|
+
}], disabled: [{
|
|
14627
|
+
type: Input
|
|
14628
|
+
}], dropdownColumnTitle: [{
|
|
14629
|
+
type: Input
|
|
14630
|
+
}], dropdownItems: [{
|
|
14631
|
+
type: Input
|
|
14632
|
+
}], dropdownWidth: [{
|
|
13582
14633
|
type: Input
|
|
13583
14634
|
}], fullWidth: [{
|
|
13584
14635
|
type: Input
|
|
14636
|
+
}], hideAddButton: [{
|
|
14637
|
+
type: Input
|
|
14638
|
+
}], hideDeleteButton: [{
|
|
14639
|
+
type: Input
|
|
14640
|
+
}], initialAmountOfRows: [{
|
|
14641
|
+
type: Input
|
|
14642
|
+
}], keyColumnTitle: [{
|
|
14643
|
+
type: Input
|
|
13585
14644
|
}], margin: [{
|
|
13586
14645
|
type: Input
|
|
13587
|
-
}],
|
|
14646
|
+
}], maxRows: [{
|
|
13588
14647
|
type: Input
|
|
13589
|
-
}],
|
|
14648
|
+
}], minimumAmountOfRows: [{
|
|
14649
|
+
type: Input
|
|
14650
|
+
}], name: [{
|
|
13590
14651
|
type: Input
|
|
13591
14652
|
}], required: [{
|
|
13592
14653
|
type: Input
|
|
13593
|
-
}],
|
|
14654
|
+
}], title: [{
|
|
13594
14655
|
type: Input
|
|
13595
|
-
}],
|
|
14656
|
+
}], titleTranslationKey: [{
|
|
13596
14657
|
type: Input
|
|
13597
|
-
}],
|
|
14658
|
+
}], tooltip: [{
|
|
13598
14659
|
type: Input
|
|
13599
|
-
}],
|
|
14660
|
+
}], type: [{
|
|
13600
14661
|
type: Input
|
|
13601
|
-
}],
|
|
14662
|
+
}], valueColumnTitle: [{
|
|
13602
14663
|
type: Input
|
|
13603
|
-
}],
|
|
14664
|
+
}], valuePathSelectorCaseDefinitionKey: [{
|
|
14665
|
+
type: Input
|
|
14666
|
+
}], valuePathSelectorPrefixes: [{
|
|
14667
|
+
type: Input
|
|
14668
|
+
}], valuePathSelectorShowCaseDefinitionSelector: [{
|
|
14669
|
+
type: Input
|
|
14670
|
+
}], valuePathSelectorNotation: [{
|
|
14671
|
+
type: Input
|
|
14672
|
+
}], keyColumnFlex: [{
|
|
14673
|
+
type: Input
|
|
14674
|
+
}], dropdownColumnFlex: [{
|
|
14675
|
+
type: Input
|
|
14676
|
+
}], valueColumnFlex: [{
|
|
13604
14677
|
type: Input
|
|
13605
14678
|
}], valueChange: [{
|
|
13606
14679
|
type: Output
|
|
14680
|
+
}], allValuesValidEvent: [{
|
|
14681
|
+
type: Output
|
|
13607
14682
|
}] } });
|
|
13608
14683
|
|
|
13609
14684
|
/*
|
|
@@ -14321,38 +15396,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
14321
15396
|
type: Output
|
|
14322
15397
|
}] } });
|
|
14323
15398
|
|
|
14324
|
-
/*
|
|
14325
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14326
|
-
*
|
|
14327
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14328
|
-
* you may not use this file except in compliance with the License.
|
|
14329
|
-
* You may obtain a copy of the License at
|
|
14330
|
-
*
|
|
14331
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14332
|
-
*
|
|
14333
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14334
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
14335
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14336
|
-
* See the License for the specific language governing permissions and
|
|
14337
|
-
* limitations under the License.
|
|
14338
|
-
*/
|
|
14339
|
-
/**
|
|
14340
|
-
* @deprecated Migrate old design to Carbon
|
|
14341
|
-
*/
|
|
14342
|
-
class DatePickerModule {
|
|
14343
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14344
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, declarations: [DatePickerComponent], imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1], exports: [DatePickerComponent] }); }
|
|
14345
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1] }); }
|
|
14346
|
-
}
|
|
14347
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, decorators: [{
|
|
14348
|
-
type: NgModule,
|
|
14349
|
-
args: [{
|
|
14350
|
-
declarations: [DatePickerComponent],
|
|
14351
|
-
imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1],
|
|
14352
|
-
exports: [DatePickerComponent],
|
|
14353
|
-
}]
|
|
14354
|
-
}] });
|
|
14355
|
-
|
|
14356
15399
|
/*
|
|
14357
15400
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14358
15401
|
*
|
|
@@ -14382,87 +15425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
14382
15425
|
}]
|
|
14383
15426
|
}] });
|
|
14384
15427
|
|
|
14385
|
-
/*
|
|
14386
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14387
|
-
*
|
|
14388
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14389
|
-
* you may not use this file except in compliance with the License.
|
|
14390
|
-
* You may obtain a copy of the License at
|
|
14391
|
-
*
|
|
14392
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14393
|
-
*
|
|
14394
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14395
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
14396
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14397
|
-
* See the License for the specific language governing permissions and
|
|
14398
|
-
* limitations under the License.
|
|
14399
|
-
*/
|
|
14400
|
-
class InputModule {
|
|
14401
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14402
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: InputModule, declarations: [InputComponent, DigitOnlyDirective], imports: [CommonModule,
|
|
14403
|
-
TranslateModule,
|
|
14404
|
-
FormsModule,
|
|
14405
|
-
InputLabelModule,
|
|
14406
|
-
ButtonModule,
|
|
14407
|
-
CheckboxModule,
|
|
14408
|
-
InputModule$1,
|
|
14409
|
-
IconModule], exports: [InputComponent] }); }
|
|
14410
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, imports: [CommonModule,
|
|
14411
|
-
TranslateModule,
|
|
14412
|
-
FormsModule,
|
|
14413
|
-
InputLabelModule,
|
|
14414
|
-
ButtonModule,
|
|
14415
|
-
CheckboxModule,
|
|
14416
|
-
InputModule$1,
|
|
14417
|
-
IconModule] }); }
|
|
14418
|
-
}
|
|
14419
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, decorators: [{
|
|
14420
|
-
type: NgModule,
|
|
14421
|
-
args: [{
|
|
14422
|
-
declarations: [InputComponent, DigitOnlyDirective],
|
|
14423
|
-
imports: [
|
|
14424
|
-
CommonModule,
|
|
14425
|
-
TranslateModule,
|
|
14426
|
-
FormsModule,
|
|
14427
|
-
InputLabelModule,
|
|
14428
|
-
ButtonModule,
|
|
14429
|
-
CheckboxModule,
|
|
14430
|
-
InputModule$1,
|
|
14431
|
-
IconModule,
|
|
14432
|
-
],
|
|
14433
|
-
exports: [InputComponent],
|
|
14434
|
-
}]
|
|
14435
|
-
}] });
|
|
14436
|
-
|
|
14437
|
-
/*
|
|
14438
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14439
|
-
*
|
|
14440
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14441
|
-
* you may not use this file except in compliance with the License.
|
|
14442
|
-
* You may obtain a copy of the License at
|
|
14443
|
-
*
|
|
14444
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14445
|
-
*
|
|
14446
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14447
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
14448
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14449
|
-
* See the License for the specific language governing permissions and
|
|
14450
|
-
* limitations under the License.
|
|
14451
|
-
*/
|
|
14452
|
-
class SelectModule {
|
|
14453
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14454
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, declarations: [SelectComponent], imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule], exports: [SelectComponent] }); }
|
|
14455
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule] }); }
|
|
14456
|
-
}
|
|
14457
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, decorators: [{
|
|
14458
|
-
type: NgModule,
|
|
14459
|
-
args: [{
|
|
14460
|
-
declarations: [SelectComponent],
|
|
14461
|
-
imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule],
|
|
14462
|
-
exports: [SelectComponent],
|
|
14463
|
-
}]
|
|
14464
|
-
}] });
|
|
14465
|
-
|
|
14466
15428
|
/*
|
|
14467
15429
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14468
15430
|
*
|
|
@@ -19274,5 +20236,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
19274
20236
|
* Generated bundle index. Do not edit.
|
|
19275
20237
|
*/
|
|
19276
20238
|
|
|
19277
|
-
export { ARBITRARY_AMOUNT_VALUE_TEST_IDS, AUTO_KEY_INPUT_TEST_IDS, AdminSettingsService, Alert, AlertComponent, AlertModule, AlertService, AlertType, AlertsOptionsImpl, AssignmentComponent, AutoKeyInputComponent, BOOLEAN_CONVERTER_VALUES, BpmnJsDiagramComponent, BpmnJsDiagramModule, BreadcrumbNavigationComponent, BreadcrumbNavigationModule, BreadcrumbService, CARBON_CONSTANTS, CARBON_THEME, CASES_WITHOUT_STATUS_KEY, COLOR_PICKER_TEST_IDS, CONFIRMATION_MODAL_TEST_IDS, CamundaFormComponent, CamundaFormModule, CarbonListComponent, CarbonListFilterPipe, CarbonListModule, CarbonMultiInputComponent, CarbonMultiInputModule, CarbonNoResultsComponent, CaseCountPipe, CaseTagsSelectorComponent, CdsThemeService, ChoiceFieldService, ColorPickerComponent, ComponentsPipesModule, ConfirmationModalComponent, ConfirmationModalModule, ContextMenuDirective, CtrlClickDirective, CurrentCarbonTheme, DEFAULT_LIST_TRANSLATIONS, DEFAULT_PAGINATION, DEFAULT_PAGINATOR_CONFIG, DataListComponent, DataListModule, DatePickerComponent, DatePickerModule, DateTimePickerComponent, DigitOnlyDirective, DropzoneComponent, DropzoneModule, EditorComponent, EditorModule, EllipsisPipe, ExpansionPanelComponent, ExpansionPanelModule, FieldAutoFocusDirective, FieldAutoFocusModule, FileSizeModule, FileSizePipe, FilterSidebarComponent, FilterSidebarModule, FitPageDirective, FormComponent, FormIoCurrencyComponent, FormIoCurrentUserComponent, FormIoDomService, FormIoIbanComponent, FormIoModule, FormIoStateService, FormIoTagsService, FormIoUploaderComponent, FormModule, FormioBuilderComponent, FormioComponent, FormioDummyComponent, FormioOptionsImpl, FormioValueResolverSelectorComponent, InputComponent, InputLabelComponent, InputLabelModule, InputModule, IsArrayPipe, JSON_EDITOR_TEST_IDS, JsonEditorComponent, KEY_DROPDOWN_VALUE_TEST_IDS, KEY_VALUE_PATH_SELECTOR_TEST_IDS, KEY_VALUE_TEST_IDS, KeyGeneratorService, LeftSidebarComponent, LeftSidebarModule, ListColumnViewComponent, MdiIconSelectorComponent, MdiIconViewerComponent, MenuItemTextComponent, MenuItemTranslationPipe, MenuModule, MenuRoutingModule, MenuService, ModalComponent, ModalModule, ModalService, MonacoTheme, MoveRowDirection, MultiInputFormComponent, MultiInputFormModule, MultiselectDropdownComponent, MultiselectDropdownModule, MuuriDirective, MuuriDirectiveModule, MuuriItemComponent, ObserveSizeDirective, OverflowMenuComponent, OverflowMenuModule, OverflowMenuOptionComponent, OverflowMenuTriggerComponent, POPULAR_MDI_ICONS, PageHeaderComponent, PageHeaderModule, PageHeaderService, PageSubtitleService, PageTitleComponent, PageTitleModule, PageTitleService, ParagraphComponent, ParagraphModule, PendingChangesComponent, PendingChangesService, ProgressBarComponent, ProgressBarModule, PromptComponent, PromptModule, PromptService, QUICK_SEARCH_SERVICE, QuickSearchComponent, QuickSearchStateService, RIGHT_SIDEBAR_TEST_IDS, RadioComponent, RadioModule, ReadOnlyDirective, RemoveClassnamesDirective, RenderInBodyComponent, RenderInPageHeaderDirective, RenderPageHeaderDirective, RightSidebarComponent, RightSidebarModule, SINGLE_VALUE_TEST_IDS, STEPPER_FOOTER_STEP_TEST_IDS, SchemaEditorComponent, SearchFieldsComponent, SearchFieldsModule, SelectComponent, SelectModule, SelectableCarbonTheme, ShellService, SpinnerComponent, SpinnerModule, StatusSelectorComponent, StepperContainerComponent, StepperContentComponent, StepperFooterComponent, StepperFooterStepComponent, StepperHeaderComponent, StepperModule, StepperService, StepperStepComponent, TAG_ELLIPSIS_LIMIT, TableComponent, TableModule, TimelineComponent, TimelineItemImpl, TimelineModule, TooltipComponent, TooltipDirective, TooltipIconComponent, TooltipIconModule, TooltipModule, TopbarComponent, TopbarModule, UploaderComponent, UploaderDragDropDirective, UploaderModule, UserInterfaceService, VALUE_PATH_SELECTOR_DROPDOWN_VALUE_TEST_IDS, VALUE_PATH_SELECTOR_TEST_IDS, VALUE_PATH_SELECTOR_VALUE_TEST_IDS, VModalComponent, VModalModule, ValtimoCdsModalDirective, ValtimoModalService, ValuePathSelectorComponent, ValuePathSelectorInputMode, ValuePathSelectorPrefix, ValuePathSelectorService, ValuePathType, ViewContentService, ViewType, WIDGET_LAYOUT_TRANSLATION_KEYS, WIDGET_LAYOUT_VALUES, WIDGET_ROW_HEIGHT_DEFAULT, WIDGET_ROW_HEIGHT_GAP_FREE, WebcamComponent, WebcamModule, WidgetComponent, WidgetLayout, WidgetLayoutInfoComponent, WidgetModule, applyDataGridPatch, collectObjectLevels, createCustomFormioComponent, customUploaderType, enableCustomFormioComponents, menuInitializer, muuriGapFreeLayout, pendingChangesGuard, registerCustomFormioComponent, registerCustomTag, registerFormioCurrencyComponent, registerFormioCurrentUserComponent, registerFormioFileSelectorComponent, registerFormioIbanComponent, registerFormioUploadComponent, registerFormioValueResolverSelectorComponent, resolveWidgetLayout, runAfterCarbonModalClosed, setRequiredOnSchema };
|
|
20239
|
+
export { ARBITRARY_AMOUNT_VALUE_TEST_IDS, AUTO_KEY_INPUT_TEST_IDS, AdminSettingsService, Alert, AlertComponent, AlertModule, AlertService, AlertType, AlertsOptionsImpl, AssignmentComponent, AutoKeyInputComponent, BOOLEAN_CONVERTER_VALUES, BpmnJsDiagramComponent, BpmnJsDiagramModule, BreadcrumbNavigationComponent, BreadcrumbNavigationModule, BreadcrumbService, CARBON_CONSTANTS, CARBON_THEME, CASES_WITHOUT_STATUS_KEY, COLOR_PICKER_TEST_IDS, CONFIRMATION_MODAL_TEST_IDS, CamundaFormComponent, CamundaFormModule, CarbonListComponent, CarbonListFilterPipe, CarbonListModule, CarbonMultiInputComponent, CarbonMultiInputModule, CarbonNoResultsComponent, CaseCountPipe, CaseTagsSelectorComponent, CdsThemeService, ChoiceFieldService, ColorPickerComponent, ComponentsPipesModule, ConfirmationModalComponent, ConfirmationModalModule, ContextMenuDirective, CtrlClickDirective, CurrentCarbonTheme, DEFAULT_LIST_TRANSLATIONS, DEFAULT_PAGINATION, DEFAULT_PAGINATOR_CONFIG, DataListComponent, DataListModule, DatePickerComponent, DatePickerModule, DateTimePickerComponent, DigitOnlyDirective, DropzoneComponent, DropzoneModule, EditorComponent, EditorModule, EllipsisPipe, ExpansionPanelComponent, ExpansionPanelModule, FieldAutoFocusDirective, FieldAutoFocusModule, FileSizeModule, FileSizePipe, FilterSidebarComponent, FilterSidebarModule, FitPageDirective, FormComponent, FormIoCurrencyComponent, FormIoCurrentUserComponent, FormIoDomService, FormIoIbanComponent, FormIoModule, FormIoStateService, FormIoTagsService, FormIoUploaderComponent, FormModule, FormioBuilderComponent, FormioComponent, FormioDummyComponent, FormioOptionsImpl, FormioValueResolverSelectorComponent, InputComponent, InputLabelComponent, InputLabelModule, InputModule, IsArrayPipe, JSON_EDITOR_TEST_IDS, JsonEditorComponent, KEY_DROPDOWN_VALUE_TEST_IDS, KEY_VALUE_PATH_SELECTOR_TEST_IDS, KEY_VALUE_TEST_IDS, KeyGeneratorService, LeftSidebarComponent, LeftSidebarModule, ListColumnViewComponent, MdiIconSelectorComponent, MdiIconViewerComponent, MenuItemTextComponent, MenuItemTranslationPipe, MenuModule, MenuRoutingModule, MenuService, ModalComponent, ModalModule, ModalService, MonacoTheme, MoveRowDirection, MultiInputFormComponent, MultiInputFormModule, MultiselectDropdownComponent, MultiselectDropdownModule, MuuriDirective, MuuriDirectiveModule, MuuriItemComponent, ObjectManagementSelectComponent, ObjectManagementSelectService, ObserveSizeDirective, OverflowMenuComponent, OverflowMenuModule, OverflowMenuOptionComponent, OverflowMenuTriggerComponent, POPULAR_MDI_ICONS, PageHeaderComponent, PageHeaderModule, PageHeaderService, PageSubtitleService, PageTitleComponent, PageTitleModule, PageTitleService, ParagraphComponent, ParagraphModule, PendingChangesComponent, PendingChangesService, ProgressBarComponent, ProgressBarModule, PromptComponent, PromptModule, PromptService, QUICK_SEARCH_SERVICE, QuickSearchComponent, QuickSearchStateService, RIGHT_SIDEBAR_TEST_IDS, RadioComponent, RadioModule, ReadOnlyDirective, RemoveClassnamesDirective, RenderInBodyComponent, RenderInPageHeaderDirective, RenderPageHeaderDirective, RightSidebarComponent, RightSidebarModule, SINGLE_VALUE_TEST_IDS, STEPPER_FOOTER_STEP_TEST_IDS, SchemaEditorComponent, SearchFieldsComponent, SearchFieldsModule, SelectComponent, SelectModule, SelectableCarbonTheme, ShellService, SpinnerComponent, SpinnerModule, StatusSelectorComponent, StepperContainerComponent, StepperContentComponent, StepperFooterComponent, StepperFooterStepComponent, StepperHeaderComponent, StepperModule, StepperService, StepperStepComponent, TAG_ELLIPSIS_LIMIT, TableComponent, TableModule, TimelineComponent, TimelineItemImpl, TimelineModule, TooltipComponent, TooltipDirective, TooltipIconComponent, TooltipIconModule, TooltipModule, TopbarComponent, TopbarModule, UploaderComponent, UploaderDragDropDirective, UploaderModule, UserInterfaceService, VALUE_PATH_SELECTOR_DROPDOWN_VALUE_TEST_IDS, VALUE_PATH_SELECTOR_TEST_IDS, VALUE_PATH_SELECTOR_VALUE_TEST_IDS, VModalComponent, VModalModule, ValtimoCdsModalDirective, ValtimoModalService, ValuePathSelectorComponent, ValuePathSelectorInputMode, ValuePathSelectorPrefix, ValuePathSelectorService, ValuePathType, ViewContentService, ViewType, WIDGET_LAYOUT_TRANSLATION_KEYS, WIDGET_LAYOUT_VALUES, WIDGET_ROW_HEIGHT_DEFAULT, WIDGET_ROW_HEIGHT_GAP_FREE, WebcamComponent, WebcamModule, WidgetComponent, WidgetLayout, WidgetLayoutInfoComponent, WidgetModule, applyDataGridPatch, collectObjectLevels, createCustomFormioComponent, customUploaderType, enableCustomFormioComponents, menuInitializer, muuriGapFreeLayout, pendingChangesGuard, registerCustomFormioComponent, registerCustomTag, registerFormioCurrencyComponent, registerFormioCurrentUserComponent, registerFormioFileSelectorComponent, registerFormioIbanComponent, registerFormioUploadComponent, registerFormioValueResolverSelectorComponent, registerObjectManagementSelectFormioComponent, resolveWidgetLayout, runAfterCarbonModalClosed, setRequiredOnSchema };
|
|
19278
20240
|
//# sourceMappingURL=valtimo-components.mjs.map
|