@valtimo/components 13.34.0 → 13.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/carbon.scss +28 -2
- package/fesm2022/valtimo-components.mjs +1708 -600
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +3 -0
- package/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.d.ts.map +1 -1
- package/lib/components/carbon-list/carbon-list.component.d.ts.map +1 -1
- package/lib/components/editor/editor.component.d.ts +1 -2
- package/lib/components/editor/editor.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/json-editor/json-editor.component.d.ts +1 -2
- package/lib/components/json-editor/json-editor.component.d.ts.map +1 -1
- package/lib/components/left-sidebar/left-sidebar.component.d.ts +3 -0
- package/lib/components/left-sidebar/left-sidebar.component.d.ts.map +1 -1
- package/lib/components/menu/services/menu.service.d.ts.map +1 -1
- package/lib/components/page-header/page-header.component.d.ts +1 -0
- package/lib/components/page-header/page-header.component.d.ts.map +1 -1
- package/lib/components/page-title/page-title.component.d.ts +2 -0
- package/lib/components/page-title/page-title.component.d.ts.map +1 -1
- package/lib/components/right-sidebar/right-sidebar.component.d.ts +1 -0
- package/lib/components/right-sidebar/right-sidebar.component.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/lib/components/value-path-selector/value-path-selector.component.d.ts +3 -1
- package/lib/components/value-path-selector/value-path-selector.component.d.ts.map +1 -1
- package/lib/directives/fit-page/fit-page.directive.d.ts +29 -3
- package/lib/directives/fit-page/fit-page.directive.d.ts.map +1 -1
- package/lib/models/value-path-selector.model.d.ts +1 -0
- package/lib/models/value-path-selector.model.d.ts.map +1 -1
- package/lib/services/page-header.service.d.ts +11 -0
- package/lib/services/page-header.service.d.ts.map +1 -1
- package/lib/services/page-title.service.d.ts +4 -0
- package/lib/services/page-title.service.d.ts.map +1 -1
- package/lib/services/value-path-selector.service.d.ts +1 -1
- package/lib/services/value-path-selector.service.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';
|
|
@@ -653,6 +654,7 @@ var ValuePathSelectorPrefix;
|
|
|
653
654
|
(function (ValuePathSelectorPrefix) {
|
|
654
655
|
ValuePathSelectorPrefix["DOC"] = "doc";
|
|
655
656
|
ValuePathSelectorPrefix["CASE"] = "case";
|
|
657
|
+
ValuePathSelectorPrefix["TASK"] = "task";
|
|
656
658
|
ValuePathSelectorPrefix["ZAAKOBJECT"] = "zaakobject";
|
|
657
659
|
ValuePathSelectorPrefix["ZAAKRESULTAAT"] = "zaakresultaat";
|
|
658
660
|
ValuePathSelectorPrefix["ZAAKSTATUS"] = "zaakstatus";
|
|
@@ -1769,6 +1771,9 @@ class PageHeaderService {
|
|
|
1769
1771
|
get smallTitle$() {
|
|
1770
1772
|
return this._smallTitle$.asObservable();
|
|
1771
1773
|
}
|
|
1774
|
+
get titleAsBreadcrumb$() {
|
|
1775
|
+
return this._titleAsBreadcrumb$.asObservable();
|
|
1776
|
+
}
|
|
1772
1777
|
get showUserNameInTopBar$() {
|
|
1773
1778
|
return this._showUserNameInTopBar$.asObservable();
|
|
1774
1779
|
}
|
|
@@ -1787,6 +1792,7 @@ class PageHeaderService {
|
|
|
1787
1792
|
this._pageActionsHasContent$ = new BehaviorSubject(false);
|
|
1788
1793
|
this._pageHeadHeight$ = new BehaviorSubject(null);
|
|
1789
1794
|
this._smallTitle$ = new BehaviorSubject(false);
|
|
1795
|
+
this._titleAsBreadcrumb$ = new BehaviorSubject(false);
|
|
1790
1796
|
this._featureToggleSub = this.configService.featureToggles$.subscribe(toggles => {
|
|
1791
1797
|
if (toggles?.hasOwnProperty('compactModeOnByDefault')) {
|
|
1792
1798
|
this._compactMode$.next(!!toggles.compactModeOnByDefault);
|
|
@@ -1823,6 +1829,19 @@ class PageHeaderService {
|
|
|
1823
1829
|
disableSmallTitle() {
|
|
1824
1830
|
this._smallTitle$.next(false);
|
|
1825
1831
|
}
|
|
1832
|
+
/**
|
|
1833
|
+
* Renders the current page title inline as the final (non-link) breadcrumb item instead of
|
|
1834
|
+
* as a large heading below the breadcrumb trail, freeing up the page header row for actions.
|
|
1835
|
+
* Unlike compact mode, the breadcrumb stays in the page header area (not the top bar).
|
|
1836
|
+
*
|
|
1837
|
+
* Enable from a component's `ngAfterViewInit`/`ngOnInit` and disable in `ngOnDestroy`.
|
|
1838
|
+
*/
|
|
1839
|
+
enableTitleAsBreadcrumb() {
|
|
1840
|
+
this._titleAsBreadcrumb$.next(true);
|
|
1841
|
+
}
|
|
1842
|
+
disableTitleAsBreadcrumb() {
|
|
1843
|
+
this._titleAsBreadcrumb$.next(false);
|
|
1844
|
+
}
|
|
1826
1845
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageHeaderService, deps: [{ token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1827
1846
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageHeaderService, providedIn: 'root' }); }
|
|
1828
1847
|
}
|
|
@@ -1915,6 +1934,10 @@ class PageTitleService {
|
|
|
1915
1934
|
get pageTitleHidden$() {
|
|
1916
1935
|
return this._pageTitleHidden$.asObservable();
|
|
1917
1936
|
}
|
|
1937
|
+
/** The currently displayed page title (custom title when set, otherwise the route title). */
|
|
1938
|
+
get currentTitle$() {
|
|
1939
|
+
return this._currentTitle$.asObservable();
|
|
1940
|
+
}
|
|
1918
1941
|
constructor(router) {
|
|
1919
1942
|
this.router = router;
|
|
1920
1943
|
this._customPageTitle$ = new BehaviorSubject('');
|
|
@@ -1925,6 +1948,7 @@ class PageTitleService {
|
|
|
1925
1948
|
this._pageActionsFullWidth$ = new BehaviorSubject(false);
|
|
1926
1949
|
this._pageActionsViewContainerRef$ = new BehaviorSubject(null);
|
|
1927
1950
|
this._pageTitleHidden$ = new BehaviorSubject(false);
|
|
1951
|
+
this._currentTitle$ = new BehaviorSubject('');
|
|
1928
1952
|
this._preventReset$ = new BehaviorSubject(false);
|
|
1929
1953
|
this.openRouteSubscription();
|
|
1930
1954
|
}
|
|
@@ -1963,6 +1987,9 @@ class PageTitleService {
|
|
|
1963
1987
|
setPageTitleHidden(hidden) {
|
|
1964
1988
|
this._pageTitleHidden$.next(hidden);
|
|
1965
1989
|
}
|
|
1990
|
+
setCurrentTitle(title) {
|
|
1991
|
+
this._currentTitle$.next(title);
|
|
1992
|
+
}
|
|
1966
1993
|
clearPageActionsViewContainerRef() {
|
|
1967
1994
|
this._pageActionsViewContainerRef$.getValue()?.clear();
|
|
1968
1995
|
}
|
|
@@ -2620,7 +2647,7 @@ class ValuePathSelectorService extends BaseApiService {
|
|
|
2620
2647
|
/**
|
|
2621
2648
|
* Get resolvable keys for a given blueprint context (case definition or building block).
|
|
2622
2649
|
*/
|
|
2623
|
-
getResolvableKeysForContext(prefixes, context, type = ValuePathType.FIELD) {
|
|
2650
|
+
getResolvableKeysForContext(prefixes, excludePrefixes = [], context, type = ValuePathType.FIELD) {
|
|
2624
2651
|
this._prefixes = prefixes;
|
|
2625
2652
|
this._currentCacheKey = this.buildCacheKey(context);
|
|
2626
2653
|
const url = this.buildUrl(context);
|
|
@@ -2628,6 +2655,7 @@ class ValuePathSelectorService extends BaseApiService {
|
|
|
2628
2655
|
return (prefixesWithoutCache.length > 0 || this._prefixes.length === 0
|
|
2629
2656
|
? this.httpClient.post(this.getApiUrl(url), {
|
|
2630
2657
|
prefixes: prefixesWithoutCache,
|
|
2658
|
+
excludePrefixes,
|
|
2631
2659
|
type,
|
|
2632
2660
|
})
|
|
2633
2661
|
: of([])).pipe(tap((results) => {
|
|
@@ -4191,11 +4219,17 @@ class MenuService {
|
|
|
4191
4219
|
this.menuConfig.menuItems.forEach(menuItem => {
|
|
4192
4220
|
if (menuItem.includeFunction !== undefined) {
|
|
4193
4221
|
this.includeFunctionObservables[menuItem.title] =
|
|
4194
|
-
this.menuIncludeService.
|
|
4222
|
+
this.menuIncludeService.getIncludeFunctionObservable(menuItem.includeFunction);
|
|
4195
4223
|
}
|
|
4196
4224
|
menuItem.show = true;
|
|
4197
4225
|
if (!menuItem.roles || menuItem.roles.some(role => userRoles.includes(role))) {
|
|
4198
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
|
+
});
|
|
4199
4233
|
menuItems.push({ ...menuItem, ...(filteredChildren && { children: filteredChildren }) });
|
|
4200
4234
|
}
|
|
4201
4235
|
});
|
|
@@ -4920,13 +4954,24 @@ class RightSidebarComponent {
|
|
|
4920
4954
|
this.userSettingsService.getUserSettings().subscribe(settings => {
|
|
4921
4955
|
this.updatingUserSettings$.next(false);
|
|
4922
4956
|
if (!settings?.languageCode) {
|
|
4923
|
-
this.
|
|
4957
|
+
this.initializeDefaultUserSettings();
|
|
4924
4958
|
}
|
|
4925
4959
|
else {
|
|
4926
4960
|
this.setUserSettings(settings);
|
|
4927
4961
|
}
|
|
4928
4962
|
});
|
|
4929
4963
|
}
|
|
4964
|
+
initializeDefaultUserSettings() {
|
|
4965
|
+
this.configService
|
|
4966
|
+
.getFeatureToggleObservable('menuCollapsedByDefault')
|
|
4967
|
+
.pipe(take$1(1))
|
|
4968
|
+
.subscribe(menuCollapsedByDefault => {
|
|
4969
|
+
if (menuCollapsedByDefault) {
|
|
4970
|
+
this.setCollapsibleWidescreenMenu(true, false);
|
|
4971
|
+
}
|
|
4972
|
+
this.saveUserSettings();
|
|
4973
|
+
});
|
|
4974
|
+
}
|
|
4930
4975
|
saveUserSettings() {
|
|
4931
4976
|
this.updatingUserSettings$.next(true);
|
|
4932
4977
|
combineLatest([
|
|
@@ -4953,7 +4998,13 @@ class RightSidebarComponent {
|
|
|
4953
4998
|
setUserSettings(settings) {
|
|
4954
4999
|
this._selectedLanguage$.next(settings.languageCode);
|
|
4955
5000
|
this.updateUserLanguage(settings.languageCode, false);
|
|
4956
|
-
this.
|
|
5001
|
+
this.configService
|
|
5002
|
+
.getFeatureToggleObservable('menuCollapsedByDefault')
|
|
5003
|
+
.pipe(take$1(1))
|
|
5004
|
+
.subscribe(menuCollapsedByDefault => {
|
|
5005
|
+
const collapsible = settings.collapsibleWidescreenMenu ?? menuCollapsedByDefault;
|
|
5006
|
+
this.setCollapsibleWidescreenMenu(collapsible, false);
|
|
5007
|
+
});
|
|
4957
5008
|
combineLatest([
|
|
4958
5009
|
this.enableCompactModeToggle$,
|
|
4959
5010
|
this.enableShowUserNameToggle$,
|
|
@@ -5153,15 +5204,18 @@ class LeftSidebarComponent {
|
|
|
5153
5204
|
this.closestSequence$ = this.menuService.closestSequence$;
|
|
5154
5205
|
this.overflowMenuSequence$ = new BehaviorSubject('');
|
|
5155
5206
|
this._breakpointsInitialized = false;
|
|
5207
|
+
this._menuCollapsedByDefaultInitialized = false;
|
|
5156
5208
|
this.includeFunctionObservables = this.menuService.includeFunctionObservables;
|
|
5157
5209
|
this.disableCaseCount$ = this.configService.getFeatureToggleObservable('disableCaseCount');
|
|
5158
5210
|
}
|
|
5159
5211
|
ngAfterViewInit() {
|
|
5160
5212
|
this.openBreakpointSubscription();
|
|
5213
|
+
this.openMenuCollapsedByDefaultSubscription();
|
|
5161
5214
|
this.shellService.setSidenavElement(this.elementRef.nativeElement.querySelector('.cds--side-nav'));
|
|
5162
5215
|
}
|
|
5163
5216
|
ngOnDestroy() {
|
|
5164
5217
|
this._breakpointSubscription?.unsubscribe();
|
|
5218
|
+
this._menuCollapsedByDefaultSubscription?.unsubscribe();
|
|
5165
5219
|
}
|
|
5166
5220
|
navigateToRoute(route, event) {
|
|
5167
5221
|
event.preventDefault();
|
|
@@ -5197,7 +5251,7 @@ class LeftSidebarComponent {
|
|
|
5197
5251
|
window.open(url, '_blank');
|
|
5198
5252
|
}
|
|
5199
5253
|
openBreakpointSubscription() {
|
|
5200
|
-
this.breakpointObserver
|
|
5254
|
+
this._breakpointSubscription = this.breakpointObserver
|
|
5201
5255
|
.observe(['(max-width: 1055px)', '(min-width: 1056px)'])
|
|
5202
5256
|
.subscribe(state => {
|
|
5203
5257
|
combineLatest([
|
|
@@ -5228,6 +5282,16 @@ class LeftSidebarComponent {
|
|
|
5228
5282
|
});
|
|
5229
5283
|
});
|
|
5230
5284
|
}
|
|
5285
|
+
openMenuCollapsedByDefaultSubscription() {
|
|
5286
|
+
this._menuCollapsedByDefaultSubscription = this.configService
|
|
5287
|
+
.getFeatureToggleObservable('menuCollapsedByDefault')
|
|
5288
|
+
.subscribe(menuCollapsedByDefault => {
|
|
5289
|
+
if (!this._menuCollapsedByDefaultInitialized && menuCollapsedByDefault) {
|
|
5290
|
+
this.shellService.collapseSideBar();
|
|
5291
|
+
this._menuCollapsedByDefaultInitialized = true;
|
|
5292
|
+
}
|
|
5293
|
+
});
|
|
5294
|
+
}
|
|
5231
5295
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LeftSidebarComponent, deps: [{ token: i0.ElementRef }, { token: MenuService }, { token: ShellService }, { token: i3.BreakpointObserver }, { token: i1$3.Router }, { token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5232
5296
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: LeftSidebarComponent, isStandalone: false, selector: "valtimo-left-sidebar", host: { listeners: { "document:click": "onPageClick($event.target)" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleButton"], 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<cds-sidenav\n *ngIf=\"{\n closestSequence: closestSequence$ | async,\n overflowMenuSequence: overflowMenuSequence$ | async,\n sideBarExpanded: sideBarExpanded$ | async,\n menuItemsLoaded: menuItemsLoaded$ | async,\n menuItems: menuItems$ | async,\n } as obs\"\n [allowExpansion]=\"false\"\n [expanded]=\"obs.sideBarExpanded\"\n>\n <ng-container *ngIf=\"obs.menuItemsLoaded; else loadingTemplate\">\n <ng-container *ngFor=\"let menuItem of obs.menuItems\">\n <ng-container *ngIf=\"!menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n menuItem: menuItem,\n closestSequence: obs.closestSequence,\n overflowMenuSequence: obs.overflowMenuSequence,\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n closestSequence: obs.closestSequence,\n menuItem: menuItem,\n overflowMenuSequence: obs.overflowMenuSequence,\n }\n \"\n ></ng-container>\n\n <div [ngClass]=\"{\n 'menu-item--hidden': menuItem.includeFunction !== undefined,\n 'menu-item--visible':\n menuItem.includeFunction !== undefined &&\n (includeFunctionObservables[menuItem.title] | async),\n }\">\n <ng-container *ngTemplateOutlet=\"subMenuIcon; context: {menuItem: menuItem}\"></ng-container>\n\n <cds-sidenav-menu\n [title]=\"menuItem | menuItemTranslate | async\"\n [attr.data-testid]=\"'sidenav-item-' + menuItem.title\"\n >\n <ng-container *ngFor=\"let childMenuItem of menuItem.children\">\n <ng-container\n *ngIf=\"{\n disableCaseCount: disableCaseCount$ | async,\n count: childMenuItem?.count$ && (childMenuItem?.count$ | async),\n sequence: '' + menuItem.sequence + '.' + childMenuItem.sequence,\n } as vars\"\n >\n <cds-sidenav-item\n [attr.data-testid]=\"'sidenav-item-' + childMenuItem?.title\"\n [title]=\"\n menuItem.title === 'Cases' || menuItem.title === 'Dossiers'\n ? (childMenuItem | menuItemTranslate | async)\n : null\n \"\n [ngClass]=\"{\n 'cds--side-nav__item--empty': !childMenuItem.link,\n 'menu-item--hidden': childMenuItem.includeFunction !== undefined,\n 'menu-item--visible':\n childMenuItem.includeFunction !== undefined &&\n (includeFunctionObservables[childMenuItem.title] | async),\n }\"\n [active]=\"vars.sequence === obs.closestSequence\"\n [href]=\"vars?.count ? 'javascript:return false;' : 'javascript:void(0);'\"\n (click)=\"navigateToRoute(childMenuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(childMenuItem.link)\"\n >\n <valtimo-menu-item-text\n [accent]=\"!childMenuItem.link\"\n [menuItem]=\"childMenuItem\"\n [showOverFlowMenu]=\"obs.overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(childMenuItem.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text>\n\n <ng-container\n *ngTemplateOutlet=\"countTemplate; context: {count: vars.count, disableCaseCount: vars.disableCaseCount}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n</cds-sidenav>\n\n<ng-template #subMenuIcon let-menuItem=\"menuItem\">\n <div class=\"menu-item-icon-container\"><i class=\"{{ menuItem.iconClass }}\"></i></div>\n</ng-template>\n\n<ng-template\n #topMenuItem\n let-closestSequence=\"closestSequence\"\n let-menuItem=\"menuItem\"\n let-overflowMenuSequence=\"overflowMenuSequence\"\n>\n <ng-container *ngIf=\"{sequence: '' + menuItem.sequence} as vars\"\n ><cds-sidenav-item\n *ngIf=\"!menuItem.children\"\n [attr.data-testid]=\"'sidenav-item-' + menuItem.title\"\n [ngClass]=\"{\n 'menu-item--hidden': menuItem.includeFunction !== undefined,\n 'menu-item--visible':\n menuItem.includeFunction !== undefined &&\n (includeFunctionObservables[menuItem.title] | async),\n }\"\n [active]=\"vars.sequence === closestSequence\"\n (click)=\"navigateToRoute(menuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(menuItem.link.link)\"\n href=\"javascript:void(0)\"\n >\n <valtimo-menu-item-text\n [menuItem]=\"menuItem\"\n [showOverFlowMenu]=\"overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(menuItem.link.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text>\n </cds-sidenav-item>\n </ng-container>\n</ng-template>\n\n<ng-template #countTemplate let-count=\"count\" let-disableCaseCount=\"disableCaseCount\">\n <ng-container *ngIf=\"count && !disableCaseCount\">\n <span class=\"case-count\">\n {{ count | caseCount }}\n </span>\n </ng-container>\n</ng-template>\n\n<ng-template #loadingTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["@media screen and (max-width: 767px){.be-left-sidebar{width:100%!important}}.be-left-sidebar .left-sidebar-toggle{padding:20px}.be-left-sidebar .left-sidebar-toggle:before{font-size:1.615rem}.be-left-sidebar .sidebar-elements>li>a.be-toggle-left-sidebar{height:32px;display:flex;align-items:center}.be-left-sidebar .left-sidebar-content{padding-top:20px}.be-toggle-left-sidebar svg{margin-right:7px;min-width:21px;height:auto;overflow:visible}.be-toggle-left-sidebar svg path{transition:.27s ease;fill:#696969}::ng-deep .resize-border{position:absolute;width:3px;height:100%;top:0;right:0;cursor:col-resize;background-color:var(--cds-border-strong);opacity:0;transition:opacity .11s cubic-bezier(.2,0,1,.9)}::ng-deep .resize-hover{opacity:1}::ng-deep .resize-border--invisible{display:none}.no-transition{transition:none}.d-1{d:path(\"M3 18v-2h13v2z\")}.d-1-flipped{d:path(\"M3 18v-2h11v2z\")}.d-2{d:path(\"M3 13v-2h10v2H3\")}.d-2-flipped{d:path(\"M3 13v-2h12v2H3\")}.d-3{d:path(\"M3 6h13v2H3V6\")}.d-3-flipped{d:path(\"M3 6h11v2H3V6\")}.d-4{d:path(\"M21 15.61L19.59 17l-5.01-5 5.01-5L21 8.39 17.44 12 21 15.61\")}.d-4-flipped{d:path(\"M15.58 15.61L16.99 17 22 12l-5.01-5-1.41 1.39L19.14 12l-3.56 3.61\")}::ng-deep .cds--side-nav__menu{padding-left:0}::ng-deep .cds--side-nav__navigation{border-right:1px solid #e0e0e0;height:100%}::ng-deep .cds--side-nav--ux{width:0}::ng-deep .cds--side-nav--expanded{width:16rem}::ng-deep .cds--side-nav__header-divider{display:none!important}.menu-item-icon-container{position:relative;top:8px;left:13px;height:0}.menu-item-icon-container i{width:0px;height:16px}.menu-item--hidden{display:none}.menu-item--visible{display:block}::ng-deep .cds--side-nav__item--empty{pointer-events:none}::ng-deep .cds--side-nav__item--empty .menu-item-icon-container{display:none}::ng-deep .cds--side-nav__link[href*=\"javascript:return false;\"]{padding-right:3rem!important}.case-count{position:absolute;right:0;padding-right:1rem;height:100%;top:0;display:flex;align-items:center;justify-content:center;font-size:.875rem;letter-spacing:.1px;line-height:1.25rem;font-weight:500!important}::ng-deep .cds--side-nav__icon{margin-left:-16px}::ng-deep .cds--side-nav__item.cds--side-nav__item--icon a.cds--side-nav__link{padding-left:3.5rem}::ng-deep .cds--side-nav__submenu-title{padding-right:1.5rem}::ng-deep .cds--side-nav__items{display:flex!important;flex-direction:column!important;overflow:visible!important}::ng-deep .cds--side-nav__navigation{top:3rem;height:calc(100% - 3rem)!important;overflow-x:hidden!important;overflow-y:auto!important}::ng-deep .cds--side-nav__navigation:not(.cds--side-nav--expanded){width:0}.loading-container{display:flex;width:100%;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "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: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MenuItemTextComponent, selector: "valtimo-menu-item-text", inputs: ["menuItem", "accent", "showOverFlowMenu"], outputs: ["overflowMenuClosed", "openInNewTab"] }, { kind: "component", type: i2$3.SideNav, selector: "cds-sidenav, ibm-sidenav", inputs: ["ariaLabel", "expanded", "hidden", "rail", "allowExpansion", "navigationItems", "useRouter"] }, { kind: "component", type: i2$3.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "useRouter", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }, { kind: "component", type: i2$3.SideNavMenu, selector: "cds-sidenav-menu, ibm-sidenav-menu", inputs: ["useRouter", "title", "expanded", "hasActiveChild", "menuItems"] }, { kind: "directive", type: CtrlClickDirective, selector: "[ctrl-click]", outputs: ["ctrl-click"] }, { kind: "component", type: i2$3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: MenuItemTranslationPipe, name: "menuItemTranslate" }, { kind: "pipe", type: CaseCountPipe, name: "caseCount" }] }); }
|
|
5233
5297
|
}
|
|
@@ -5275,6 +5339,7 @@ class PageTitleComponent {
|
|
|
5275
5339
|
this.customPageTitleSet$ = this.pageTitleService.customPageTitleSet$;
|
|
5276
5340
|
this.translatedTitle$ = new BehaviorSubject('');
|
|
5277
5341
|
this.smallTitle$ = this.pageHeaderService.smallTitle$;
|
|
5342
|
+
this.titleAsBreadcrumb$ = this.pageHeaderService.titleAsBreadcrumb$;
|
|
5278
5343
|
this._appTitleAsSuffix$ = this.configService.getFeatureToggleObservable('applicationTitleAsSuffix');
|
|
5279
5344
|
this._subscriptions = new Subscription();
|
|
5280
5345
|
this._hidePageTitle$ = this.router.events.pipe(startWith(this.router), switchMap(() => this.activatedRoute.firstChild.data), map(data => !!data?.hidePageTitle), tap(hidden => this.pageTitleService.setPageTitleHidden(hidden)));
|
|
@@ -5283,6 +5348,7 @@ class PageTitleComponent {
|
|
|
5283
5348
|
this.openRouterTranslateSubscription();
|
|
5284
5349
|
this.openHidePageTitleSubscription();
|
|
5285
5350
|
this.openCompactModeSubscription();
|
|
5351
|
+
this.openCurrentTitleSubscription();
|
|
5286
5352
|
}
|
|
5287
5353
|
ngAfterViewInit() {
|
|
5288
5354
|
this.pageSubtitleService.setTitleViewContainerRef(this._subtitleVcr);
|
|
@@ -5334,12 +5400,27 @@ class PageTitleComponent {
|
|
|
5334
5400
|
this.isCompact = compactMode;
|
|
5335
5401
|
}));
|
|
5336
5402
|
}
|
|
5403
|
+
openCurrentTitleSubscription() {
|
|
5404
|
+
this._subscriptions.add(combineLatest([
|
|
5405
|
+
this.translatedTitle$,
|
|
5406
|
+
this.hasCustomPageTitle$,
|
|
5407
|
+
this.customPageTitle$,
|
|
5408
|
+
this.customPageTitleSet$,
|
|
5409
|
+
]).subscribe(([translatedTitle, hasCustomPageTitle, customPageTitle, customPageTitleSet]) => {
|
|
5410
|
+
const currentTitle = hasCustomPageTitle
|
|
5411
|
+
? customPageTitleSet
|
|
5412
|
+
? customPageTitle
|
|
5413
|
+
: ''
|
|
5414
|
+
: translatedTitle;
|
|
5415
|
+
this.pageTitleService.setCurrentTitle(currentTitle || '');
|
|
5416
|
+
}));
|
|
5417
|
+
}
|
|
5337
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 }); }
|
|
5338
|
-
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 (
|
|
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: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 }); }
|
|
5339
5420
|
}
|
|
5340
5421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageTitleComponent, decorators: [{
|
|
5341
5422
|
type: Component,
|
|
5342
|
-
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 (
|
|
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: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"] }]
|
|
5343
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: [{
|
|
5344
5425
|
type: HostBinding,
|
|
5345
5426
|
args: ['class.valtimo-page-title--compact']
|
|
@@ -6536,7 +6617,8 @@ class CarbonListComponent {
|
|
|
6536
6617
|
this._headerItems$ = combineLatest([
|
|
6537
6618
|
this._translatedFields$,
|
|
6538
6619
|
this.sort$,
|
|
6539
|
-
|
|
6620
|
+
this._items$, // Needed so extraColumns re-evaluates when items.locked changes
|
|
6621
|
+
]).pipe(map(([translatedFields, sortState, _items]) => translatedFields.map((field) => new TableHeaderItem({
|
|
6540
6622
|
data: field.label,
|
|
6541
6623
|
sortable: field.sortable,
|
|
6542
6624
|
className: field.className,
|
|
@@ -6896,11 +6978,11 @@ class CarbonListComponent {
|
|
|
6896
6978
|
}));
|
|
6897
6979
|
}
|
|
6898
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 }); }
|
|
6899
|
-
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 }); }
|
|
6900
6982
|
}
|
|
6901
6983
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonListComponent, decorators: [{
|
|
6902
6984
|
type: Component,
|
|
6903
|
-
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"] }]
|
|
6904
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: [{
|
|
6905
6987
|
type: ViewChild,
|
|
6906
6988
|
args: ['actionsMenuTemplate']
|
|
@@ -7339,13 +7421,24 @@ class BreadcrumbNavigationComponent {
|
|
|
7339
7421
|
this.pageHeaderService = pageHeaderService;
|
|
7340
7422
|
this.pageTitleService = pageTitleService;
|
|
7341
7423
|
this.compactMode$ = this.pageHeaderService.compactMode$;
|
|
7424
|
+
this.titleAsBreadcrumb$ = this.pageHeaderService.titleAsBreadcrumb$;
|
|
7425
|
+
/** True when the page title is rendered as the final breadcrumb item (non-compact only). */
|
|
7426
|
+
this.titleIsFinalBreadcrumb$ = combineLatest([
|
|
7427
|
+
this.titleAsBreadcrumb$,
|
|
7428
|
+
this.compactMode$,
|
|
7429
|
+
this.pageTitleService.pageTitleHidden$,
|
|
7430
|
+
this.pageTitleService.currentTitle$,
|
|
7431
|
+
]).pipe(map(([titleAsBreadcrumb, compactMode, pageTitleHidden, currentTitle]) => titleAsBreadcrumb && !compactMode && !pageTitleHidden && !!currentTitle));
|
|
7342
7432
|
this.breadcrumbItems$ = combineLatest([
|
|
7343
7433
|
this.breadcrumbService.breadcrumbItems$,
|
|
7344
7434
|
this.compactMode$,
|
|
7345
7435
|
this.pageTitleService.pageTitleHidden$,
|
|
7346
|
-
|
|
7436
|
+
this.titleIsFinalBreadcrumb$,
|
|
7437
|
+
this.pageTitleService.currentTitle$,
|
|
7438
|
+
]).pipe(map(([breadCrumbItems, compactMode, pageTitleHidden, titleIsFinalBreadcrumb, currentTitle]) => [
|
|
7347
7439
|
...(compactMode && !pageTitleHidden ? [{ content: '' }] : []),
|
|
7348
7440
|
...breadCrumbItems,
|
|
7441
|
+
...(titleIsFinalBreadcrumb ? [{ content: currentTitle }] : []),
|
|
7349
7442
|
]));
|
|
7350
7443
|
this._subscriptions = new Subscription();
|
|
7351
7444
|
}
|
|
@@ -7358,11 +7451,11 @@ class BreadcrumbNavigationComponent {
|
|
|
7358
7451
|
this._subscriptions.unsubscribe();
|
|
7359
7452
|
}
|
|
7360
7453
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BreadcrumbNavigationComponent, deps: [{ token: BreadcrumbService }, { token: PageHeaderService }, { token: PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: BreadcrumbNavigationComponent, isStandalone: false, selector: "valtimo-breadcrumb-navigation", host: { properties: { "class.valtimo-breadcrumb-navigation--compact": "this.isCompact" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb
|
|
7454
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: BreadcrumbNavigationComponent, isStandalone: false, selector: "valtimo-breadcrumb-navigation", host: { properties: { "class.valtimo-breadcrumb-navigation--compact": "this.isCompact" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb\n [items]=\"breadcrumbItems\"\n [noTrailingSlash]=\"(titleIsFinalBreadcrumb$ | async) === true\"\n ></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:8px;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink: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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.Breadcrumb, selector: "cds-breadcrumb, ibm-breadcrumb", inputs: ["items", "noTrailingSlash", "ariaLabel", "skeleton", "threshold", "autoAlign", "description"], outputs: ["navigation"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7362
7455
|
}
|
|
7363
7456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BreadcrumbNavigationComponent, decorators: [{
|
|
7364
7457
|
type: Component,
|
|
7365
|
-
args: [{ selector: 'valtimo-breadcrumb-navigation', 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<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb
|
|
7458
|
+
args: [{ selector: 'valtimo-breadcrumb-navigation', 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<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb\n [items]=\"breadcrumbItems\"\n [noTrailingSlash]=\"(titleIsFinalBreadcrumb$ | async) === true\"\n ></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:8px;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink: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"] }]
|
|
7366
7459
|
}], ctorParameters: () => [{ type: BreadcrumbService }, { type: PageHeaderService }, { type: PageTitleService }], propDecorators: { isCompact: [{
|
|
7367
7460
|
type: HostBinding,
|
|
7368
7461
|
args: ['class.valtimo-breadcrumb-navigation--compact']
|
|
@@ -7606,6 +7699,7 @@ class PageHeaderComponent {
|
|
|
7606
7699
|
this.showPageHeader$ = this.userInterfaceService.showPageHeader$;
|
|
7607
7700
|
this.compactMode$ = this.pageHeaderService.compactMode$;
|
|
7608
7701
|
this.smallTitle$ = this.pageHeaderService.smallTitle$;
|
|
7702
|
+
this.titleAsBreadcrumb$ = this.pageHeaderService.titleAsBreadcrumb$;
|
|
7609
7703
|
this.pageActionsHasContent$ = this.pageHeaderService.pageActionsHasContent$;
|
|
7610
7704
|
this.pageTitleHidden$ = this.pageTitleService.pageTitleHidden$;
|
|
7611
7705
|
}
|
|
@@ -7626,11 +7720,11 @@ class PageHeaderComponent {
|
|
|
7626
7720
|
this._pageHeadResizeObserver.observe(this._pageHead.nativeElement);
|
|
7627
7721
|
}
|
|
7628
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 }); }
|
|
7629
|
-
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-
|
|
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-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" }] }); }
|
|
7630
7724
|
}
|
|
7631
7725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageHeaderComponent, decorators: [{
|
|
7632
7726
|
type: Component,
|
|
7633
|
-
args: [{ selector: 'valtimo-page-header', standalone: false, template: "<!--\n ~ Copyright 2015-
|
|
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-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"] }]
|
|
7634
7728
|
}], ctorParameters: () => [{ type: UserInterfaceService }, { type: PageHeaderService }, { type: PageTitleService }], propDecorators: { _contentrVcr: [{
|
|
7635
7729
|
type: ViewChild,
|
|
7636
7730
|
args: ['contentVcr', { static: true, read: ViewContainerRef }]
|
|
@@ -10432,6 +10526,9 @@ class ValuePathSelectorComponent {
|
|
|
10432
10526
|
set prefixes(value) {
|
|
10433
10527
|
this._prefixes$.next(value ?? []);
|
|
10434
10528
|
}
|
|
10529
|
+
set excludePrefixes(value) {
|
|
10530
|
+
this._excludePrefixes$.next(value ?? []);
|
|
10531
|
+
}
|
|
10435
10532
|
set defaultValue(value) {
|
|
10436
10533
|
if (!value)
|
|
10437
10534
|
return;
|
|
@@ -10490,6 +10587,7 @@ class ValuePathSelectorComponent {
|
|
|
10490
10587
|
this._buildingBlockDefinitionKey$,
|
|
10491
10588
|
]).pipe(map(([caseDefinitionKey, buildingBlockKey]) => !!caseDefinitionKey || !!buildingBlockKey));
|
|
10492
10589
|
this._prefixes$ = new BehaviorSubject([]);
|
|
10590
|
+
this._excludePrefixes$ = new BehaviorSubject([]);
|
|
10493
10591
|
this._inputMode$ = new BehaviorSubject(ValuePathSelectorInputMode.DROPDOWN);
|
|
10494
10592
|
this.inputModeIsDropdown$ = this._inputMode$.pipe(map(mode => mode === ValuePathSelectorInputMode.DROPDOWN));
|
|
10495
10593
|
this.loadingValuePathItems$ = new BehaviorSubject(true);
|
|
@@ -10500,16 +10598,17 @@ class ValuePathSelectorComponent {
|
|
|
10500
10598
|
: combineLatest([
|
|
10501
10599
|
this._caseDefinitionKeySubject$,
|
|
10502
10600
|
this._prefixes$,
|
|
10601
|
+
this._excludePrefixes$,
|
|
10503
10602
|
this._type$,
|
|
10504
10603
|
this._caseDefinitionVersionTag$,
|
|
10505
10604
|
this._buildingBlockDefinitionKey$,
|
|
10506
10605
|
this._buildingBlockDefinitionVersionTag$,
|
|
10507
10606
|
this.showToggle$,
|
|
10508
|
-
]).pipe(filter$1(([, , , , , , showToggle]) => showToggle), switchMap(([caseDefinitionKey, prefixes, type, caseDefinitionVersionTag, buildingBlockKey, buildingBlockVersionTag,]) => {
|
|
10607
|
+
]).pipe(filter$1(([, , , , , , , showToggle]) => showToggle), switchMap(([caseDefinitionKey, prefixes, excludePrefixes, type, caseDefinitionVersionTag, buildingBlockKey, buildingBlockVersionTag,]) => {
|
|
10509
10608
|
const context = this.buildBlueprintContext(caseDefinitionKey, caseDefinitionVersionTag, buildingBlockKey, buildingBlockVersionTag);
|
|
10510
10609
|
if (!context)
|
|
10511
10610
|
return of([]);
|
|
10512
|
-
return this.valuePathSelectorService.getResolvableKeysForContext(prefixes, context, type);
|
|
10611
|
+
return this.valuePathSelectorService.getResolvableKeysForContext(prefixes, excludePrefixes, context, type);
|
|
10513
10612
|
}))), map((results) => results
|
|
10514
10613
|
.map((result) => ({
|
|
10515
10614
|
...result,
|
|
@@ -10642,7 +10741,7 @@ class ValuePathSelectorComponent {
|
|
|
10642
10741
|
return null;
|
|
10643
10742
|
}
|
|
10644
10743
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ValuePathSelectorComponent, deps: [{ token: ValuePathSelectorService }, { token: i2.FormBuilder }, { token: i3$1.DocumentService }, { token: i1$3.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10645
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ValuePathSelectorComponent, isStandalone: true, selector: "valtimo-value-path-selector", inputs: { name: "name", appendInline: "appendInline", margin: "margin", marginLg: "marginLg", marginXl: "marginXl", disabled: "disabled", caseDefinitionKey: "caseDefinitionKey", caseDefinitionVersionTag: "caseDefinitionVersionTag", buildingBlockDefinitionKey: "buildingBlockDefinitionKey", buildingBlockDefinitionVersionTag: "buildingBlockDefinitionVersionTag", prefixes: "prefixes", label: "label", tooltip: "tooltip", required: "required", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", dropUp: "dropUp", defaultValue: "defaultValue", type: "type", parentItem: "parentItem", filterItems: "filterItems" }, outputs: { valueChangeEvent: "valueChangeEvent", collectionSelected: "collectionSelected" }, host: { listeners: { "focusout": "onBlur()" }, properties: { "class.value-path-selector--margin-bottom": "this._showMargin", "class.value-path-selector--margin-bottom-lg": "this._showMarginLg", "class.value-path-selector--margin-bottom-xl": "this._showMarginXl" } }, providers: [
|
|
10744
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ValuePathSelectorComponent, isStandalone: true, selector: "valtimo-value-path-selector", inputs: { name: "name", appendInline: "appendInline", margin: "margin", marginLg: "marginLg", marginXl: "marginXl", disabled: "disabled", caseDefinitionKey: "caseDefinitionKey", caseDefinitionVersionTag: "caseDefinitionVersionTag", buildingBlockDefinitionKey: "buildingBlockDefinitionKey", buildingBlockDefinitionVersionTag: "buildingBlockDefinitionVersionTag", prefixes: "prefixes", excludePrefixes: "excludePrefixes", label: "label", tooltip: "tooltip", required: "required", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", dropUp: "dropUp", defaultValue: "defaultValue", type: "type", parentItem: "parentItem", filterItems: "filterItems" }, outputs: { valueChangeEvent: "valueChangeEvent", collectionSelected: "collectionSelected" }, host: { listeners: { "focusout": "onBlur()" }, properties: { "class.value-path-selector--margin-bottom": "this._showMargin", "class.value-path-selector--margin-bottom-lg": "this._showMarginLg", "class.value-path-selector--margin-bottom-xl": "this._showMarginXl" } }, providers: [
|
|
10646
10745
|
{
|
|
10647
10746
|
provide: NG_VALUE_ACCESSOR,
|
|
10648
10747
|
multi: true,
|
|
@@ -10704,6 +10803,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
10704
10803
|
type: Input
|
|
10705
10804
|
}], prefixes: [{
|
|
10706
10805
|
type: Input
|
|
10806
|
+
}], excludePrefixes: [{
|
|
10807
|
+
type: Input
|
|
10707
10808
|
}], label: [{
|
|
10708
10809
|
type: Input
|
|
10709
10810
|
}], tooltip: [{
|
|
@@ -10775,7 +10876,7 @@ class FormioValueResolverSelectorComponent {
|
|
|
10775
10876
|
}
|
|
10776
10877
|
}
|
|
10777
10878
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FormioValueResolverSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10778
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: FormioValueResolverSelectorComponent, isStandalone: true, selector: "valtimo-formio-value-resolver-selector", inputs: { disabled: "disabled", label: "label", resolverType: "resolverType", value: "value" }, outputs: { valueChange: "valueChange" }, 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@if (isIndependentContext$ | async) {\n <input\n cdsText\n type=\"text\"\n [value]=\"defaultValue$ | async\"\n [cdsLayer]=\"1\"\n (input)=\"onValueChange($any($event.target).value)\"\n />\n} @else {\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [caseDefinitionVersionTag]=\"caseDefinitionVersionTag$ | async\"\n [buildingBlockDefinitionKey]=\"buildingBlockDefinitionKey$ | async\"\n [buildingBlockDefinitionVersionTag]=\"buildingBlockDefinitionVersionTag$ | async\"\n [appendInline]=\"true\"\n [defaultValue]=\"defaultValue$ | async\"\n [label]=\"label\"\n [showCaseDefinitionSelector]=\"true\"\n notation=\"slashes\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC]\"\n [cdsLayer]=\"1\"\n (valueChangeEvent)=\"onValueChange($event)\"\n ></valtimo-value-path-selector>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }] }); }
|
|
10879
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: FormioValueResolverSelectorComponent, isStandalone: true, selector: "valtimo-formio-value-resolver-selector", inputs: { disabled: "disabled", label: "label", resolverType: "resolverType", value: "value" }, outputs: { valueChange: "valueChange" }, 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@if (isIndependentContext$ | async) {\n <input\n cdsText\n type=\"text\"\n [value]=\"defaultValue$ | async\"\n [cdsLayer]=\"1\"\n (input)=\"onValueChange($any($event.target).value)\"\n />\n} @else {\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [caseDefinitionVersionTag]=\"caseDefinitionVersionTag$ | async\"\n [buildingBlockDefinitionKey]=\"buildingBlockDefinitionKey$ | async\"\n [buildingBlockDefinitionVersionTag]=\"buildingBlockDefinitionVersionTag$ | async\"\n [appendInline]=\"true\"\n [defaultValue]=\"defaultValue$ | async\"\n [label]=\"label\"\n [showCaseDefinitionSelector]=\"true\"\n notation=\"slashes\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC]\"\n [cdsLayer]=\"1\"\n (valueChangeEvent)=\"onValueChange($event)\"\n ></valtimo-value-path-selector>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "directive", type: i2$3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }] }); }
|
|
10779
10880
|
}
|
|
10780
10881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FormioValueResolverSelectorComponent, decorators: [{
|
|
10781
10882
|
type: Component,
|
|
@@ -11301,105 +11402,127 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
11301
11402
|
* See the License for the specific language governing permissions and
|
|
11302
11403
|
* limitations under the License.
|
|
11303
11404
|
*/
|
|
11304
|
-
const
|
|
11305
|
-
|
|
11306
|
-
|
|
11307
|
-
|
|
11308
|
-
|
|
11309
|
-
|
|
11310
|
-
|
|
11311
|
-
|
|
11312
|
-
|
|
11313
|
-
|
|
11314
|
-
|
|
11315
|
-
},
|
|
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,
|
|
11316
11416
|
},
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11323
|
-
|
|
11324
|
-
|
|
11325
|
-
|
|
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,
|
|
11326
11427
|
},
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
|
|
11331
|
-
|
|
11332
|
-
|
|
11333
|
-
|
|
11334
|
-
|
|
11335
|
-
|
|
11336
|
-
|
|
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,
|
|
11337
11439
|
},
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
|
|
11341
|
-
|
|
11342
|
-
|
|
11343
|
-
|
|
11344
|
-
|
|
11345
|
-
|
|
11346
|
-
|
|
11347
|
-
|
|
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,
|
|
11348
11451
|
},
|
|
11349
|
-
|
|
11350
|
-
|
|
11351
|
-
|
|
11352
|
-
|
|
11353
|
-
|
|
11354
|
-
|
|
11355
|
-
|
|
11356
|
-
|
|
11357
|
-
|
|
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,
|
|
11358
11462
|
},
|
|
11359
|
-
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
|
|
11365
|
-
|
|
11366
|
-
|
|
11367
|
-
|
|
11368
|
-
|
|
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,
|
|
11369
11474
|
},
|
|
11370
|
-
|
|
11371
|
-
|
|
11372
|
-
|
|
11373
|
-
|
|
11374
|
-
|
|
11375
|
-
|
|
11376
|
-
|
|
11377
|
-
|
|
11378
|
-
|
|
11379
|
-
|
|
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,
|
|
11380
11486
|
},
|
|
11381
|
-
|
|
11382
|
-
|
|
11383
|
-
|
|
11384
|
-
|
|
11385
|
-
|
|
11386
|
-
|
|
11387
|
-
|
|
11388
|
-
|
|
11389
|
-
|
|
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,
|
|
11390
11497
|
},
|
|
11391
|
-
|
|
11392
|
-
|
|
11393
|
-
|
|
11394
|
-
|
|
11395
|
-
|
|
11396
|
-
|
|
11397
|
-
|
|
11398
|
-
|
|
11399
|
-
|
|
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,
|
|
11400
11508
|
},
|
|
11401
|
-
|
|
11402
|
-
|
|
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
|
+
};
|
|
11403
11526
|
|
|
11404
11527
|
/*
|
|
11405
11528
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -11417,7 +11540,7 @@ const formIoUploaderEditForm = () => ({
|
|
|
11417
11540
|
* limitations under the License.
|
|
11418
11541
|
*/
|
|
11419
11542
|
const customUploaderType = 'valtimo-file';
|
|
11420
|
-
const COMPONENT_OPTIONS$
|
|
11543
|
+
const COMPONENT_OPTIONS$6 = {
|
|
11421
11544
|
type: customUploaderType,
|
|
11422
11545
|
selector: 'valtimo-form-io-uploader',
|
|
11423
11546
|
title: 'Valtimo File Upload',
|
|
@@ -11428,8 +11551,8 @@ const COMPONENT_OPTIONS$5 = {
|
|
|
11428
11551
|
editForm: formIoUploaderEditForm,
|
|
11429
11552
|
};
|
|
11430
11553
|
function registerFormioUploadComponent(injector) {
|
|
11431
|
-
if (!customElements.get(COMPONENT_OPTIONS$
|
|
11432
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11554
|
+
if (!customElements.get(COMPONENT_OPTIONS$6.selector)) {
|
|
11555
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$6, FormIoUploaderComponent, injector);
|
|
11433
11556
|
}
|
|
11434
11557
|
}
|
|
11435
11558
|
|
|
@@ -11512,7 +11635,7 @@ const formIoCurrentUserEditForm = () => ({
|
|
|
11512
11635
|
* See the License for the specific language governing permissions and
|
|
11513
11636
|
* limitations under the License.
|
|
11514
11637
|
*/
|
|
11515
|
-
const COMPONENT_OPTIONS$
|
|
11638
|
+
const COMPONENT_OPTIONS$5 = {
|
|
11516
11639
|
type: 'valtimo-current-user',
|
|
11517
11640
|
selector: 'valtimo-form-io-current-user',
|
|
11518
11641
|
title: 'Valtimo Current User',
|
|
@@ -11525,7 +11648,7 @@ const COMPONENT_OPTIONS$4 = {
|
|
|
11525
11648
|
},
|
|
11526
11649
|
};
|
|
11527
11650
|
function registerFormioCurrentUserComponent(injector) {
|
|
11528
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11651
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$5, FormIoCurrentUserComponent, injector);
|
|
11529
11652
|
}
|
|
11530
11653
|
|
|
11531
11654
|
/*
|
|
@@ -11543,7 +11666,7 @@ function registerFormioCurrentUserComponent(injector) {
|
|
|
11543
11666
|
* See the License for the specific language governing permissions and
|
|
11544
11667
|
* limitations under the License.
|
|
11545
11668
|
*/
|
|
11546
|
-
const COMPONENT_OPTIONS$
|
|
11669
|
+
const COMPONENT_OPTIONS$4 = {
|
|
11547
11670
|
type: 'iban',
|
|
11548
11671
|
selector: 'valtimo-iban',
|
|
11549
11672
|
title: 'Iban',
|
|
@@ -11560,7 +11683,7 @@ const COMPONENT_OPTIONS$3 = {
|
|
|
11560
11683
|
},
|
|
11561
11684
|
};
|
|
11562
11685
|
function registerFormioIbanComponent(injector) {
|
|
11563
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11686
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$4, FormIoIbanComponent, injector);
|
|
11564
11687
|
}
|
|
11565
11688
|
|
|
11566
11689
|
/*
|
|
@@ -11673,7 +11796,7 @@ const currencyEditForm = () => {
|
|
|
11673
11796
|
* See the License for the specific language governing permissions and
|
|
11674
11797
|
* limitations under the License.
|
|
11675
11798
|
*/
|
|
11676
|
-
const COMPONENT_OPTIONS$
|
|
11799
|
+
const COMPONENT_OPTIONS$3 = {
|
|
11677
11800
|
type: 'currency',
|
|
11678
11801
|
selector: 'valtimo-currency',
|
|
11679
11802
|
title: 'Currency',
|
|
@@ -11691,7 +11814,7 @@ const COMPONENT_OPTIONS$2 = {
|
|
|
11691
11814
|
editForm: currencyEditForm,
|
|
11692
11815
|
};
|
|
11693
11816
|
function registerFormioCurrencyComponent(injector) {
|
|
11694
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
11817
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$3, FormIoCurrencyComponent, injector);
|
|
11695
11818
|
}
|
|
11696
11819
|
|
|
11697
11820
|
/*
|
|
@@ -11789,78 +11912,193 @@ function registerFormioFileSelectorComponent(injector) {
|
|
|
11789
11912
|
* See the License for the specific language governing permissions and
|
|
11790
11913
|
* limitations under the License.
|
|
11791
11914
|
*/
|
|
11792
|
-
|
|
11793
|
-
|
|
11794
|
-
|
|
11795
|
-
|
|
11796
|
-
|
|
11797
|
-
|
|
11798
|
-
|
|
11799
|
-
|
|
11800
|
-
|
|
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);
|
|
11801
11944
|
};
|
|
11802
|
-
this.itemsSelected = new EventEmitter();
|
|
11803
11945
|
}
|
|
11804
|
-
|
|
11805
|
-
this.
|
|
11946
|
+
ngAfterViewInit() {
|
|
11947
|
+
this.openLocaleSubscription();
|
|
11948
|
+
this.openDateValueSubscription();
|
|
11949
|
+
this.openClearSubscription();
|
|
11806
11950
|
}
|
|
11807
|
-
|
|
11808
|
-
|
|
11809
|
-
}
|
|
11810
|
-
|
|
11811
|
-
|
|
11812
|
-
|
|
11813
|
-
}
|
|
11814
|
-
|
|
11815
|
-
|
|
11816
|
-
|
|
11817
|
-
|
|
11818
|
-
|
|
11819
|
-
|
|
11820
|
-
|
|
11821
|
-
|
|
11822
|
-
|
|
11823
|
-
|
|
11824
|
-
|
|
11825
|
-
|
|
11826
|
-
|
|
11827
|
-
|
|
11828
|
-
|
|
11829
|
-
|
|
11830
|
-
|
|
11831
|
-
|
|
11832
|
-
|
|
11833
|
-
|
|
11834
|
-
|
|
11835
|
-
|
|
11836
|
-
|
|
11837
|
-
|
|
11838
|
-
|
|
11839
|
-
|
|
11840
|
-
|
|
11841
|
-
|
|
11842
|
-
|
|
11843
|
-
|
|
11844
|
-
|
|
11845
|
-
|
|
11846
|
-
|
|
11847
|
-
|
|
11848
|
-
|
|
11849
|
-
|
|
11850
|
-
|
|
11851
|
-
|
|
11852
|
-
|
|
11853
|
-
|
|
11854
|
-
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
|
|
11858
|
-
|
|
11859
|
-
|
|
11860
|
-
|
|
11861
|
-
|
|
11862
|
-
|
|
11863
|
-
|
|
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" }] }); }
|
|
12014
|
+
}
|
|
12015
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
12016
|
+
type: Component,
|
|
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: [{
|
|
12025
|
+
type: Input
|
|
12026
|
+
}], title: [{
|
|
12027
|
+
type: Input
|
|
12028
|
+
}], placeholder: [{
|
|
12029
|
+
type: Input
|
|
12030
|
+
}], titleTranslationKey: [{
|
|
12031
|
+
type: Input
|
|
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: [{
|
|
12057
|
+
type: Output
|
|
12058
|
+
}] } });
|
|
12059
|
+
|
|
12060
|
+
/*
|
|
12061
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
12062
|
+
*
|
|
12063
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12064
|
+
* you may not use this file except in compliance with the License.
|
|
12065
|
+
* You may obtain a copy of the License at
|
|
12066
|
+
*
|
|
12067
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
12068
|
+
*
|
|
12069
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12070
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12071
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12072
|
+
* See the License for the specific language governing permissions and
|
|
12073
|
+
* limitations under the License.
|
|
12074
|
+
*/
|
|
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] }); }
|
|
12082
|
+
}
|
|
12083
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, decorators: [{
|
|
12084
|
+
type: NgModule,
|
|
12085
|
+
args: [{
|
|
12086
|
+
declarations: [DatePickerComponent],
|
|
12087
|
+
imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1],
|
|
12088
|
+
exports: [DatePickerComponent],
|
|
12089
|
+
}]
|
|
12090
|
+
}] });
|
|
12091
|
+
|
|
12092
|
+
/*
|
|
12093
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
12094
|
+
*
|
|
12095
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12096
|
+
* you may not use this file except in compliance with the License.
|
|
12097
|
+
* You may obtain a copy of the License at
|
|
12098
|
+
*
|
|
12099
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
12100
|
+
*
|
|
12101
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11864
12102
|
* distributed under the License is distributed on an "AS IS" basis,
|
|
11865
12103
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11866
12104
|
* See the License for the specific language governing permissions and
|
|
@@ -12321,6 +12559,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12321
12559
|
type: Output
|
|
12322
12560
|
}] } });
|
|
12323
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
|
+
|
|
12324
12614
|
/*
|
|
12325
12615
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
12326
12616
|
*
|
|
@@ -12361,8 +12651,9 @@ class SelectComponent {
|
|
|
12361
12651
|
setDisabledState(isDisabled) {
|
|
12362
12652
|
this.$disabled.set(isDisabled);
|
|
12363
12653
|
}
|
|
12364
|
-
constructor(translateService) {
|
|
12654
|
+
constructor(translateService, changeDetectorRef) {
|
|
12365
12655
|
this.translateService = translateService;
|
|
12656
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
12366
12657
|
this.$disabled = signal(false);
|
|
12367
12658
|
this.invalid = false;
|
|
12368
12659
|
this.multiple = false;
|
|
@@ -12395,10 +12686,17 @@ class SelectComponent {
|
|
|
12395
12686
|
const isSelected = Array.isArray(selected)
|
|
12396
12687
|
? selected.includes(listItem.id)
|
|
12397
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;
|
|
12398
12696
|
return {
|
|
12399
12697
|
...listItem,
|
|
12400
12698
|
selected: isSelected,
|
|
12401
|
-
content:
|
|
12699
|
+
content: translated,
|
|
12402
12700
|
};
|
|
12403
12701
|
})));
|
|
12404
12702
|
this._onChange = () => { };
|
|
@@ -12409,6 +12707,17 @@ class SelectComponent {
|
|
|
12409
12707
|
this.openSelectedSubscription();
|
|
12410
12708
|
this.openClearSubjectSubscription();
|
|
12411
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
|
+
}
|
|
12412
12721
|
ngOnChanges(changes) {
|
|
12413
12722
|
if (changes?.items?.currentValue ||
|
|
12414
12723
|
changes?.defaultSelectionId?.currentValue ||
|
|
@@ -12420,6 +12729,8 @@ class SelectComponent {
|
|
|
12420
12729
|
ngOnDestroy() {
|
|
12421
12730
|
this._selectedSubscription?.unsubscribe();
|
|
12422
12731
|
this._clearSubjectSubscription?.unsubscribe();
|
|
12732
|
+
if (this._displayFlushTimeoutId !== undefined)
|
|
12733
|
+
clearTimeout(this._displayFlushTimeoutId);
|
|
12423
12734
|
}
|
|
12424
12735
|
setSelected(selectedValue) {
|
|
12425
12736
|
const id = !Array.isArray(selectedValue) && selectedValue?.id;
|
|
@@ -12442,6 +12753,12 @@ class SelectComponent {
|
|
|
12442
12753
|
clear() {
|
|
12443
12754
|
this.setSelectedValue(this.multiple ? [] : '');
|
|
12444
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
|
+
}
|
|
12445
12762
|
setDefaultSelection() {
|
|
12446
12763
|
this.listItems$.pipe(take(1)).subscribe(listItems => {
|
|
12447
12764
|
const itemsIds = listItems?.map(item => item.id);
|
|
@@ -12478,14 +12795,14 @@ class SelectComponent {
|
|
|
12478
12795
|
});
|
|
12479
12796
|
}
|
|
12480
12797
|
}
|
|
12481
|
-
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 }); }
|
|
12482
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: [
|
|
12483
12800
|
{
|
|
12484
12801
|
provide: NG_VALUE_ACCESSOR,
|
|
12485
12802
|
useExisting: forwardRef(() => SelectComponent),
|
|
12486
12803
|
multi: true,
|
|
12487
12804
|
},
|
|
12488
|
-
], 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 }); }
|
|
12489
12806
|
}
|
|
12490
12807
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectComponent, decorators: [{
|
|
12491
12808
|
type: Component,
|
|
@@ -12495,8 +12812,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12495
12812
|
useExisting: forwardRef(() => SelectComponent),
|
|
12496
12813
|
multi: true,
|
|
12497
12814
|
},
|
|
12498
|
-
], 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"] }]
|
|
12499
|
-
}], 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: [{
|
|
12500
12817
|
type: Input
|
|
12501
12818
|
}], defaultSelection: [{
|
|
12502
12819
|
type: Input
|
|
@@ -12573,24 +12890,1035 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
12573
12890
|
* See the License for the specific language governing permissions and
|
|
12574
12891
|
* limitations under the License.
|
|
12575
12892
|
*/
|
|
12576
|
-
class
|
|
12577
|
-
|
|
12578
|
-
|
|
12579
|
-
|
|
12580
|
-
|
|
12581
|
-
|
|
12582
|
-
|
|
12583
|
-
|
|
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] }); }
|
|
12897
|
+
}
|
|
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
|
+
}] });
|
|
12906
|
+
|
|
12907
|
+
/*
|
|
12908
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
12909
|
+
*
|
|
12910
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12911
|
+
* you may not use this file except in compliance with the License.
|
|
12912
|
+
* You may obtain a copy of the License at
|
|
12913
|
+
*
|
|
12914
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
12915
|
+
*
|
|
12916
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12917
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12918
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12919
|
+
* See the License for the specific language governing permissions and
|
|
12920
|
+
* limitations under the License.
|
|
12921
|
+
*/
|
|
12922
|
+
class ObjectManagementSelectService {
|
|
12923
|
+
constructor(_http) {
|
|
12924
|
+
this._http = _http;
|
|
12925
|
+
this._API_URL = '/api/v1/object-management/objects';
|
|
12584
12926
|
}
|
|
12585
|
-
|
|
12586
|
-
|
|
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 });
|
|
12587
12944
|
}
|
|
12588
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12589
|
-
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' }); }
|
|
12590
12947
|
}
|
|
12591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
12592
|
-
type:
|
|
12593
|
-
args: [{
|
|
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 }] });
|
|
12952
|
+
|
|
12953
|
+
/*
|
|
12954
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
12955
|
+
*
|
|
12956
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
12957
|
+
* you may not use this file except in compliance with the License.
|
|
12958
|
+
* You may obtain a copy of the License at
|
|
12959
|
+
*
|
|
12960
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
12961
|
+
*
|
|
12962
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12963
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12964
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12965
|
+
* See the License for the specific language governing permissions and
|
|
12966
|
+
* limitations under the License.
|
|
12967
|
+
*/
|
|
12968
|
+
class ObjectManagementSelectComponent {
|
|
12969
|
+
constructor(_service, _iconService) {
|
|
12970
|
+
this._service = _service;
|
|
12971
|
+
this._iconService = _iconService;
|
|
12972
|
+
this.disabled = false;
|
|
12973
|
+
this.label = '';
|
|
12974
|
+
this.valueFormat = 'id';
|
|
12975
|
+
this.valueChange = new EventEmitter();
|
|
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]);
|
|
13002
|
+
}
|
|
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
|
+
}
|
|
13012
|
+
}
|
|
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"] }]
|
|
12594
13922
|
}], propDecorators: { keyColumnTitle: [{
|
|
12595
13923
|
type: Input
|
|
12596
13924
|
}], valueColumnTitle: [{
|
|
@@ -12830,7 +14158,7 @@ class KeyValuePathSelectorComponent {
|
|
|
12830
14158
|
this.valueChange.emit({ value: this.value, inputValue, type });
|
|
12831
14159
|
}
|
|
12832
14160
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyValuePathSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12833
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KeyValuePathSelectorComponent, isStandalone: true, selector: "valtimo-key-value-path-selector", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", index: "index", value: "value", fullWidth: "fullWidth", disabled: "disabled", caseDefinitionKey: "caseDefinitionKey", prefixes: "prefixes", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", 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 key\"\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 path-selector\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey\"\n [prefixes]=\"prefixes\"\n [showCaseDefinitionSelector]=\"showCaseDefinitionSelector\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value?.value\"\n [notation]=\"notation\"\n (valueChangeEvent)=\"onInputChange('value', $event)\"\n ></valtimo-value-path-selector>\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}:host .path-selector{flex:2}\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: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
14161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KeyValuePathSelectorComponent, isStandalone: true, selector: "valtimo-key-value-path-selector", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", index: "index", value: "value", fullWidth: "fullWidth", disabled: "disabled", caseDefinitionKey: "caseDefinitionKey", prefixes: "prefixes", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", 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 key\"\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 path-selector\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"valueColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey\"\n [prefixes]=\"prefixes\"\n [showCaseDefinitionSelector]=\"showCaseDefinitionSelector\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value?.value\"\n [notation]=\"notation\"\n (valueChangeEvent)=\"onInputChange('value', $event)\"\n ></valtimo-value-path-selector>\n</div>\n", styles: [":host{display:flex;flex-direction:row;align-items:flex-end}:host.--full-width{width:100%}:host .path-selector{flex:2}\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: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
12834
14162
|
}
|
|
12835
14163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KeyValuePathSelectorComponent, decorators: [{
|
|
12836
14164
|
type: Component,
|
|
@@ -12904,7 +14232,7 @@ class ValuePathSelectorValueComponent {
|
|
|
12904
14232
|
this.valueChange.emit({ value: this.value, inputValue, type });
|
|
12905
14233
|
}
|
|
12906
14234
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ValuePathSelectorValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12907
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ValuePathSelectorValueComponent, isStandalone: true, selector: "valtimo-value-path-selector-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", index: "index", value: "value", fullWidth: "fullWidth", disabled: "disabled", caseDefinitionKey: "caseDefinitionKey", prefixes: "prefixes", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", 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 path-selector\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey\"\n [prefixes]=\"prefixes\"\n [showCaseDefinitionSelector]=\"showCaseDefinitionSelector\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value?.key\"\n [notation]=\"notation\"\n (valueChangeEvent)=\"onInputChange('key', $event)\"\n ></valtimo-value-path-selector>\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%}:host .path-selector{flex:2}\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: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
14235
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ValuePathSelectorValueComponent, isStandalone: true, selector: "valtimo-value-path-selector-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", index: "index", value: "value", fullWidth: "fullWidth", disabled: "disabled", caseDefinitionKey: "caseDefinitionKey", prefixes: "prefixes", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", 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 path-selector\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey\"\n [prefixes]=\"prefixes\"\n [showCaseDefinitionSelector]=\"showCaseDefinitionSelector\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value?.key\"\n [notation]=\"notation\"\n (valueChangeEvent)=\"onInputChange('key', $event)\"\n ></valtimo-value-path-selector>\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%}:host .path-selector{flex:2}\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: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
12908
14236
|
}
|
|
12909
14237
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ValuePathSelectorValueComponent, decorators: [{
|
|
12910
14238
|
type: Component,
|
|
@@ -12980,7 +14308,7 @@ class ValuePathSelectorDropdownValueComponent {
|
|
|
12980
14308
|
this.valueChange.emit({ value: this.value, inputValue, type });
|
|
12981
14309
|
}
|
|
12982
14310
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ValuePathSelectorDropdownValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12983
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ValuePathSelectorDropdownValueComponent, isStandalone: true, selector: "valtimo-value-path-selector-dropdown-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", dropdownColumnTitle: "dropdownColumnTitle", index: "index", value: "value", dropdownItems$: "dropdownItems$", caseDefinitionKey: "caseDefinitionKey", prefixes: "prefixes", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", 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 path-selector\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey\"\n [prefixes]=\"prefixes\"\n [showCaseDefinitionSelector]=\"showCaseDefinitionSelector\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value?.key\"\n [notation]=\"notation\"\n (valueChangeEvent)=\"onInputChange('key', $event)\"\n ></valtimo-value-path-selector>\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 (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;align-items:flex-end}:host.--full-width{width:100%}:host .process-start-modal-content{padding:16px}\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"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
14311
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ValuePathSelectorDropdownValueComponent, isStandalone: true, selector: "valtimo-value-path-selector-dropdown-value", inputs: { keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", dropdownColumnTitle: "dropdownColumnTitle", index: "index", value: "value", dropdownItems$: "dropdownItems$", caseDefinitionKey: "caseDefinitionKey", prefixes: "prefixes", showCaseDefinitionSelector: "showCaseDefinitionSelector", notation: "notation", 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 path-selector\"\n [ngClass]=\"{'--full-width': fullWidth}\"\n [style.flex]=\"keyColumnFlex\"\n>\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <valtimo-value-path-selector\n [caseDefinitionKey]=\"caseDefinitionKey\"\n [prefixes]=\"prefixes\"\n [showCaseDefinitionSelector]=\"showCaseDefinitionSelector\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value?.key\"\n [notation]=\"notation\"\n (valueChangeEvent)=\"onInputChange('key', $event)\"\n ></valtimo-value-path-selector>\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 (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;align-items:flex-end}:host.--full-width{width:100%}:host .process-start-modal-content{padding:16px}\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"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
12984
14312
|
}
|
|
12985
14313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ValuePathSelectorDropdownValueComponent, decorators: [{
|
|
12986
14314
|
type: Component,
|
|
@@ -13240,277 +14568,117 @@ class CarbonMultiInputComponent {
|
|
|
13240
14568
|
case 'keyValue':
|
|
13241
14569
|
case 'keyValuePathSelector':
|
|
13242
14570
|
case 'valuePathSelectorValue':
|
|
13243
|
-
return !!(value.value || value.key);
|
|
13244
|
-
case 'keyDropdownValue':
|
|
13245
|
-
case 'valuePathSelectorDropdownValue':
|
|
13246
|
-
return !!(value.value &&
|
|
13247
|
-
value.key &&
|
|
13248
|
-
value.dropdown);
|
|
13249
|
-
case 'arbitraryAmount':
|
|
13250
|
-
const objectValues = Object.values(value);
|
|
13251
|
-
const positiveValuesAmount = objectValues.filter(objectValue => !!objectValue);
|
|
13252
|
-
return objectValues.length === positiveValuesAmount.length;
|
|
13253
|
-
default:
|
|
13254
|
-
return false;
|
|
13255
|
-
}
|
|
13256
|
-
}
|
|
13257
|
-
openDefaultValuesSubscription() {
|
|
13258
|
-
this._subscriptions.add(this._defaultValues$.subscribe(defaultValues => {
|
|
13259
|
-
if (defaultValues.length < this.minimumAmountOfRows)
|
|
13260
|
-
return;
|
|
13261
|
-
this.values$.next(defaultValues.map(defaultValue => ({ ...defaultValue, uuid: v4() })));
|
|
13262
|
-
}));
|
|
13263
|
-
}
|
|
13264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonMultiInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13265
|
-
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: [
|
|
13266
|
-
{
|
|
13267
|
-
provide: NG_VALUE_ACCESSOR,
|
|
13268
|
-
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
13269
|
-
multi: true,
|
|
13270
|
-
},
|
|
13271
|
-
], 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 }); }
|
|
13272
|
-
}
|
|
13273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CarbonMultiInputComponent, decorators: [{
|
|
13274
|
-
type: Component,
|
|
13275
|
-
args: [{ selector: 'valtimo-carbon-multi-input', encapsulation: ViewEncapsulation.None, standalone: false, providers: [
|
|
13276
|
-
{
|
|
13277
|
-
provide: NG_VALUE_ACCESSOR,
|
|
13278
|
-
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
13279
|
-
multi: true,
|
|
13280
|
-
},
|
|
13281
|
-
], 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"] }]
|
|
13282
|
-
}], propDecorators: { addRowText: [{
|
|
13283
|
-
type: Input
|
|
13284
|
-
}], addButtonType: [{
|
|
13285
|
-
type: Input
|
|
13286
|
-
}], addRowTranslationKey: [{
|
|
13287
|
-
type: Input
|
|
13288
|
-
}], arbitraryAmountTitles: [{
|
|
13289
|
-
type: Input
|
|
13290
|
-
}], arbitraryValueAmount: [{
|
|
13291
|
-
type: Input
|
|
13292
|
-
}], defaultValues: [{
|
|
13293
|
-
type: Input
|
|
13294
|
-
}], deleteRowText: [{
|
|
13295
|
-
type: Input
|
|
13296
|
-
}], deleteRowTranslationKey: [{
|
|
13297
|
-
type: Input
|
|
13298
|
-
}], disabled: [{
|
|
13299
|
-
type: Input
|
|
13300
|
-
}], dropdownColumnTitle: [{
|
|
13301
|
-
type: Input
|
|
13302
|
-
}], dropdownItems: [{
|
|
13303
|
-
type: Input
|
|
13304
|
-
}], dropdownWidth: [{
|
|
13305
|
-
type: Input
|
|
13306
|
-
}], fullWidth: [{
|
|
13307
|
-
type: Input
|
|
13308
|
-
}], hideAddButton: [{
|
|
13309
|
-
type: Input
|
|
13310
|
-
}], hideDeleteButton: [{
|
|
13311
|
-
type: Input
|
|
13312
|
-
}], initialAmountOfRows: [{
|
|
13313
|
-
type: Input
|
|
13314
|
-
}], keyColumnTitle: [{
|
|
13315
|
-
type: Input
|
|
13316
|
-
}], margin: [{
|
|
13317
|
-
type: Input
|
|
13318
|
-
}], maxRows: [{
|
|
13319
|
-
type: Input
|
|
13320
|
-
}], minimumAmountOfRows: [{
|
|
13321
|
-
type: Input
|
|
13322
|
-
}], name: [{
|
|
13323
|
-
type: Input
|
|
13324
|
-
}], required: [{
|
|
13325
|
-
type: Input
|
|
13326
|
-
}], title: [{
|
|
13327
|
-
type: Input
|
|
13328
|
-
}], titleTranslationKey: [{
|
|
13329
|
-
type: Input
|
|
13330
|
-
}], tooltip: [{
|
|
13331
|
-
type: Input
|
|
13332
|
-
}], type: [{
|
|
13333
|
-
type: Input
|
|
13334
|
-
}], valueColumnTitle: [{
|
|
13335
|
-
type: Input
|
|
13336
|
-
}], valuePathSelectorCaseDefinitionKey: [{
|
|
13337
|
-
type: Input
|
|
13338
|
-
}], valuePathSelectorPrefixes: [{
|
|
13339
|
-
type: Input
|
|
13340
|
-
}], valuePathSelectorShowCaseDefinitionSelector: [{
|
|
13341
|
-
type: Input
|
|
13342
|
-
}], valuePathSelectorNotation: [{
|
|
13343
|
-
type: Input
|
|
13344
|
-
}], keyColumnFlex: [{
|
|
13345
|
-
type: Input
|
|
13346
|
-
}], dropdownColumnFlex: [{
|
|
13347
|
-
type: Input
|
|
13348
|
-
}], valueColumnFlex: [{
|
|
13349
|
-
type: Input
|
|
13350
|
-
}], valueChange: [{
|
|
13351
|
-
type: Output
|
|
13352
|
-
}], allValuesValidEvent: [{
|
|
13353
|
-
type: Output
|
|
13354
|
-
}] } });
|
|
13355
|
-
|
|
13356
|
-
/*
|
|
13357
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
13358
|
-
*
|
|
13359
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
13360
|
-
* you may not use this file except in compliance with the License.
|
|
13361
|
-
* You may obtain a copy of the License at
|
|
13362
|
-
*
|
|
13363
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
13364
|
-
*
|
|
13365
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
13366
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
13367
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13368
|
-
* See the License for the specific language governing permissions and
|
|
13369
|
-
* limitations under the License.
|
|
13370
|
-
*/
|
|
13371
|
-
/**
|
|
13372
|
-
* @deprecated Migrate old design to Carbon
|
|
13373
|
-
*/
|
|
13374
|
-
class DatePickerComponent {
|
|
13375
|
-
set fullWidth(value) {
|
|
13376
|
-
this.fullWidthClass = value;
|
|
13377
|
-
}
|
|
13378
|
-
set defaultDate(value) {
|
|
13379
|
-
this.dateValue$.next(value);
|
|
13380
|
-
}
|
|
13381
|
-
constructor(translateService) {
|
|
13382
|
-
this.translateService = translateService;
|
|
13383
|
-
this.fullWidthClass = false;
|
|
13384
|
-
this.name = '';
|
|
13385
|
-
this.title = '';
|
|
13386
|
-
this.placeholder = '';
|
|
13387
|
-
this.titleTranslationKey = '';
|
|
13388
|
-
this.margin = false;
|
|
13389
|
-
this.disabled = false;
|
|
13390
|
-
this.tooltip = '';
|
|
13391
|
-
this.required = false;
|
|
13392
|
-
this.smallLabel = false;
|
|
13393
|
-
this.enableTime = false;
|
|
13394
|
-
this.carbonTheme = 'g10';
|
|
13395
|
-
this.valueChange = new EventEmitter();
|
|
13396
|
-
this.dateValue$ = new BehaviorSubject('');
|
|
13397
|
-
this._subscriptions = new Subscription();
|
|
13398
|
-
this.onChange = (selectedDates, dateStr) => {
|
|
13399
|
-
this.dateValue$.next(dateStr);
|
|
13400
|
-
};
|
|
13401
|
-
}
|
|
13402
|
-
ngAfterViewInit() {
|
|
13403
|
-
this.openLocaleSubscription();
|
|
13404
|
-
this.openDateValueSubscription();
|
|
13405
|
-
this.openClearSubscription();
|
|
13406
|
-
}
|
|
13407
|
-
ngOnDestroy() {
|
|
13408
|
-
this._subscriptions.unsubscribe();
|
|
13409
|
-
}
|
|
13410
|
-
openLocaleSubscription() {
|
|
13411
|
-
this._subscriptions.add(this.translateService.stream('key').subscribe(() => {
|
|
13412
|
-
this.setFlatpickrInstance(this.translateService.currentLang);
|
|
13413
|
-
}));
|
|
13414
|
-
}
|
|
13415
|
-
openDateValueSubscription() {
|
|
13416
|
-
this._subscriptions.add(this.dateValue$.subscribe(dateValue => {
|
|
13417
|
-
this.valueChange.emit(dateValue);
|
|
13418
|
-
}));
|
|
13419
|
-
}
|
|
13420
|
-
setFlatpickrInstance(localeKey) {
|
|
13421
|
-
this._flatpickrInstance?.destroy();
|
|
13422
|
-
this._flatpickrInstance = flatpickr(this.datePickerElement.nativeElement, {
|
|
13423
|
-
locale: this.getLocale(localeKey),
|
|
13424
|
-
onChange: [this.onChange],
|
|
13425
|
-
defaultDate: this.getFlatpickrValue(),
|
|
13426
|
-
enableTime: this.enableTime,
|
|
13427
|
-
});
|
|
13428
|
-
this.emitDate();
|
|
13429
|
-
}
|
|
13430
|
-
emitDate() {
|
|
13431
|
-
const currentDate = this._flatpickrInstance.selectedDates[0];
|
|
13432
|
-
const formattedDate = currentDate && this._flatpickrInstance.formatDate(currentDate, 'Y-m-d');
|
|
13433
|
-
if (formattedDate) {
|
|
13434
|
-
this.dateValue$.next(formattedDate);
|
|
13435
|
-
}
|
|
13436
|
-
}
|
|
13437
|
-
getFlatpickrValue() {
|
|
13438
|
-
const savedValue = this.dateValue$.getValue();
|
|
13439
|
-
const todayDate = this.defaultDateIsToday && new Date();
|
|
13440
|
-
const defaultDate = this.defaultDate;
|
|
13441
|
-
return todayDate || defaultDate || savedValue;
|
|
13442
|
-
}
|
|
13443
|
-
getLocale(localeKey) {
|
|
13444
|
-
let locale;
|
|
13445
|
-
switch (localeKey) {
|
|
13446
|
-
case 'nl':
|
|
13447
|
-
locale = Dutch;
|
|
13448
|
-
break;
|
|
13449
|
-
case 'de':
|
|
13450
|
-
locale = German;
|
|
13451
|
-
break;
|
|
13452
|
-
case 'en':
|
|
13453
|
-
locale = english;
|
|
13454
|
-
break;
|
|
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;
|
|
13455
14581
|
default:
|
|
13456
|
-
|
|
13457
|
-
break;
|
|
14582
|
+
return false;
|
|
13458
14583
|
}
|
|
13459
|
-
return locale;
|
|
13460
14584
|
}
|
|
13461
|
-
|
|
13462
|
-
|
|
13463
|
-
|
|
13464
|
-
|
|
13465
|
-
}));
|
|
13466
|
-
}
|
|
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
|
+
}));
|
|
13467
14591
|
}
|
|
13468
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type:
|
|
13469
|
-
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 }); }
|
|
13470
14600
|
}
|
|
13471
|
-
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: [{
|
|
13472
14602
|
type: Component,
|
|
13473
|
-
args: [{ selector: '
|
|
13474
|
-
|
|
13475
|
-
|
|
13476
|
-
|
|
13477
|
-
|
|
13478
|
-
|
|
13479
|
-
|
|
13480
|
-
|
|
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: [{
|
|
13481
14611
|
type: Input
|
|
13482
|
-
}],
|
|
14612
|
+
}], addButtonType: [{
|
|
13483
14613
|
type: Input
|
|
13484
|
-
}],
|
|
14614
|
+
}], addRowTranslationKey: [{
|
|
13485
14615
|
type: Input
|
|
13486
|
-
}],
|
|
14616
|
+
}], arbitraryAmountTitles: [{
|
|
13487
14617
|
type: Input
|
|
13488
|
-
}],
|
|
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: [{
|
|
13489
14633
|
type: Input
|
|
13490
14634
|
}], fullWidth: [{
|
|
13491
14635
|
type: Input
|
|
14636
|
+
}], hideAddButton: [{
|
|
14637
|
+
type: Input
|
|
14638
|
+
}], hideDeleteButton: [{
|
|
14639
|
+
type: Input
|
|
14640
|
+
}], initialAmountOfRows: [{
|
|
14641
|
+
type: Input
|
|
14642
|
+
}], keyColumnTitle: [{
|
|
14643
|
+
type: Input
|
|
13492
14644
|
}], margin: [{
|
|
13493
14645
|
type: Input
|
|
13494
|
-
}],
|
|
14646
|
+
}], maxRows: [{
|
|
13495
14647
|
type: Input
|
|
13496
|
-
}],
|
|
14648
|
+
}], minimumAmountOfRows: [{
|
|
14649
|
+
type: Input
|
|
14650
|
+
}], name: [{
|
|
13497
14651
|
type: Input
|
|
13498
14652
|
}], required: [{
|
|
13499
14653
|
type: Input
|
|
13500
|
-
}],
|
|
14654
|
+
}], title: [{
|
|
13501
14655
|
type: Input
|
|
13502
|
-
}],
|
|
14656
|
+
}], titleTranslationKey: [{
|
|
13503
14657
|
type: Input
|
|
13504
|
-
}],
|
|
14658
|
+
}], tooltip: [{
|
|
13505
14659
|
type: Input
|
|
13506
|
-
}],
|
|
14660
|
+
}], type: [{
|
|
13507
14661
|
type: Input
|
|
13508
|
-
}],
|
|
14662
|
+
}], valueColumnTitle: [{
|
|
13509
14663
|
type: Input
|
|
13510
|
-
}],
|
|
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: [{
|
|
13511
14677
|
type: Input
|
|
13512
14678
|
}], valueChange: [{
|
|
13513
14679
|
type: Output
|
|
14680
|
+
}], allValuesValidEvent: [{
|
|
14681
|
+
type: Output
|
|
13514
14682
|
}] } });
|
|
13515
14683
|
|
|
13516
14684
|
/*
|
|
@@ -14228,38 +15396,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
14228
15396
|
type: Output
|
|
14229
15397
|
}] } });
|
|
14230
15398
|
|
|
14231
|
-
/*
|
|
14232
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14233
|
-
*
|
|
14234
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14235
|
-
* you may not use this file except in compliance with the License.
|
|
14236
|
-
* You may obtain a copy of the License at
|
|
14237
|
-
*
|
|
14238
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14239
|
-
*
|
|
14240
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14241
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
14242
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14243
|
-
* See the License for the specific language governing permissions and
|
|
14244
|
-
* limitations under the License.
|
|
14245
|
-
*/
|
|
14246
|
-
/**
|
|
14247
|
-
* @deprecated Migrate old design to Carbon
|
|
14248
|
-
*/
|
|
14249
|
-
class DatePickerModule {
|
|
14250
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14251
|
-
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] }); }
|
|
14252
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1] }); }
|
|
14253
|
-
}
|
|
14254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DatePickerModule, decorators: [{
|
|
14255
|
-
type: NgModule,
|
|
14256
|
-
args: [{
|
|
14257
|
-
declarations: [DatePickerComponent],
|
|
14258
|
-
imports: [CommonModule, InputLabelModule, FormsModule, TranslateModule, InputModule$1],
|
|
14259
|
-
exports: [DatePickerComponent],
|
|
14260
|
-
}]
|
|
14261
|
-
}] });
|
|
14262
|
-
|
|
14263
15399
|
/*
|
|
14264
15400
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14265
15401
|
*
|
|
@@ -14289,87 +15425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
14289
15425
|
}]
|
|
14290
15426
|
}] });
|
|
14291
15427
|
|
|
14292
|
-
/*
|
|
14293
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14294
|
-
*
|
|
14295
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14296
|
-
* you may not use this file except in compliance with the License.
|
|
14297
|
-
* You may obtain a copy of the License at
|
|
14298
|
-
*
|
|
14299
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14300
|
-
*
|
|
14301
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14302
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
14303
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14304
|
-
* See the License for the specific language governing permissions and
|
|
14305
|
-
* limitations under the License.
|
|
14306
|
-
*/
|
|
14307
|
-
class InputModule {
|
|
14308
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14309
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: InputModule, declarations: [InputComponent, DigitOnlyDirective], imports: [CommonModule,
|
|
14310
|
-
TranslateModule,
|
|
14311
|
-
FormsModule,
|
|
14312
|
-
InputLabelModule,
|
|
14313
|
-
ButtonModule,
|
|
14314
|
-
CheckboxModule,
|
|
14315
|
-
InputModule$1,
|
|
14316
|
-
IconModule], exports: [InputComponent] }); }
|
|
14317
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, imports: [CommonModule,
|
|
14318
|
-
TranslateModule,
|
|
14319
|
-
FormsModule,
|
|
14320
|
-
InputLabelModule,
|
|
14321
|
-
ButtonModule,
|
|
14322
|
-
CheckboxModule,
|
|
14323
|
-
InputModule$1,
|
|
14324
|
-
IconModule] }); }
|
|
14325
|
-
}
|
|
14326
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputModule, decorators: [{
|
|
14327
|
-
type: NgModule,
|
|
14328
|
-
args: [{
|
|
14329
|
-
declarations: [InputComponent, DigitOnlyDirective],
|
|
14330
|
-
imports: [
|
|
14331
|
-
CommonModule,
|
|
14332
|
-
TranslateModule,
|
|
14333
|
-
FormsModule,
|
|
14334
|
-
InputLabelModule,
|
|
14335
|
-
ButtonModule,
|
|
14336
|
-
CheckboxModule,
|
|
14337
|
-
InputModule$1,
|
|
14338
|
-
IconModule,
|
|
14339
|
-
],
|
|
14340
|
-
exports: [InputComponent],
|
|
14341
|
-
}]
|
|
14342
|
-
}] });
|
|
14343
|
-
|
|
14344
|
-
/*
|
|
14345
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14346
|
-
*
|
|
14347
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
14348
|
-
* you may not use this file except in compliance with the License.
|
|
14349
|
-
* You may obtain a copy of the License at
|
|
14350
|
-
*
|
|
14351
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
14352
|
-
*
|
|
14353
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14354
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
14355
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14356
|
-
* See the License for the specific language governing permissions and
|
|
14357
|
-
* limitations under the License.
|
|
14358
|
-
*/
|
|
14359
|
-
class SelectModule {
|
|
14360
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14361
|
-
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] }); }
|
|
14362
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule] }); }
|
|
14363
|
-
}
|
|
14364
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectModule, decorators: [{
|
|
14365
|
-
type: NgModule,
|
|
14366
|
-
args: [{
|
|
14367
|
-
declarations: [SelectComponent],
|
|
14368
|
-
imports: [CommonModule, FormsModule, TranslateModule, InputLabelModule, ComboBoxModule],
|
|
14369
|
-
exports: [SelectComponent],
|
|
14370
|
-
}]
|
|
14371
|
-
}] });
|
|
14372
|
-
|
|
14373
15428
|
/*
|
|
14374
15429
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
14375
15430
|
*
|
|
@@ -15132,35 +16187,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
15132
16187
|
* limitations under the License.
|
|
15133
16188
|
*/
|
|
15134
16189
|
class FitPageDirective {
|
|
15135
|
-
constructor(elementRef, pageHeaderService, renderer, document) {
|
|
16190
|
+
constructor(elementRef, pageHeaderService, renderer, ngZone, document) {
|
|
15136
16191
|
this.elementRef = elementRef;
|
|
15137
16192
|
this.pageHeaderService = pageHeaderService;
|
|
15138
16193
|
this.renderer = renderer;
|
|
16194
|
+
this.ngZone = ngZone;
|
|
15139
16195
|
this.document = document;
|
|
16196
|
+
/**
|
|
16197
|
+
* @deprecated Kept for backwards compatibility. The height is now derived from the element's
|
|
16198
|
+
* actual top offset, which already accounts for any content above it, so this is no longer
|
|
16199
|
+
* needed. New usages should rely on `bottomMargin` instead.
|
|
16200
|
+
*/
|
|
15140
16201
|
this.spaceAdjustment = 0;
|
|
15141
16202
|
this.fitPageDisabled = false;
|
|
15142
16203
|
this.disableOverflow = false;
|
|
16204
|
+
/**
|
|
16205
|
+
* Amount of whitespace (in px) kept between the element's bottom edge and the viewport bottom.
|
|
16206
|
+
* The height is computed from the element's actual top offset, so this gap is preserved
|
|
16207
|
+
* regardless of header height, compact mode, or any content rendered above the element.
|
|
16208
|
+
*/
|
|
16209
|
+
this.bottomMargin = 24;
|
|
15143
16210
|
this._subscriptions = new Subscription();
|
|
16211
|
+
this._rafId = null;
|
|
16212
|
+
this._lastTopOffset = null;
|
|
16213
|
+
this._settleFrames = 0;
|
|
15144
16214
|
}
|
|
15145
16215
|
ngAfterViewInit() {
|
|
15146
|
-
|
|
15147
|
-
|
|
15148
|
-
|
|
15149
|
-
|
|
15150
|
-
|
|
15151
|
-
|
|
15152
|
-
|
|
15153
|
-
this.
|
|
15154
|
-
|
|
15155
|
-
|
|
15156
|
-
|
|
15157
|
-
|
|
15158
|
-
}));
|
|
16216
|
+
// Run outside Angular: the recompute only mutates styles, so it should not trigger change
|
|
16217
|
+
// detection on every header update, window resize, or animation frame.
|
|
16218
|
+
this.ngZone.runOutsideAngular(() => {
|
|
16219
|
+
this._subscriptions.add(
|
|
16220
|
+
// pageHeadHeight$/compactMode$ recompute when the header changes; the window resize
|
|
16221
|
+
// trigger recomputes when chrome above the element reflows at a different viewport size.
|
|
16222
|
+
combineLatest([
|
|
16223
|
+
this.pageHeaderService.pageHeadHeight$,
|
|
16224
|
+
this.pageHeaderService.compactMode$,
|
|
16225
|
+
fromEvent(window, 'resize').pipe(startWith$1(null)),
|
|
16226
|
+
]).subscribe(() => this.scheduleFitPageHeight()));
|
|
16227
|
+
});
|
|
15159
16228
|
}
|
|
15160
16229
|
ngOnDestroy() {
|
|
15161
16230
|
this._subscriptions.unsubscribe();
|
|
16231
|
+
this.cancelScheduledFrame();
|
|
15162
16232
|
this.removeDocumentOverflowStyle();
|
|
15163
16233
|
}
|
|
16234
|
+
/**
|
|
16235
|
+
* Measures on the next frame(s) instead of synchronously, then keeps re-measuring until the
|
|
16236
|
+
* element's top offset stops changing. Content above the element (tabs, toolbars, async
|
|
16237
|
+
* editors) may not have laid out yet when the trigger fires, so the first measurement can be
|
|
16238
|
+
* stale — previously this only corrected itself after a manual window resize.
|
|
16239
|
+
*/
|
|
16240
|
+
scheduleFitPageHeight() {
|
|
16241
|
+
this._settleFrames = 0;
|
|
16242
|
+
this._lastTopOffset = null;
|
|
16243
|
+
this.queueFrame();
|
|
16244
|
+
}
|
|
16245
|
+
queueFrame() {
|
|
16246
|
+
this.cancelScheduledFrame();
|
|
16247
|
+
this._rafId = requestAnimationFrame(() => {
|
|
16248
|
+
this._rafId = null;
|
|
16249
|
+
const settled = this.applyFitPageHeight();
|
|
16250
|
+
if (!settled && this._settleFrames < 10) {
|
|
16251
|
+
this._settleFrames++;
|
|
16252
|
+
this.queueFrame();
|
|
16253
|
+
}
|
|
16254
|
+
});
|
|
16255
|
+
}
|
|
16256
|
+
cancelScheduledFrame() {
|
|
16257
|
+
if (this._rafId !== null) {
|
|
16258
|
+
cancelAnimationFrame(this._rafId);
|
|
16259
|
+
this._rafId = null;
|
|
16260
|
+
}
|
|
16261
|
+
}
|
|
16262
|
+
/** Applies the height and returns whether the top offset has stabilized since the last frame. */
|
|
16263
|
+
applyFitPageHeight() {
|
|
16264
|
+
const nativeElement = this.elementRef?.nativeElement;
|
|
16265
|
+
if (!nativeElement || this.fitPageDisabled) {
|
|
16266
|
+
this.removeDocumentOverflowStyle();
|
|
16267
|
+
return true;
|
|
16268
|
+
}
|
|
16269
|
+
this.addDocumentOverflowStyle();
|
|
16270
|
+
const topOffset = Math.round(nativeElement.getBoundingClientRect().top);
|
|
16271
|
+
const settled = topOffset === this._lastTopOffset;
|
|
16272
|
+
this._lastTopOffset = topOffset;
|
|
16273
|
+
this.renderer.setStyle(nativeElement, 'height', `calc(100vh - ${topOffset + this.spaceAdjustment + this.bottomMargin}px)`);
|
|
16274
|
+
return settled;
|
|
16275
|
+
}
|
|
15164
16276
|
addDocumentOverflowStyle() {
|
|
15165
16277
|
if (!this.disableOverflow)
|
|
15166
16278
|
return;
|
|
@@ -15171,13 +16283,13 @@ class FitPageDirective {
|
|
|
15171
16283
|
return;
|
|
15172
16284
|
this.renderer.removeStyle(this.document.documentElement, 'overflow');
|
|
15173
16285
|
}
|
|
15174
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FitPageDirective, deps: [{ token: i0.ElementRef }, { token: PageHeaderService }, { token: i0.Renderer2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15175
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: FitPageDirective, isStandalone: true, selector: "[fitPage]", inputs: { spaceAdjustment: "spaceAdjustment", fitPageDisabled: "fitPageDisabled", disableOverflow: "disableOverflow" }, ngImport: i0 }); }
|
|
16286
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FitPageDirective, deps: [{ token: i0.ElementRef }, { token: PageHeaderService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
16287
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: FitPageDirective, isStandalone: true, selector: "[fitPage]", inputs: { spaceAdjustment: "spaceAdjustment", fitPageDisabled: "fitPageDisabled", disableOverflow: "disableOverflow", bottomMargin: "bottomMargin" }, ngImport: i0 }); }
|
|
15176
16288
|
}
|
|
15177
16289
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FitPageDirective, decorators: [{
|
|
15178
16290
|
type: Directive,
|
|
15179
16291
|
args: [{ selector: '[fitPage]', standalone: true }]
|
|
15180
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: PageHeaderService }, { type: i0.Renderer2 }, { type: Document, decorators: [{
|
|
16292
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: PageHeaderService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: Document, decorators: [{
|
|
15181
16293
|
type: Inject,
|
|
15182
16294
|
args: [DOCUMENT]
|
|
15183
16295
|
}] }], propDecorators: { spaceAdjustment: [{
|
|
@@ -15186,6 +16298,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
15186
16298
|
type: Input
|
|
15187
16299
|
}], disableOverflow: [{
|
|
15188
16300
|
type: Input
|
|
16301
|
+
}], bottomMargin: [{
|
|
16302
|
+
type: Input
|
|
15189
16303
|
}] } });
|
|
15190
16304
|
|
|
15191
16305
|
/*
|
|
@@ -15221,7 +16335,6 @@ class EditorComponent {
|
|
|
15221
16335
|
this.shellService = shellService;
|
|
15222
16336
|
this.formatOnLoad = true;
|
|
15223
16337
|
this.fitPage = false;
|
|
15224
|
-
this.fitPageSpaceAdjustment = 0;
|
|
15225
16338
|
this.validEvent = new EventEmitter();
|
|
15226
16339
|
this.valueChangeEvent = new EventEmitter();
|
|
15227
16340
|
this._formatting = false;
|
|
@@ -15357,11 +16470,11 @@ class EditorComponent {
|
|
|
15357
16470
|
}
|
|
15358
16471
|
}
|
|
15359
16472
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorComponent, deps: [{ token: EditorService }, { token: ShellService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15360
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: EditorComponent, isStandalone: false, selector: "valtimo-editor", inputs: { editorOptions: "editorOptions", model: "model", disabled: "disabled", formatOnLoad: "formatOnLoad", widthPx: "widthPx", heightPx: "heightPx", heightStyle: "heightStyle", jsonSchema: "jsonSchema", fitPage: "fitPage"
|
|
16473
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: EditorComponent, isStandalone: false, selector: "valtimo-editor", inputs: { editorOptions: "editorOptions", model: "model", disabled: "disabled", formatOnLoad: "formatOnLoad", widthPx: "widthPx", heightPx: "heightPx", heightStyle: "heightStyle", jsonSchema: "jsonSchema", fitPage: "fitPage" }, outputs: { validEvent: "validEvent", valueChangeEvent: "valueChangeEvent" }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, 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=\"editor-container\"\n #editorContainer\n [style.width.px]=\"widthPx\"\n [style.height.px]=\"!fitPage && heightPx\"\n [style.height]=\"!fitPage && heightStyle\"\n fitPage\n [fitPageDisabled]=\"!fitPage\"\n></div>\n", styles: [".editor-container{width:100%;height:calc(100vh - 219px)}\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: FitPageDirective, selector: "[fitPage]", inputs: ["spaceAdjustment", "fitPageDisabled", "disableOverflow", "bottomMargin"] }] }); }
|
|
15361
16474
|
}
|
|
15362
16475
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorComponent, decorators: [{
|
|
15363
16476
|
type: Component,
|
|
15364
|
-
args: [{ selector: 'valtimo-editor', 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=\"editor-container\"\n #editorContainer\n [style.width.px]=\"widthPx\"\n [style.height.px]=\"!fitPage && heightPx\"\n [style.height]=\"!fitPage && heightStyle\"\n fitPage\n [fitPageDisabled]=\"!fitPage\"\n
|
|
16477
|
+
args: [{ selector: 'valtimo-editor', 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=\"editor-container\"\n #editorContainer\n [style.width.px]=\"widthPx\"\n [style.height.px]=\"!fitPage && heightPx\"\n [style.height]=\"!fitPage && heightStyle\"\n fitPage\n [fitPageDisabled]=\"!fitPage\"\n></div>\n", styles: [".editor-container{width:100%;height:calc(100vh - 219px)}\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"] }]
|
|
15365
16478
|
}], ctorParameters: () => [{ type: EditorService }, { type: ShellService }], propDecorators: { editorContainer: [{
|
|
15366
16479
|
type: ViewChild,
|
|
15367
16480
|
args: ['editorContainer', { static: true }]
|
|
@@ -15383,8 +16496,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
15383
16496
|
type: Input
|
|
15384
16497
|
}], fitPage: [{
|
|
15385
16498
|
type: Input
|
|
15386
|
-
}], fitPageSpaceAdjustment: [{
|
|
15387
|
-
type: Input
|
|
15388
16499
|
}], validEvent: [{
|
|
15389
16500
|
type: Output
|
|
15390
16501
|
}], valueChangeEvent: [{
|
|
@@ -16662,7 +17773,6 @@ class JsonEditorComponent {
|
|
|
16662
17773
|
this.iconService = iconService;
|
|
16663
17774
|
this._disabled = signal(false);
|
|
16664
17775
|
this.fitPage = false;
|
|
16665
|
-
this.fitPageSpaceAdjustment = 0;
|
|
16666
17776
|
this.formatOnLoad = true;
|
|
16667
17777
|
this.showEditButton = true;
|
|
16668
17778
|
this.changeEvent = new EventEmitter();
|
|
@@ -16718,7 +17828,7 @@ class JsonEditorComponent {
|
|
|
16718
17828
|
this.isEditActive.set(false);
|
|
16719
17829
|
}
|
|
16720
17830
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: JsonEditorComponent, deps: [{ token: i2$3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16721
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: JsonEditorComponent, isStandalone: true, selector: "valtimo-json-editor", inputs: { disabled: "disabled", model: "model", editorOptions: "editorOptions", fitPage: "fitPage",
|
|
17831
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: JsonEditorComponent, isStandalone: true, selector: "valtimo-json-editor", inputs: { disabled: "disabled", model: "model", editorOptions: "editorOptions", fitPage: "fitPage", formatOnLoad: "formatOnLoad", heightPx: "heightPx", heightStyle: "heightStyle", jsonSchema: "jsonSchema", showEditButton: "showEditButton", widthPx: "widthPx" }, outputs: { changeEvent: "changeEvent", discardEvent: "discardEvent", keepEditingEvent: "keepEditingEvent", saveEvent: "saveEvent" }, 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=\"cds--toolbar-content\">\n @if (isEditActive()) {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\" [attr.data-test-id]=\"testIds.cancelButton\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isValidJson()\"\n (click)=\"onSaveClick()\"\n [attr.data-test-id]=\"testIds.saveButton\"\n >\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <ng-content></ng-content>\n\n <button\n *ngIf=\"showEditButton\"\n cdsButton=\"primary\"\n [disabled]=\"disableEditButton\"\n (click)=\"onEditClick()\"\n [attr.data-test-id]=\"testIds.editButton\"\n >\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n [disabled]=\"isDisabled()\"\n [fitPage]=\"fitPage\"\n [formatOnLoad]=\"formatOnLoad\"\n [heightPx]=\"heightPx\"\n [heightStyle]=\"heightStyle\"\n [jsonSchema]=\"jsonSchema\"\n [model]=\"model\"\n [widthPx]=\"widthPx\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n>\n</valtimo-editor>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmationModal$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"interface.jsonEditor.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"onKeepEditingDefinition()\"\n (confirmEvent)=\"onSaveChanges()\"\n [attr.data-test-id]=\"testIds.saveConfirmationModal\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showCancelConfirmationModal$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"interface.jsonEditor.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"interface.jsonEditor.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"onKeepEditingDefinition()\"\n (confirmEvent)=\"onDiscardChanges()\"\n (optionalEvent)=\"onSaveChanges()\"\n [attr.data-test-id]=\"testIds.cancelConfirmationModal\"\n></valtimo-confirmation-modal>\n", styles: [".cds--toolbar-content{background-color:var(--cds-layer)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage"], outputs: ["validEvent", "valueChangeEvent"] }, { 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: ConfirmationModalModule }, { kind: "component", type: ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16722
17832
|
}
|
|
16723
17833
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: JsonEditorComponent, decorators: [{
|
|
16724
17834
|
type: Component,
|
|
@@ -16729,7 +17839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
16729
17839
|
IconModule,
|
|
16730
17840
|
TranslateModule,
|
|
16731
17841
|
ConfirmationModalModule,
|
|
16732
|
-
], 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=\"cds--toolbar-content\">\n @if (isEditActive()) {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\" [attr.data-test-id]=\"testIds.cancelButton\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isValidJson()\"\n (click)=\"onSaveClick()\"\n [attr.data-test-id]=\"testIds.saveButton\"\n >\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <ng-content></ng-content>\n\n <button\n *ngIf=\"showEditButton\"\n cdsButton=\"primary\"\n [disabled]=\"disableEditButton\"\n (click)=\"onEditClick()\"\n [attr.data-test-id]=\"testIds.editButton\"\n >\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n [disabled]=\"isDisabled()\"\n [fitPage]=\"fitPage\"\n [
|
|
17842
|
+
], 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=\"cds--toolbar-content\">\n @if (isEditActive()) {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\" [attr.data-test-id]=\"testIds.cancelButton\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isValidJson()\"\n (click)=\"onSaveClick()\"\n [attr.data-test-id]=\"testIds.saveButton\"\n >\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <ng-content></ng-content>\n\n <button\n *ngIf=\"showEditButton\"\n cdsButton=\"primary\"\n [disabled]=\"disableEditButton\"\n (click)=\"onEditClick()\"\n [attr.data-test-id]=\"testIds.editButton\"\n >\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n [disabled]=\"isDisabled()\"\n [fitPage]=\"fitPage\"\n [formatOnLoad]=\"formatOnLoad\"\n [heightPx]=\"heightPx\"\n [heightStyle]=\"heightStyle\"\n [jsonSchema]=\"jsonSchema\"\n [model]=\"model\"\n [widthPx]=\"widthPx\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n>\n</valtimo-editor>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmationModal$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"interface.jsonEditor.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"onKeepEditingDefinition()\"\n (confirmEvent)=\"onSaveChanges()\"\n [attr.data-test-id]=\"testIds.saveConfirmationModal\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showCancelConfirmationModal$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"interface.jsonEditor.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"interface.jsonEditor.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"onKeepEditingDefinition()\"\n (confirmEvent)=\"onDiscardChanges()\"\n (optionalEvent)=\"onSaveChanges()\"\n [attr.data-test-id]=\"testIds.cancelConfirmationModal\"\n></valtimo-confirmation-modal>\n", styles: [".cds--toolbar-content{background-color:var(--cds-layer)}\n"] }]
|
|
16733
17843
|
}], ctorParameters: () => [{ type: i2$3.IconService }], propDecorators: { disabled: [{
|
|
16734
17844
|
type: Input
|
|
16735
17845
|
}], model: [{
|
|
@@ -16738,8 +17848,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
16738
17848
|
type: Input
|
|
16739
17849
|
}], fitPage: [{
|
|
16740
17850
|
type: Input
|
|
16741
|
-
}], fitPageSpaceAdjustment: [{
|
|
16742
|
-
type: Input
|
|
16743
17851
|
}], formatOnLoad: [{
|
|
16744
17852
|
type: Input
|
|
16745
17853
|
}], heightPx: [{
|
|
@@ -19128,5 +20236,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
19128
20236
|
* Generated bundle index. Do not edit.
|
|
19129
20237
|
*/
|
|
19130
20238
|
|
|
19131
|
-
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 };
|
|
19132
20240
|
//# sourceMappingURL=valtimo-components.mjs.map
|