@valtimo/components 13.2.1 → 13.3.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/fesm2022/valtimo-components.mjs +1149 -835
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/case-tags-selector/case-tags-selector.component.d.ts +4 -4
- package/lib/components/case-tags-selector/case-tags-selector.component.d.ts.map +1 -1
- package/lib/components/date-picker/date-picker.component.d.ts +1 -1
- package/lib/components/date-picker/date-picker.component.d.ts.map +1 -1
- package/lib/components/form-io/components/formio-value-resolver-selector/formio-value-resolver-selector.component.d.ts.map +1 -1
- package/lib/components/input/input.component.d.ts +3 -1
- package/lib/components/input/input.component.d.ts.map +1 -1
- package/lib/components/multi-input/carbon-multi-input.component.d.ts +2 -1
- package/lib/components/multi-input/carbon-multi-input.component.d.ts.map +1 -1
- package/lib/components/quick-search/modal/quick-search-modal.component.d.ts +18 -0
- package/lib/components/quick-search/modal/quick-search-modal.component.d.ts.map +1 -0
- package/lib/components/quick-search/quick-search.component.d.ts +32 -0
- package/lib/components/quick-search/quick-search.component.d.ts.map +1 -0
- package/lib/components/search-fields/search-fields.component.d.ts +9 -3
- package/lib/components/search-fields/search-fields.component.d.ts.map +1 -1
- package/lib/components/status-selector/status-selector.component.d.ts +4 -4
- package/lib/components/status-selector/status-selector.component.d.ts.map +1 -1
- package/lib/components/value-path-selector/value-path-selector.component.d.ts.map +1 -1
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/constants/quick-search.constants.d.ts +4 -0
- package/lib/constants/quick-search.constants.d.ts.map +1 -0
- package/lib/directives/context-menu.directive.d.ts +20 -0
- package/lib/directives/context-menu.directive.d.ts.map +1 -0
- package/lib/interfaces/index.d.ts +2 -0
- package/lib/interfaces/index.d.ts.map +1 -0
- package/lib/interfaces/quick-search-service.interface.d.ts +12 -0
- package/lib/interfaces/quick-search-service.interface.d.ts.map +1 -0
- package/lib/models/index.d.ts +2 -1
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/quick-search.model.d.ts +5 -0
- package/lib/models/quick-search.model.d.ts.map +1 -0
- package/lib/services/index.d.ts +7 -6
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/quick-search-state.service.d.ts +18 -0
- package/lib/services/quick-search-state.service.d.ts.map +1 -0
- package/package.json +1 -1
- package/public_api.d.ts +3 -0
- package/public_api.d.ts.map +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Pipe, NgModule, RendererStyleFlags2, Inject,
|
|
3
|
-
import { combineLatest, map, BehaviorSubject,
|
|
2
|
+
import { InjectionToken, Pipe, NgModule, Injectable, RendererStyleFlags2, Inject, signal, computed, Input, Component, Directive, EventEmitter, Output, ViewContainerRef, ViewChild, HostBinding, ViewEncapsulation, HostListener, inject, ChangeDetectionStrategy, TemplateRef, ContentChild, ElementRef, forwardRef, ViewChildren, ContentChildren } from '@angular/core';
|
|
3
|
+
import { combineLatest, map, BehaviorSubject, Subscription, Observable, filter as filter$1, fromEvent, Subject, take as take$1, of, tap as tap$1, interval, switchMap, startWith, merge, debounceTime as debounceTime$1, timer, first } from 'rxjs';
|
|
4
4
|
import * as i1 from '@ngx-translate/core';
|
|
5
5
|
import { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core';
|
|
6
|
-
import {
|
|
6
|
+
import { filter, map as map$1, take, tap, debounceTime, distinctUntilChanged, takeUntil, switchMap as switchMap$1, delay } from 'rxjs/operators';
|
|
7
|
+
import * as i1$1 from '@angular/common/http';
|
|
8
|
+
import { HttpClient } from '@angular/common/http';
|
|
9
|
+
import * as i1$2 from '@valtimo/shared';
|
|
10
|
+
import { BaseApiService, VERSIONS, HttpLoaderFactory, getCaseManagementRouteParams, UrlUtils, ConfigService } from '@valtimo/shared';
|
|
7
11
|
import * as i1$4 from '@angular/common';
|
|
8
12
|
import { DOCUMENT, CommonModule, registerLocaleData, CurrencyPipe, DecimalPipe, PercentPipe } from '@angular/common';
|
|
9
|
-
import * as i1$1 from '@valtimo/shared';
|
|
10
|
-
import { BaseApiService, VERSIONS, HttpLoaderFactory, getCaseManagementRouteParams, UrlUtils, ConfigService } from '@valtimo/shared';
|
|
11
|
-
import * as i1$2 from '@angular/common/http';
|
|
12
|
-
import { HttpClient } from '@angular/common/http';
|
|
13
13
|
import * as i1$3 from '@angular/router';
|
|
14
14
|
import { NavigationEnd, NavigationStart, ResolveEnd, RouterModule } from '@angular/router';
|
|
15
15
|
import { deepmerge } from 'deepmerge-ts';
|
|
@@ -24,7 +24,7 @@ import moment from 'moment';
|
|
|
24
24
|
import User20 from '@carbon/icons/es/user/20';
|
|
25
25
|
import * as i1$5 from 'keycloak-angular';
|
|
26
26
|
import * as i3 from 'carbon-components-angular';
|
|
27
|
-
import { UIShellModule, IconModule, LinkModule, DialogModule, GridModule, TabsModule, StructuredListModule, ToggleModule, TagModule, DropdownModule, LayerModule, SkeletonModule, LoadingModule, Table, TableHeaderItem, TableItem, TableModel, PaginationModule, TableModule as TableModule$1, ContentSwitcherModule, ButtonModule, ModalModule as ModalModule$1, BreadcrumbModule, InputModule as InputModule$1, CheckboxModule, ComboBoxModule, AccordionModule, ModalButtonType, TilesModule, RadioModule as RadioModule$1, ModalService as ModalService$1 } from 'carbon-components-angular';
|
|
27
|
+
import { UIShellModule, IconModule, LinkModule, DialogModule, GridModule, TabsModule, StructuredListModule, ToggleModule, TagModule, DropdownModule, LayerModule, SkeletonModule, LoadingModule, Table, TableHeaderItem, TableItem, TableModel, PaginationModule, TableModule as TableModule$1, ContentSwitcherModule, ButtonModule, ModalModule as ModalModule$1, BreadcrumbModule, InputModule as InputModule$1, CheckboxModule, ComboBoxModule, AccordionModule, ModalButtonType, TilesModule, RadioModule as RadioModule$1, ModalService as ModalService$1, NotificationModule, ContextMenuModule, TooltipModule as TooltipModule$1 } from 'carbon-components-angular';
|
|
28
28
|
import * as i5 from '@angular/platform-browser';
|
|
29
29
|
import * as i2$1 from 'ngx-skeleton-loader';
|
|
30
30
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
@@ -34,7 +34,7 @@ import * as i11 from '@ng-bootstrap/ng-bootstrap';
|
|
|
34
34
|
import { NgbTooltipModule, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap';
|
|
35
35
|
import * as i3$1 from '@angular/cdk/layout';
|
|
36
36
|
import { LayoutModule } from '@angular/cdk/layout';
|
|
37
|
-
import { ArrowDown16, ArrowUp16, SettingsView16, Draggable16, View16, ViewOff16, ChevronUp16, ChevronDown16, Close16, Add16, Edit16, Save16 } from '@carbon/icons';
|
|
37
|
+
import { ArrowDown16, ArrowUp16, SettingsView16, Draggable16, View16, ViewOff16, ChevronUp16, ChevronDown16, Close16, Add16, Edit16, Save16, TrashCan16 } from '@carbon/icons';
|
|
38
38
|
import localeNl from '@angular/common/locales/nl';
|
|
39
39
|
import moment$1 from 'moment/moment';
|
|
40
40
|
import BpmnViewer from 'bpmn-js';
|
|
@@ -45,10 +45,10 @@ import { jwtDecode } from 'jwt-decode';
|
|
|
45
45
|
import Dropzone from 'dropzone';
|
|
46
46
|
import * as i3$2 from '@valtimo/document';
|
|
47
47
|
import { DocumentModule, DocumentService, InternalCaseStatusUtils, CaseTagsUtils } from '@valtimo/document';
|
|
48
|
-
import { ComponentPortal } from '@angular/cdk/portal';
|
|
48
|
+
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
49
49
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
50
50
|
import * as i1$7 from '@angular/cdk/overlay';
|
|
51
|
-
import { OverlayModule } from '@angular/cdk/overlay';
|
|
51
|
+
import { OverlayModule, Overlay } from '@angular/cdk/overlay';
|
|
52
52
|
import Currency from '@tadashi/currency';
|
|
53
53
|
import * as i2$2 from 'ngx-spinner';
|
|
54
54
|
import { NgxSpinnerModule } from 'ngx-spinner';
|
|
@@ -609,22 +609,6 @@ class TimelineItemImpl {
|
|
|
609
609
|
* limitations under the License.
|
|
610
610
|
*/
|
|
611
611
|
|
|
612
|
-
/*
|
|
613
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
614
|
-
*
|
|
615
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
616
|
-
* you may not use this file except in compliance with the License.
|
|
617
|
-
* You may obtain a copy of the License at
|
|
618
|
-
*
|
|
619
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
620
|
-
*
|
|
621
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
622
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
623
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
624
|
-
* See the License for the specific language governing permissions and
|
|
625
|
-
* limitations under the License.
|
|
626
|
-
*/
|
|
627
|
-
|
|
628
612
|
/*
|
|
629
613
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
630
614
|
*
|
|
@@ -692,6 +676,22 @@ var ValuePathSelectorInputMode;
|
|
|
692
676
|
* limitations under the License.
|
|
693
677
|
*/
|
|
694
678
|
|
|
679
|
+
/*
|
|
680
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
681
|
+
*
|
|
682
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
683
|
+
* you may not use this file except in compliance with the License.
|
|
684
|
+
* You may obtain a copy of the License at
|
|
685
|
+
*
|
|
686
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
687
|
+
*
|
|
688
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
689
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
690
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
691
|
+
* See the License for the specific language governing permissions and
|
|
692
|
+
* limitations under the License.
|
|
693
|
+
*/
|
|
694
|
+
|
|
695
695
|
/*
|
|
696
696
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
697
697
|
*
|
|
@@ -745,6 +745,8 @@ const BOOLEAN_CONVERTER_VALUES = ['Yes', 'No'];
|
|
|
745
745
|
*/
|
|
746
746
|
const CASES_WITHOUT_STATUS_KEY = 'CASES_WITHOUT_STATUS_KEY';
|
|
747
747
|
|
|
748
|
+
const QUICK_SEARCH_SERVICE = new InjectionToken('QUICK_SEARCH_SERVICE');
|
|
749
|
+
|
|
748
750
|
/*
|
|
749
751
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
750
752
|
*
|
|
@@ -937,6 +939,215 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
937
939
|
* limitations under the License.
|
|
938
940
|
*/
|
|
939
941
|
|
|
942
|
+
/*
|
|
943
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
944
|
+
*
|
|
945
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
946
|
+
* you may not use this file except in compliance with the License.
|
|
947
|
+
* You may obtain a copy of the License at
|
|
948
|
+
*
|
|
949
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
950
|
+
*
|
|
951
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
952
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
953
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
954
|
+
* See the License for the specific language governing permissions and
|
|
955
|
+
* limitations under the License.
|
|
956
|
+
*/
|
|
957
|
+
class CdsThemeService {
|
|
958
|
+
get preferredTheme$() {
|
|
959
|
+
return this._preferredTheme$.pipe(filter(theme => !!theme));
|
|
960
|
+
}
|
|
961
|
+
get currentTheme$() {
|
|
962
|
+
return this._currentTheme$.pipe(filter(theme => !!theme));
|
|
963
|
+
}
|
|
964
|
+
get toggletipTheme$() {
|
|
965
|
+
return this.currentTheme$.pipe(map$1(currentTheme => currentTheme === CurrentCarbonTheme.G10 ? CurrentCarbonTheme.G90 : CurrentCarbonTheme.WHITE));
|
|
966
|
+
}
|
|
967
|
+
constructor() {
|
|
968
|
+
this._preferredTheme$ = new BehaviorSubject(SelectableCarbonTheme.G10);
|
|
969
|
+
this._currentTheme$ = new BehaviorSubject(null);
|
|
970
|
+
this._subscriptions = new Subscription();
|
|
971
|
+
this.openDarkModeSubscription();
|
|
972
|
+
}
|
|
973
|
+
ngOnDestroy() {
|
|
974
|
+
this._subscriptions.unsubscribe();
|
|
975
|
+
}
|
|
976
|
+
setPreferredTheme(selectedTheme) {
|
|
977
|
+
if (selectedTheme)
|
|
978
|
+
this._preferredTheme$.next(selectedTheme);
|
|
979
|
+
}
|
|
980
|
+
openDarkModeSubscription() {
|
|
981
|
+
combineLatest([this.getBrowserPrefersDarkModeObservable(), this.preferredTheme$]).subscribe(([browserPrefersDarkMode, preferredTheme]) => {
|
|
982
|
+
switch (preferredTheme) {
|
|
983
|
+
case SelectableCarbonTheme.SYSTEM:
|
|
984
|
+
if (browserPrefersDarkMode) {
|
|
985
|
+
this.setThemeOnDocument(CurrentCarbonTheme.G90);
|
|
986
|
+
}
|
|
987
|
+
else {
|
|
988
|
+
this.setThemeOnDocument(CurrentCarbonTheme.G10);
|
|
989
|
+
}
|
|
990
|
+
break;
|
|
991
|
+
case SelectableCarbonTheme.G10:
|
|
992
|
+
this.setThemeOnDocument(CurrentCarbonTheme.G10);
|
|
993
|
+
break;
|
|
994
|
+
case SelectableCarbonTheme.G90:
|
|
995
|
+
this.setThemeOnDocument(CurrentCarbonTheme.G90);
|
|
996
|
+
break;
|
|
997
|
+
}
|
|
998
|
+
});
|
|
999
|
+
}
|
|
1000
|
+
setThemeOnDocument(theme) {
|
|
1001
|
+
document.documentElement.setAttribute('data-carbon-theme', theme);
|
|
1002
|
+
this._currentTheme$.next(theme);
|
|
1003
|
+
}
|
|
1004
|
+
getBrowserPrefersDarkModeObservable(signal) {
|
|
1005
|
+
return new Observable(subscriber => {
|
|
1006
|
+
if (!window.matchMedia) {
|
|
1007
|
+
subscriber.error(new Error('No windows Media Match available'));
|
|
1008
|
+
}
|
|
1009
|
+
function emitValue(event) {
|
|
1010
|
+
subscriber.next(event.matches);
|
|
1011
|
+
}
|
|
1012
|
+
const mediaListQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
1013
|
+
if (signal) {
|
|
1014
|
+
signal.onabort = () => {
|
|
1015
|
+
mediaListQuery.removeEventListener('change', emitValue);
|
|
1016
|
+
!subscriber.closed && subscriber.complete();
|
|
1017
|
+
};
|
|
1018
|
+
}
|
|
1019
|
+
mediaListQuery.addEventListener('change', emitValue);
|
|
1020
|
+
subscriber.next(mediaListQuery.matches);
|
|
1021
|
+
return () => {
|
|
1022
|
+
mediaListQuery.removeEventListener('change', emitValue);
|
|
1023
|
+
!subscriber.closed && subscriber.complete();
|
|
1024
|
+
};
|
|
1025
|
+
});
|
|
1026
|
+
}
|
|
1027
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CdsThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1028
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CdsThemeService, providedIn: 'root' }); }
|
|
1029
|
+
}
|
|
1030
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CdsThemeService, decorators: [{
|
|
1031
|
+
type: Injectable,
|
|
1032
|
+
args: [{
|
|
1033
|
+
providedIn: 'root',
|
|
1034
|
+
}]
|
|
1035
|
+
}], ctorParameters: () => [] });
|
|
1036
|
+
|
|
1037
|
+
class ChoiceFieldService {
|
|
1038
|
+
constructor(http, configService) {
|
|
1039
|
+
this.http = http;
|
|
1040
|
+
this.configService = configService;
|
|
1041
|
+
this.valtimoApiConfig = this.configService.config.valtimoApi;
|
|
1042
|
+
}
|
|
1043
|
+
query(params) {
|
|
1044
|
+
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-fields`, {
|
|
1045
|
+
observe: 'response',
|
|
1046
|
+
params,
|
|
1047
|
+
});
|
|
1048
|
+
}
|
|
1049
|
+
queryPage(params) {
|
|
1050
|
+
return this.http.get(`${this.valtimoApiConfig.endpointUri}v2/choice-fields`, {
|
|
1051
|
+
params,
|
|
1052
|
+
});
|
|
1053
|
+
}
|
|
1054
|
+
get(id) {
|
|
1055
|
+
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-fields/${id}`);
|
|
1056
|
+
}
|
|
1057
|
+
create(choiceField) {
|
|
1058
|
+
return this.http.post(`${this.valtimoApiConfig.endpointUri}v1/choice-fields`, choiceField);
|
|
1059
|
+
}
|
|
1060
|
+
delete(id) {
|
|
1061
|
+
return this.http.delete(`${this.valtimoApiConfig.endpointUri}v1/choice-fields/${id}`);
|
|
1062
|
+
}
|
|
1063
|
+
update(choiceField) {
|
|
1064
|
+
return this.http.put(`${this.valtimoApiConfig.endpointUri}v1/choice-fields`, choiceField);
|
|
1065
|
+
}
|
|
1066
|
+
queryValues(keyName, params) {
|
|
1067
|
+
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values/${keyName}/values`, { observe: 'response', params });
|
|
1068
|
+
}
|
|
1069
|
+
queryValuesPage(keyName, params) {
|
|
1070
|
+
return this.http.get(`${this.valtimoApiConfig.endpointUri}v2/choice-field-values/${keyName}/values`, { params });
|
|
1071
|
+
}
|
|
1072
|
+
getValue(choiceFieldId) {
|
|
1073
|
+
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values/${choiceFieldId}`);
|
|
1074
|
+
}
|
|
1075
|
+
updateValue(choiceFieldValue, choiceFieldName) {
|
|
1076
|
+
return this.http.put(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values`, choiceFieldValue, {
|
|
1077
|
+
params: { choice_field_name: choiceFieldName },
|
|
1078
|
+
});
|
|
1079
|
+
}
|
|
1080
|
+
createValue(choiceFieldValue, choiceFieldName) {
|
|
1081
|
+
return this.http.post(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values`, choiceFieldValue, { params: { choice_field_name: choiceFieldName } });
|
|
1082
|
+
}
|
|
1083
|
+
getChoiceFieldByName(name) {
|
|
1084
|
+
return this.http.get(this.valtimoApiConfig.endpointUri + 'v1/choice-fields/name/' + name);
|
|
1085
|
+
}
|
|
1086
|
+
getChoiceFieldValueByNameAndValue(name, value) {
|
|
1087
|
+
return this.http.get(this.valtimoApiConfig.endpointUri +
|
|
1088
|
+
'v1/choice-field-values/choice-field/' +
|
|
1089
|
+
name +
|
|
1090
|
+
'/value/' +
|
|
1091
|
+
value);
|
|
1092
|
+
}
|
|
1093
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceFieldService, deps: [{ token: i1$1.HttpClient }, { token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1094
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceFieldService, providedIn: 'root' }); }
|
|
1095
|
+
}
|
|
1096
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceFieldService, decorators: [{
|
|
1097
|
+
type: Injectable,
|
|
1098
|
+
args: [{
|
|
1099
|
+
providedIn: 'root',
|
|
1100
|
+
}]
|
|
1101
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1$2.ConfigService }] });
|
|
1102
|
+
|
|
1103
|
+
/*
|
|
1104
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1105
|
+
*
|
|
1106
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1107
|
+
* you may not use this file except in compliance with the License.
|
|
1108
|
+
* You may obtain a copy of the License at
|
|
1109
|
+
*
|
|
1110
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1111
|
+
*
|
|
1112
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1113
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1114
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1115
|
+
* See the License for the specific language governing permissions and
|
|
1116
|
+
* limitations under the License.
|
|
1117
|
+
*/
|
|
1118
|
+
class KeyGeneratorService {
|
|
1119
|
+
getUniqueKey(entityName, usedKeys) {
|
|
1120
|
+
const dashCaseKey = `${entityName}`
|
|
1121
|
+
.toLowerCase()
|
|
1122
|
+
.replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')
|
|
1123
|
+
.replace(/_[-_]+/g, '_')
|
|
1124
|
+
.replace(/^[^a-z]+|[^a-z0-9]+$/g, '');
|
|
1125
|
+
if (!usedKeys.includes(dashCaseKey)) {
|
|
1126
|
+
return dashCaseKey;
|
|
1127
|
+
}
|
|
1128
|
+
return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);
|
|
1129
|
+
}
|
|
1130
|
+
getUniqueKeyWithNumber(dashCaseKey, usedKeys) {
|
|
1131
|
+
const numbersFromCurrentKey = (dashCaseKey.match(/^\d+|\d+\b|\d+(?=\w)/g) || []).map((numberValue) => +numberValue);
|
|
1132
|
+
const lastNumberFromCurrentKey = numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];
|
|
1133
|
+
const newKey = lastNumberFromCurrentKey
|
|
1134
|
+
? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`
|
|
1135
|
+
: `${dashCaseKey}-1`;
|
|
1136
|
+
if (usedKeys.includes(newKey)) {
|
|
1137
|
+
return this.getUniqueKeyWithNumber(newKey, usedKeys);
|
|
1138
|
+
}
|
|
1139
|
+
return newKey;
|
|
1140
|
+
}
|
|
1141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: KeyGeneratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1142
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: KeyGeneratorService, providedIn: 'root' }); }
|
|
1143
|
+
}
|
|
1144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: KeyGeneratorService, decorators: [{
|
|
1145
|
+
type: Injectable,
|
|
1146
|
+
args: [{
|
|
1147
|
+
providedIn: 'root',
|
|
1148
|
+
}]
|
|
1149
|
+
}] });
|
|
1150
|
+
|
|
940
1151
|
/*
|
|
941
1152
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
942
1153
|
*
|
|
@@ -1095,158 +1306,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1095
1306
|
* See the License for the specific language governing permissions and
|
|
1096
1307
|
* limitations under the License.
|
|
1097
1308
|
*/
|
|
1098
|
-
class
|
|
1099
|
-
|
|
1100
|
-
this.
|
|
1101
|
-
this._appearing$ = new BehaviorSubject(false);
|
|
1102
|
-
this._disappearing$ = new BehaviorSubject(false);
|
|
1103
|
-
this._appearingDelayMs$ = new BehaviorSubject(140);
|
|
1104
|
-
this._identifier$ = new BehaviorSubject('');
|
|
1105
|
-
this._headerText$ = new BehaviorSubject('');
|
|
1106
|
-
this._bodyText$ = new BehaviorSubject('');
|
|
1107
|
-
this._cancelText$ = new BehaviorSubject('');
|
|
1108
|
-
this._confirmText$ = new BehaviorSubject('');
|
|
1109
|
-
this._closeOnConfirm$ = new BehaviorSubject(false);
|
|
1110
|
-
this._closeOnCancel$ = new BehaviorSubject(false);
|
|
1111
|
-
this._closeButtonVisible$ = new BehaviorSubject(false);
|
|
1112
|
-
this._cancelCallbackFunction$ = new BehaviorSubject(() => { });
|
|
1113
|
-
this._confirmCallbackFunction$ = new BehaviorSubject(() => { });
|
|
1114
|
-
this._closeCallbackFunction$ = new BehaviorSubject(() => { });
|
|
1309
|
+
class PageHeaderService {
|
|
1310
|
+
get headerViewContainerRef$() {
|
|
1311
|
+
return this._headerViewContainerRef$.pipe(filter(ref => !!ref));
|
|
1115
1312
|
}
|
|
1116
|
-
get
|
|
1117
|
-
return this.
|
|
1313
|
+
get contentViewContainerRef$() {
|
|
1314
|
+
return this._contentViewContainerRef$.pipe(filter(ref => !!ref));
|
|
1118
1315
|
}
|
|
1119
|
-
get
|
|
1120
|
-
return this.
|
|
1316
|
+
get compactMode$() {
|
|
1317
|
+
return this._compactMode$.asObservable();
|
|
1121
1318
|
}
|
|
1122
|
-
get
|
|
1123
|
-
return this.
|
|
1319
|
+
get smallTitle$() {
|
|
1320
|
+
return this._smallTitle$.asObservable();
|
|
1124
1321
|
}
|
|
1125
|
-
get
|
|
1126
|
-
return this.
|
|
1322
|
+
get showUserNameInTopBar$() {
|
|
1323
|
+
return this._showUserNameInTopBar$.asObservable();
|
|
1127
1324
|
}
|
|
1128
|
-
get
|
|
1129
|
-
return this.
|
|
1325
|
+
get pageActionsHasContent$() {
|
|
1326
|
+
return this._pageActionsHasContent$.asObservable();
|
|
1130
1327
|
}
|
|
1131
|
-
get
|
|
1132
|
-
return this.
|
|
1328
|
+
get pageHeadHeight$() {
|
|
1329
|
+
return this._pageHeadHeight$.pipe(filter(height => height !== null));
|
|
1133
1330
|
}
|
|
1134
|
-
|
|
1135
|
-
|
|
1331
|
+
constructor(configService) {
|
|
1332
|
+
this.configService = configService;
|
|
1333
|
+
this._headerViewContainerRef$ = new BehaviorSubject(null);
|
|
1334
|
+
this._contentViewContainerRef$ = new BehaviorSubject(null);
|
|
1335
|
+
this._compactMode$ = new BehaviorSubject(!!this.configService?.config?.featureToggles?.compactModeOnByDefault);
|
|
1336
|
+
this._showUserNameInTopBar$ = new BehaviorSubject(this.getDefaultShowUserNameInTopBarValue());
|
|
1337
|
+
this._pageActionsHasContent$ = new BehaviorSubject(false);
|
|
1338
|
+
this._pageHeadHeight$ = new BehaviorSubject(null);
|
|
1339
|
+
this._smallTitle$ = new BehaviorSubject(false);
|
|
1136
1340
|
}
|
|
1137
|
-
|
|
1138
|
-
|
|
1341
|
+
setHeaderViewContainerRef(ref) {
|
|
1342
|
+
this._headerViewContainerRef$.next(ref);
|
|
1139
1343
|
}
|
|
1140
|
-
|
|
1141
|
-
|
|
1344
|
+
setContentViewContainerRef(ref) {
|
|
1345
|
+
this._contentViewContainerRef$.next(ref);
|
|
1142
1346
|
}
|
|
1143
|
-
|
|
1144
|
-
|
|
1347
|
+
setCompactMode(compactMode) {
|
|
1348
|
+
this._compactMode$.next(compactMode);
|
|
1145
1349
|
}
|
|
1146
|
-
|
|
1147
|
-
|
|
1350
|
+
setShowUserNameInTopBar(show) {
|
|
1351
|
+
this._showUserNameInTopBar$.next(show);
|
|
1148
1352
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
this._identifier$.next(promptParameters.identifier);
|
|
1152
|
-
this._headerText$.next(promptParameters.headerText);
|
|
1153
|
-
this._bodyText$.next(promptParameters.bodyText);
|
|
1154
|
-
this._cancelText$.next(promptParameters.cancelButtonText);
|
|
1155
|
-
this._confirmText$.next(promptParameters.confirmButtonText);
|
|
1156
|
-
if (promptParameters.closeOnConfirm)
|
|
1157
|
-
this._closeOnConfirm$.next(promptParameters.closeOnConfirm);
|
|
1158
|
-
if (promptParameters.closeOnCancel)
|
|
1159
|
-
this._closeOnCancel$.next(promptParameters.closeOnCancel);
|
|
1160
|
-
if (promptParameters.closeButtonVisible)
|
|
1161
|
-
this._closeButtonVisible$.next(promptParameters.closeButtonVisible);
|
|
1162
|
-
if (promptParameters.cancelCallbackFunction)
|
|
1163
|
-
this._cancelCallbackFunction$.next(promptParameters.cancelCallbackFunction);
|
|
1164
|
-
if (promptParameters.confirmCallBackFunction)
|
|
1165
|
-
this._confirmCallbackFunction$.next(promptParameters.confirmCallBackFunction);
|
|
1166
|
-
if (promptParameters.closeCallBackFunction)
|
|
1167
|
-
this._closeCallbackFunction$.next(promptParameters.closeCallBackFunction);
|
|
1168
|
-
this._promptVisible$.next(true);
|
|
1169
|
-
this._appearing$.next(true);
|
|
1170
|
-
this.setAppearingTimeout();
|
|
1353
|
+
setPageActionsHasContent(hasContent) {
|
|
1354
|
+
this._pageActionsHasContent$.next(hasContent);
|
|
1171
1355
|
}
|
|
1172
|
-
|
|
1173
|
-
this.
|
|
1356
|
+
setPageHeadHeight(height) {
|
|
1357
|
+
this._pageHeadHeight$.next(height);
|
|
1174
1358
|
}
|
|
1175
|
-
|
|
1176
|
-
this.
|
|
1359
|
+
enableSmallTitle() {
|
|
1360
|
+
this._smallTitle$.next(true);
|
|
1177
1361
|
}
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
.pipe(take(1))
|
|
1181
|
-
.subscribe(([closeOnConfirm, confirmCallback]) => {
|
|
1182
|
-
if (closeOnConfirm) {
|
|
1183
|
-
this.closePrompt(confirmCallback);
|
|
1184
|
-
}
|
|
1185
|
-
else if (confirmCallback) {
|
|
1186
|
-
confirmCallback();
|
|
1187
|
-
}
|
|
1188
|
-
});
|
|
1362
|
+
disableSmallTitle() {
|
|
1363
|
+
this._smallTitle$.next(false);
|
|
1189
1364
|
}
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
.
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
}
|
|
1197
|
-
else if (cancelCallback) {
|
|
1198
|
-
cancelCallback();
|
|
1199
|
-
}
|
|
1200
|
-
});
|
|
1365
|
+
getDefaultShowUserNameInTopBarValue() {
|
|
1366
|
+
const featureToggles = this.configService?.config?.featureToggles;
|
|
1367
|
+
if (featureToggles && featureToggles.hasOwnProperty('showUserNameInTopBar')) {
|
|
1368
|
+
return featureToggles.showUserNameInTopBar;
|
|
1369
|
+
}
|
|
1370
|
+
return true;
|
|
1201
1371
|
}
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1372
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageHeaderService, deps: [{ token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1373
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageHeaderService, providedIn: 'root' }); }
|
|
1374
|
+
}
|
|
1375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageHeaderService, decorators: [{
|
|
1376
|
+
type: Injectable,
|
|
1377
|
+
args: [{
|
|
1378
|
+
providedIn: 'root',
|
|
1379
|
+
}]
|
|
1380
|
+
}], ctorParameters: () => [{ type: i1$2.ConfigService }] });
|
|
1381
|
+
|
|
1382
|
+
/*
|
|
1383
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1384
|
+
*
|
|
1385
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1386
|
+
* you may not use this file except in compliance with the License.
|
|
1387
|
+
* You may obtain a copy of the License at
|
|
1388
|
+
*
|
|
1389
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1390
|
+
*
|
|
1391
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1392
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1393
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1394
|
+
* See the License for the specific language governing permissions and
|
|
1395
|
+
* limitations under the License.
|
|
1396
|
+
*/
|
|
1397
|
+
class PageSubtitleService {
|
|
1398
|
+
constructor() {
|
|
1399
|
+
this._titleViewContainerRef$ = new BehaviorSubject(null);
|
|
1400
|
+
this._actionsViewContainerRef$ = new BehaviorSubject(null);
|
|
1210
1401
|
}
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
callBackFunction();
|
|
1214
|
-
}
|
|
1215
|
-
this._disappearing$.next(true);
|
|
1216
|
-
this.setDisappearingTimeout();
|
|
1217
|
-
this._promptVisible$.next(false);
|
|
1402
|
+
get titleViewContainerRef$() {
|
|
1403
|
+
return this._titleViewContainerRef$.pipe(filter(ref => !!ref));
|
|
1218
1404
|
}
|
|
1219
|
-
|
|
1220
|
-
this.
|
|
1221
|
-
setTimeout(() => {
|
|
1222
|
-
this._appearing$.next(false);
|
|
1223
|
-
}, appearingDelayMs);
|
|
1224
|
-
});
|
|
1405
|
+
get actionsViewContainerRef$() {
|
|
1406
|
+
return this._actionsViewContainerRef$.pipe(filter(ref => !!ref));
|
|
1225
1407
|
}
|
|
1226
|
-
|
|
1227
|
-
this.
|
|
1228
|
-
setTimeout(() => {
|
|
1229
|
-
this._disappearing$.next(false);
|
|
1230
|
-
this.clear();
|
|
1231
|
-
}, appearingDelayMs);
|
|
1232
|
-
});
|
|
1408
|
+
setTitleViewContainerRef(ref) {
|
|
1409
|
+
this._titleViewContainerRef$.next(ref);
|
|
1233
1410
|
}
|
|
1234
|
-
|
|
1235
|
-
this.
|
|
1236
|
-
this._headerText$.next('');
|
|
1237
|
-
this._bodyText$.next('');
|
|
1238
|
-
this._cancelText$.next('');
|
|
1239
|
-
this._confirmText$.next('');
|
|
1240
|
-
this._closeOnCancel$.next(false);
|
|
1241
|
-
this._closeOnConfirm$.next(false);
|
|
1242
|
-
this._cancelCallbackFunction$.next(() => { });
|
|
1243
|
-
this._confirmCallbackFunction$.next(() => { });
|
|
1244
|
-
this._closeCallbackFunction$.next(() => { });
|
|
1411
|
+
setActionsViewContainerRef(ref) {
|
|
1412
|
+
this._actionsViewContainerRef$.next(ref);
|
|
1245
1413
|
}
|
|
1246
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1247
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1414
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageSubtitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1415
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageSubtitleService, providedIn: 'root' }); }
|
|
1248
1416
|
}
|
|
1249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageSubtitleService, decorators: [{
|
|
1250
1418
|
type: Injectable,
|
|
1251
1419
|
args: [{
|
|
1252
1420
|
providedIn: 'root',
|
|
@@ -1268,198 +1436,108 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1268
1436
|
* See the License for the specific language governing permissions and
|
|
1269
1437
|
* limitations under the License.
|
|
1270
1438
|
*/
|
|
1271
|
-
class
|
|
1272
|
-
get
|
|
1273
|
-
return this.
|
|
1274
|
-
}
|
|
1275
|
-
get panelExpanded$() {
|
|
1276
|
-
return this._panelExpanded$.asObservable();
|
|
1439
|
+
class PageTitleService {
|
|
1440
|
+
get customPageTitle$() {
|
|
1441
|
+
return this._customPageTitle$.asObservable();
|
|
1277
1442
|
}
|
|
1278
|
-
get
|
|
1279
|
-
return this.
|
|
1443
|
+
get customPageTitleSet$() {
|
|
1444
|
+
return this._customPageTitleSet$.asObservable();
|
|
1280
1445
|
}
|
|
1281
|
-
get
|
|
1282
|
-
return this.
|
|
1446
|
+
get customPageSubtitle$() {
|
|
1447
|
+
return this._customPageSubtitle$.asObservable();
|
|
1283
1448
|
}
|
|
1284
|
-
get
|
|
1285
|
-
return this.
|
|
1449
|
+
get customPageSubtitleSet$() {
|
|
1450
|
+
return this._customPageSubtitleSet$.asObservable();
|
|
1286
1451
|
}
|
|
1287
|
-
get
|
|
1288
|
-
return this.
|
|
1452
|
+
get pageActionsViewContainerRef$() {
|
|
1453
|
+
return this._pageActionsViewContainerRef$.pipe(filter(ref => !!ref));
|
|
1289
1454
|
}
|
|
1290
|
-
get
|
|
1291
|
-
return this.
|
|
1455
|
+
get hasPageActions$() {
|
|
1456
|
+
return this._hasPageActions$.asObservable();
|
|
1292
1457
|
}
|
|
1293
|
-
|
|
1294
|
-
this.
|
|
1295
|
-
this.configService = configService;
|
|
1296
|
-
this._sideBarExpanded$ = new BehaviorSubject(true);
|
|
1297
|
-
this._panelExpanded$ = new BehaviorSubject(false);
|
|
1298
|
-
this._largeScreen$ = new BehaviorSubject(true);
|
|
1299
|
-
this._mouseOnTopBar$ = new BehaviorSubject(false);
|
|
1300
|
-
this._sidenavWidth$ = new BehaviorSubject(300);
|
|
1301
|
-
this._sidenavElement$ = new BehaviorSubject(undefined);
|
|
1302
|
-
this._contentElement$ = new BehaviorSubject(undefined);
|
|
1303
|
-
this._resizeBorderElement$ = new BehaviorSubject(undefined);
|
|
1304
|
-
this._mouseX$ = fromEvent(document.body, 'mousemove').pipe(map((e) => e.pageX));
|
|
1305
|
-
this._isResizing$ = new BehaviorSubject(false);
|
|
1306
|
-
this._collapsibleWidescreenMenu$ = new BehaviorSubject(false);
|
|
1307
|
-
this._mainContentResized$ = new Subject();
|
|
1308
|
-
this.renderer = rendererFactory2.createRenderer(null, null);
|
|
1309
|
-
this.openSidenavSizeSubscription();
|
|
1310
|
-
this.openMouseSubscriptions();
|
|
1311
|
-
this.initMenuWidth(configService.config);
|
|
1458
|
+
get pageActionsFullWidth$() {
|
|
1459
|
+
return this._pageActionsFullWidth$.asObservable();
|
|
1312
1460
|
}
|
|
1313
|
-
|
|
1314
|
-
this.
|
|
1461
|
+
get pageTitleHidden$() {
|
|
1462
|
+
return this._pageTitleHidden$.asObservable();
|
|
1315
1463
|
}
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
this.
|
|
1464
|
+
constructor(router) {
|
|
1465
|
+
this.router = router;
|
|
1466
|
+
this._customPageTitle$ = new BehaviorSubject('');
|
|
1467
|
+
this._customPageTitleSet$ = new BehaviorSubject(false);
|
|
1468
|
+
this._customPageSubtitle$ = new BehaviorSubject('');
|
|
1469
|
+
this._customPageSubtitleSet$ = new BehaviorSubject(false);
|
|
1470
|
+
this._hasPageActions$ = new BehaviorSubject(false);
|
|
1471
|
+
this._pageActionsFullWidth$ = new BehaviorSubject(false);
|
|
1472
|
+
this._pageActionsViewContainerRef$ = new BehaviorSubject(null);
|
|
1473
|
+
this._pageTitleHidden$ = new BehaviorSubject(false);
|
|
1474
|
+
this.openRouteSubscription();
|
|
1319
1475
|
}
|
|
1320
|
-
|
|
1321
|
-
this.
|
|
1476
|
+
ngOnDestroy() {
|
|
1477
|
+
this._routeSubscription?.unsubscribe();
|
|
1322
1478
|
}
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
this.
|
|
1479
|
+
setCustomPageTitle(title, preventReset = false) {
|
|
1480
|
+
this._customPageTitle$.next(title);
|
|
1481
|
+
this._customPageTitleSet$.next(true);
|
|
1482
|
+
if (preventReset) {
|
|
1483
|
+
this.disableReset();
|
|
1484
|
+
}
|
|
1326
1485
|
}
|
|
1327
|
-
|
|
1328
|
-
this.
|
|
1486
|
+
setCustomPageSubtitle(title) {
|
|
1487
|
+
this._customPageSubtitle$.next(title);
|
|
1488
|
+
this._customPageSubtitleSet$.next(true);
|
|
1329
1489
|
}
|
|
1330
|
-
|
|
1331
|
-
this.
|
|
1490
|
+
disableReset() {
|
|
1491
|
+
this._preventReset = true;
|
|
1332
1492
|
}
|
|
1333
|
-
|
|
1334
|
-
this.
|
|
1493
|
+
enableReset() {
|
|
1494
|
+
this._preventReset = false;
|
|
1335
1495
|
}
|
|
1336
|
-
|
|
1337
|
-
this.
|
|
1496
|
+
setPageActionsViewContainerRef(ref) {
|
|
1497
|
+
this._pageActionsViewContainerRef$.next(ref);
|
|
1338
1498
|
}
|
|
1339
|
-
|
|
1340
|
-
this.
|
|
1341
|
-
this.createResizeBorderElement(element);
|
|
1499
|
+
setHasPageActions(value) {
|
|
1500
|
+
this._hasPageActions$.next(value);
|
|
1342
1501
|
}
|
|
1343
|
-
|
|
1344
|
-
this.
|
|
1502
|
+
setPageActionsFullWidth(value) {
|
|
1503
|
+
this._pageActionsFullWidth$.next(value);
|
|
1345
1504
|
}
|
|
1346
|
-
|
|
1347
|
-
this.
|
|
1348
|
-
if (collapsible) {
|
|
1349
|
-
this.collapseSideBar();
|
|
1350
|
-
}
|
|
1505
|
+
setCustomPageTitleSet(set) {
|
|
1506
|
+
this._customPageTitleSet$.next(set);
|
|
1351
1507
|
}
|
|
1352
|
-
|
|
1353
|
-
this.
|
|
1508
|
+
setPageTitleHidden(hidden) {
|
|
1509
|
+
this._pageTitleHidden$.next(hidden);
|
|
1354
1510
|
}
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
this.renderer.addClass(borderElement, 'resize-border');
|
|
1358
|
-
this.renderer.appendChild(sidenavElement, borderElement);
|
|
1359
|
-
this._resizeBorderElement$.next(borderElement);
|
|
1360
|
-
this.renderer.listen(borderElement, 'mouseenter', () => {
|
|
1361
|
-
this.renderer.addClass(borderElement, 'resize-hover');
|
|
1362
|
-
});
|
|
1363
|
-
this.renderer.listen(borderElement, 'mouseleave', () => {
|
|
1364
|
-
this._isResizing$.pipe(take(1)).subscribe(isResizing => {
|
|
1365
|
-
if (!isResizing) {
|
|
1366
|
-
this.renderer.removeClass(borderElement, 'resize-hover');
|
|
1367
|
-
}
|
|
1368
|
-
});
|
|
1369
|
-
});
|
|
1370
|
-
this.renderer.listen(borderElement, 'mousedown', (event) => {
|
|
1371
|
-
this._sidenavWidth$.pipe(take(1)).subscribe(sidenavWidth => {
|
|
1372
|
-
this.sidenavWidthOnClick = sidenavWidth;
|
|
1373
|
-
this.xOnClick = event.pageX;
|
|
1374
|
-
this._isResizing$.next(true);
|
|
1375
|
-
this.renderer.setStyle(document.body, 'user-select', 'none');
|
|
1376
|
-
this.renderer.setStyle(document.body, 'cursor', 'col-resize');
|
|
1377
|
-
this.renderer.setStyle(document.querySelector('.cds--side-nav__navigation'), 'pointer-events', 'none');
|
|
1378
|
-
this.renderer.setStyle(document.querySelector('.main-content'), 'pointer-events', 'none');
|
|
1379
|
-
});
|
|
1380
|
-
});
|
|
1511
|
+
clearPageActionsViewContainerRef() {
|
|
1512
|
+
this._pageActionsViewContainerRef$.getValue()?.clear();
|
|
1381
1513
|
}
|
|
1382
|
-
|
|
1383
|
-
this.
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
this.
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
sidenavElement &&
|
|
1393
|
-
contentElement &&
|
|
1394
|
-
resizeBorderElement) {
|
|
1395
|
-
this.renderer.removeStyle(sidenavElement, 'min-width');
|
|
1396
|
-
this.renderer.removeStyle(sidenavElement, 'width');
|
|
1397
|
-
this.renderer.removeStyle(sidenavElement, 'transition');
|
|
1398
|
-
this.renderer.removeStyle(contentElement, 'padding-left');
|
|
1399
|
-
this.renderer.addClass(resizeBorderElement, 'resize-border--invisible');
|
|
1400
|
-
}
|
|
1401
|
-
else if (largeScreen &&
|
|
1402
|
-
sidenavElement &&
|
|
1403
|
-
contentElement &&
|
|
1404
|
-
typeof sidenavWidth === 'number') {
|
|
1405
|
-
const pixelWidth = `${sidenavWidth}px`;
|
|
1406
|
-
this.renderer.setStyle(sidenavElement, 'min-width', `${pixelWidth}`);
|
|
1407
|
-
this.renderer.setStyle(sidenavElement, 'width', `${pixelWidth}`);
|
|
1408
|
-
this.renderer.setStyle(sidenavElement, 'transition', 'none');
|
|
1409
|
-
this.renderer.setStyle(contentElement, 'padding-left', `calc(2rem + ${pixelWidth})`);
|
|
1410
|
-
this.renderer.removeClass(resizeBorderElement, 'resize-border--invisible');
|
|
1514
|
+
openRouteSubscription() {
|
|
1515
|
+
this._routeSubscription = combineLatest([this.router.events, this.pageActionsViewContainerRef$])
|
|
1516
|
+
.pipe(filter(([event]) => event instanceof NavigationEnd ||
|
|
1517
|
+
event instanceof NavigationStart ||
|
|
1518
|
+
event instanceof ResolveEnd), tap(([_, pageActionsViewContainerRef]) => {
|
|
1519
|
+
if (!this._preventReset) {
|
|
1520
|
+
this._customPageTitle$.next('');
|
|
1521
|
+
this._customPageTitleSet$.next(false);
|
|
1522
|
+
this._customPageSubtitle$.next('');
|
|
1523
|
+
this._customPageSubtitleSet$.next(false);
|
|
1411
1524
|
}
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
this.mouseXSubscription = combineLatest([this._mouseX$, this._isResizing$])
|
|
1416
|
-
.pipe(debounceTime(3))
|
|
1417
|
-
.subscribe(([x, isResizing]) => {
|
|
1418
|
-
if (isResizing) {
|
|
1419
|
-
const offSetWidth = this.xOnClick - x;
|
|
1420
|
-
const newSidenavWidth = this.sidenavWidthOnClick - offSetWidth;
|
|
1421
|
-
if (newSidenavWidth <= this.maxMenuWidth && newSidenavWidth >= this.minMenuWidth) {
|
|
1422
|
-
this._sidenavWidth$.next(newSidenavWidth);
|
|
1423
|
-
}
|
|
1525
|
+
if (pageActionsViewContainerRef && !this._preventReset) {
|
|
1526
|
+
pageActionsViewContainerRef.clear();
|
|
1527
|
+
this.setHasPageActions(false);
|
|
1424
1528
|
}
|
|
1425
|
-
})
|
|
1426
|
-
|
|
1427
|
-
this.stopResizing();
|
|
1428
|
-
});
|
|
1429
|
-
}
|
|
1430
|
-
stopResizing() {
|
|
1431
|
-
const mainContent = document.querySelector('.main-content');
|
|
1432
|
-
const sideNav = document.querySelector('.cds--side-nav__navigation');
|
|
1433
|
-
this.renderer.removeStyle(document.body, 'user-select');
|
|
1434
|
-
this.renderer.removeStyle(document.body, 'cursor');
|
|
1435
|
-
this._isResizing$.next(false);
|
|
1436
|
-
this.renderer.removeClass(this._resizeBorderElement$.getValue(), 'resize-hover');
|
|
1437
|
-
if (sideNav) {
|
|
1438
|
-
this.renderer.removeStyle(sideNav, 'pointer-events');
|
|
1439
|
-
}
|
|
1440
|
-
if (mainContent) {
|
|
1441
|
-
this.renderer.removeStyle(mainContent, 'pointer-events');
|
|
1442
|
-
}
|
|
1443
|
-
localStorage.setItem('sidenavWidth', this._sidenavWidth$.getValue().toString());
|
|
1444
|
-
}
|
|
1445
|
-
initMenuWidth(config) {
|
|
1446
|
-
const customLeftSidebar = config?.customLeftSidebar;
|
|
1447
|
-
const localStorageWidth = localStorage.getItem('sidenavWidth');
|
|
1448
|
-
const localStorageWidthNumber = localStorageWidth && +localStorageWidth;
|
|
1449
|
-
const configWidth = customLeftSidebar?.defaultMenuWidth;
|
|
1450
|
-
this._sidenavWidth$.next(localStorageWidthNumber || configWidth || 256);
|
|
1451
|
-
this.minMenuWidth = customLeftSidebar?.minMenuWidth || 150;
|
|
1452
|
-
this.maxMenuWidth = customLeftSidebar?.maxMenuWidth || 500;
|
|
1529
|
+
}))
|
|
1530
|
+
.subscribe();
|
|
1453
1531
|
}
|
|
1454
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1455
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1532
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageTitleService, deps: [{ token: i1$3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1533
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageTitleService, providedIn: 'root' }); }
|
|
1456
1534
|
}
|
|
1457
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1535
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageTitleService, decorators: [{
|
|
1458
1536
|
type: Injectable,
|
|
1459
1537
|
args: [{
|
|
1460
1538
|
providedIn: 'root',
|
|
1461
1539
|
}]
|
|
1462
|
-
}], ctorParameters: () => [{ type:
|
|
1540
|
+
}], ctorParameters: () => [{ type: i1$3.Router }] });
|
|
1463
1541
|
|
|
1464
1542
|
/*
|
|
1465
1543
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1476,174 +1554,185 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1476
1554
|
* See the License for the specific language governing permissions and
|
|
1477
1555
|
* limitations under the License.
|
|
1478
1556
|
*/
|
|
1479
|
-
class
|
|
1557
|
+
class PromptService {
|
|
1480
1558
|
constructor() {
|
|
1481
|
-
this.
|
|
1482
|
-
this.
|
|
1483
|
-
this.
|
|
1484
|
-
this.
|
|
1485
|
-
this.
|
|
1486
|
-
this.
|
|
1487
|
-
this.
|
|
1559
|
+
this._promptVisible$ = new BehaviorSubject(false);
|
|
1560
|
+
this._appearing$ = new BehaviorSubject(false);
|
|
1561
|
+
this._disappearing$ = new BehaviorSubject(false);
|
|
1562
|
+
this._appearingDelayMs$ = new BehaviorSubject(140);
|
|
1563
|
+
this._identifier$ = new BehaviorSubject('');
|
|
1564
|
+
this._headerText$ = new BehaviorSubject('');
|
|
1565
|
+
this._bodyText$ = new BehaviorSubject('');
|
|
1566
|
+
this._cancelText$ = new BehaviorSubject('');
|
|
1567
|
+
this._confirmText$ = new BehaviorSubject('');
|
|
1568
|
+
this._closeOnConfirm$ = new BehaviorSubject(false);
|
|
1569
|
+
this._closeOnCancel$ = new BehaviorSubject(false);
|
|
1570
|
+
this._closeButtonVisible$ = new BehaviorSubject(false);
|
|
1571
|
+
this._cancelCallbackFunction$ = new BehaviorSubject(() => { });
|
|
1572
|
+
this._confirmCallbackFunction$ = new BehaviorSubject(() => { });
|
|
1573
|
+
this._closeCallbackFunction$ = new BehaviorSubject(() => { });
|
|
1488
1574
|
}
|
|
1489
|
-
get
|
|
1490
|
-
return this.
|
|
1575
|
+
get promptVisible$() {
|
|
1576
|
+
return this._promptVisible$.asObservable();
|
|
1491
1577
|
}
|
|
1492
|
-
get
|
|
1493
|
-
return this.
|
|
1578
|
+
get appearing$() {
|
|
1579
|
+
return this._appearing$.asObservable();
|
|
1494
1580
|
}
|
|
1495
|
-
get
|
|
1496
|
-
return
|
|
1581
|
+
get disappearing$() {
|
|
1582
|
+
return this._disappearing$.asObservable();
|
|
1497
1583
|
}
|
|
1498
|
-
get
|
|
1499
|
-
return this.
|
|
1584
|
+
get appearingDelayMs$() {
|
|
1585
|
+
return this._appearingDelayMs$.asObservable();
|
|
1500
1586
|
}
|
|
1501
|
-
get
|
|
1502
|
-
return this.
|
|
1587
|
+
get appearingDelayMs() {
|
|
1588
|
+
return this._appearingDelayMs$.getValue();
|
|
1503
1589
|
}
|
|
1504
|
-
get
|
|
1505
|
-
return this.
|
|
1590
|
+
get identifier$() {
|
|
1591
|
+
return this._identifier$.asObservable();
|
|
1506
1592
|
}
|
|
1507
|
-
get
|
|
1508
|
-
return this.
|
|
1593
|
+
get headerText$() {
|
|
1594
|
+
return this._headerText$.asObservable();
|
|
1509
1595
|
}
|
|
1510
|
-
get
|
|
1511
|
-
return this.
|
|
1596
|
+
get bodyText$() {
|
|
1597
|
+
return this._bodyText$.asObservable();
|
|
1512
1598
|
}
|
|
1513
|
-
get
|
|
1514
|
-
return this.
|
|
1599
|
+
get cancelText$() {
|
|
1600
|
+
return this._cancelText$.asObservable();
|
|
1515
1601
|
}
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
...step,
|
|
1519
|
-
isFirst: index === 0,
|
|
1520
|
-
isLast: index === steps.length - 1,
|
|
1521
|
-
}));
|
|
1522
|
-
this._steps$.next(mappedSteps);
|
|
1602
|
+
get confirmText$() {
|
|
1603
|
+
return this._confirmText$.asObservable();
|
|
1523
1604
|
}
|
|
1524
|
-
|
|
1525
|
-
this.
|
|
1605
|
+
get closeButtonVisible$() {
|
|
1606
|
+
return this._closeButtonVisible$.asObservable();
|
|
1526
1607
|
}
|
|
1527
|
-
|
|
1528
|
-
|
|
1608
|
+
openPrompt(promptParameters) {
|
|
1609
|
+
if (promptParameters.identifier)
|
|
1610
|
+
this._identifier$.next(promptParameters.identifier);
|
|
1611
|
+
this._headerText$.next(promptParameters.headerText);
|
|
1612
|
+
this._bodyText$.next(promptParameters.bodyText);
|
|
1613
|
+
this._cancelText$.next(promptParameters.cancelButtonText);
|
|
1614
|
+
this._confirmText$.next(promptParameters.confirmButtonText);
|
|
1615
|
+
if (promptParameters.closeOnConfirm)
|
|
1616
|
+
this._closeOnConfirm$.next(promptParameters.closeOnConfirm);
|
|
1617
|
+
if (promptParameters.closeOnCancel)
|
|
1618
|
+
this._closeOnCancel$.next(promptParameters.closeOnCancel);
|
|
1619
|
+
if (promptParameters.closeButtonVisible)
|
|
1620
|
+
this._closeButtonVisible$.next(promptParameters.closeButtonVisible);
|
|
1621
|
+
if (promptParameters.cancelCallbackFunction)
|
|
1622
|
+
this._cancelCallbackFunction$.next(promptParameters.cancelCallbackFunction);
|
|
1623
|
+
if (promptParameters.confirmCallBackFunction)
|
|
1624
|
+
this._confirmCallbackFunction$.next(promptParameters.confirmCallBackFunction);
|
|
1625
|
+
if (promptParameters.closeCallBackFunction)
|
|
1626
|
+
this._closeCallbackFunction$.next(promptParameters.closeCallBackFunction);
|
|
1627
|
+
this._promptVisible$.next(true);
|
|
1628
|
+
this._appearing$.next(true);
|
|
1629
|
+
this.setAppearingTimeout();
|
|
1630
|
+
}
|
|
1631
|
+
setAppearingDelay(appearingDelayMs) {
|
|
1632
|
+
this._appearingDelayMs$.next(appearingDelayMs);
|
|
1633
|
+
}
|
|
1634
|
+
setBodyText(bodyText) {
|
|
1635
|
+
this._bodyText$.next(bodyText);
|
|
1636
|
+
}
|
|
1637
|
+
confirm() {
|
|
1638
|
+
combineLatest([this._closeOnConfirm$, this._confirmCallbackFunction$])
|
|
1529
1639
|
.pipe(take(1))
|
|
1530
|
-
.subscribe(([
|
|
1531
|
-
if (
|
|
1532
|
-
this.
|
|
1533
|
-
|
|
1640
|
+
.subscribe(([closeOnConfirm, confirmCallback]) => {
|
|
1641
|
+
if (closeOnConfirm) {
|
|
1642
|
+
this.closePrompt(confirmCallback);
|
|
1643
|
+
}
|
|
1644
|
+
else if (confirmCallback) {
|
|
1645
|
+
confirmCallback();
|
|
1534
1646
|
}
|
|
1535
1647
|
});
|
|
1536
1648
|
}
|
|
1537
|
-
|
|
1538
|
-
combineLatest([this.
|
|
1649
|
+
cancel() {
|
|
1650
|
+
combineLatest([this._closeOnCancel$, this._cancelCallbackFunction$])
|
|
1539
1651
|
.pipe(take(1))
|
|
1540
|
-
.subscribe(([
|
|
1541
|
-
if (
|
|
1542
|
-
this.
|
|
1652
|
+
.subscribe(([closeOnCancel, cancelCallback]) => {
|
|
1653
|
+
if (closeOnCancel) {
|
|
1654
|
+
this.closePrompt(cancelCallback);
|
|
1655
|
+
}
|
|
1656
|
+
else if (cancelCallback) {
|
|
1657
|
+
cancelCallback();
|
|
1543
1658
|
}
|
|
1544
1659
|
});
|
|
1545
1660
|
}
|
|
1546
|
-
|
|
1547
|
-
this.
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
}
|
|
1555
|
-
enable() {
|
|
1556
|
-
this._disabled$.next(false);
|
|
1557
|
-
}
|
|
1558
|
-
returnToFirstStep() {
|
|
1559
|
-
this.setCurrentStepIndex(0);
|
|
1560
|
-
}
|
|
1561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1562
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperService }); }
|
|
1563
|
-
}
|
|
1564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperService, decorators: [{
|
|
1565
|
-
type: Injectable
|
|
1566
|
-
}] });
|
|
1567
|
-
|
|
1568
|
-
/*
|
|
1569
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1570
|
-
*
|
|
1571
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1572
|
-
* you may not use this file except in compliance with the License.
|
|
1573
|
-
* You may obtain a copy of the License at
|
|
1574
|
-
*
|
|
1575
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1576
|
-
*
|
|
1577
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1578
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1579
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1580
|
-
* See the License for the specific language governing permissions and
|
|
1581
|
-
* limitations under the License.
|
|
1582
|
-
*/
|
|
1583
|
-
class UserInterfaceService {
|
|
1584
|
-
constructor() {
|
|
1585
|
-
this._showPageHeader$ = new BehaviorSubject(true);
|
|
1586
|
-
}
|
|
1587
|
-
get showPageHeader$() {
|
|
1588
|
-
return this._showPageHeader$.asObservable();
|
|
1661
|
+
close() {
|
|
1662
|
+
combineLatest([this._closeButtonVisible$, this._closeCallbackFunction$])
|
|
1663
|
+
.pipe(take(1))
|
|
1664
|
+
.subscribe(([closeButtonVisible, cancelCallback]) => {
|
|
1665
|
+
if (closeButtonVisible) {
|
|
1666
|
+
this.closePrompt(cancelCallback);
|
|
1667
|
+
}
|
|
1668
|
+
});
|
|
1589
1669
|
}
|
|
1590
|
-
|
|
1591
|
-
|
|
1670
|
+
closePrompt(callBackFunction) {
|
|
1671
|
+
if (callBackFunction) {
|
|
1672
|
+
callBackFunction();
|
|
1673
|
+
}
|
|
1674
|
+
this._disappearing$.next(true);
|
|
1675
|
+
this.setDisappearingTimeout();
|
|
1676
|
+
this._promptVisible$.next(false);
|
|
1592
1677
|
}
|
|
1593
|
-
|
|
1594
|
-
this.
|
|
1678
|
+
setAppearingTimeout() {
|
|
1679
|
+
this._appearingDelayMs$.pipe(take(1)).subscribe(appearingDelayMs => {
|
|
1680
|
+
setTimeout(() => {
|
|
1681
|
+
this._appearing$.next(false);
|
|
1682
|
+
}, appearingDelayMs);
|
|
1683
|
+
});
|
|
1595
1684
|
}
|
|
1596
|
-
|
|
1597
|
-
this.
|
|
1598
|
-
|
|
1685
|
+
setDisappearingTimeout() {
|
|
1686
|
+
this._appearingDelayMs$.pipe(take(1)).subscribe(appearingDelayMs => {
|
|
1687
|
+
setTimeout(() => {
|
|
1688
|
+
this._disappearing$.next(false);
|
|
1689
|
+
this.clear();
|
|
1690
|
+
}, appearingDelayMs);
|
|
1599
1691
|
});
|
|
1600
1692
|
}
|
|
1601
|
-
|
|
1602
|
-
|
|
1693
|
+
clear() {
|
|
1694
|
+
this._identifier$.next('');
|
|
1695
|
+
this._headerText$.next('');
|
|
1696
|
+
this._bodyText$.next('');
|
|
1697
|
+
this._cancelText$.next('');
|
|
1698
|
+
this._confirmText$.next('');
|
|
1699
|
+
this._closeOnCancel$.next(false);
|
|
1700
|
+
this._closeOnConfirm$.next(false);
|
|
1701
|
+
this._cancelCallbackFunction$.next(() => { });
|
|
1702
|
+
this._confirmCallbackFunction$.next(() => { });
|
|
1703
|
+
this._closeCallbackFunction$.next(() => { });
|
|
1704
|
+
}
|
|
1705
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PromptService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1706
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PromptService, providedIn: 'root' }); }
|
|
1603
1707
|
}
|
|
1604
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1708
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PromptService, decorators: [{
|
|
1605
1709
|
type: Injectable,
|
|
1606
1710
|
args: [{
|
|
1607
1711
|
providedIn: 'root',
|
|
1608
1712
|
}]
|
|
1609
1713
|
}] });
|
|
1610
1714
|
|
|
1611
|
-
|
|
1612
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1613
|
-
*
|
|
1614
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1615
|
-
* you may not use this file except in compliance with the License.
|
|
1616
|
-
* You may obtain a copy of the License at
|
|
1617
|
-
*
|
|
1618
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1619
|
-
*
|
|
1620
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1621
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1622
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1623
|
-
* See the License for the specific language governing permissions and
|
|
1624
|
-
* limitations under the License.
|
|
1625
|
-
*/
|
|
1626
|
-
class ValtimoModalService {
|
|
1715
|
+
class QuickSearchStateService {
|
|
1627
1716
|
constructor() {
|
|
1628
|
-
this.
|
|
1629
|
-
this.
|
|
1630
|
-
|
|
1631
|
-
get scrollToTop$() {
|
|
1632
|
-
return this._scrollToTop$.asObservable();
|
|
1717
|
+
this._$modalOpen = signal(false);
|
|
1718
|
+
this._paramsToSave$ = new BehaviorSubject(null);
|
|
1719
|
+
this.paramsToSave$ = this._paramsToSave$.pipe(filter$1(params => !!params));
|
|
1633
1720
|
}
|
|
1634
|
-
get
|
|
1635
|
-
return
|
|
1721
|
+
get $modalOpen() {
|
|
1722
|
+
return computed(() => this._$modalOpen());
|
|
1636
1723
|
}
|
|
1637
|
-
|
|
1638
|
-
this.
|
|
1724
|
+
openModal(params) {
|
|
1725
|
+
this._paramsToSave$.next(params);
|
|
1726
|
+
this._$modalOpen.set(true);
|
|
1639
1727
|
}
|
|
1640
|
-
|
|
1641
|
-
this.
|
|
1728
|
+
closeModal() {
|
|
1729
|
+
this._paramsToSave$.next(null);
|
|
1730
|
+
this._$modalOpen.set(false);
|
|
1642
1731
|
}
|
|
1643
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1644
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1732
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1733
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchStateService, providedIn: 'root' }); }
|
|
1645
1734
|
}
|
|
1646
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1735
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchStateService, decorators: [{
|
|
1647
1736
|
type: Injectable,
|
|
1648
1737
|
args: [{
|
|
1649
1738
|
providedIn: 'root',
|
|
@@ -1665,239 +1754,198 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1665
1754
|
* See the License for the specific language governing permissions and
|
|
1666
1755
|
* limitations under the License.
|
|
1667
1756
|
*/
|
|
1668
|
-
class
|
|
1669
|
-
get
|
|
1670
|
-
return this.
|
|
1757
|
+
class ShellService {
|
|
1758
|
+
get sideBarExpanded$() {
|
|
1759
|
+
return this._sideBarExpanded$.asObservable();
|
|
1671
1760
|
}
|
|
1672
|
-
get
|
|
1673
|
-
return this.
|
|
1761
|
+
get panelExpanded$() {
|
|
1762
|
+
return this._panelExpanded$.asObservable();
|
|
1674
1763
|
}
|
|
1675
|
-
get
|
|
1676
|
-
return this.
|
|
1764
|
+
get largeScreen$() {
|
|
1765
|
+
return this._largeScreen$.asObservable();
|
|
1677
1766
|
}
|
|
1678
|
-
get
|
|
1679
|
-
return this.
|
|
1767
|
+
get mouseOnTopBar$() {
|
|
1768
|
+
return this._mouseOnTopBar$.asObservable();
|
|
1680
1769
|
}
|
|
1681
|
-
get
|
|
1682
|
-
return this.
|
|
1770
|
+
get sidenavWidth$() {
|
|
1771
|
+
return this._sidenavWidth$.asObservable();
|
|
1683
1772
|
}
|
|
1684
|
-
get
|
|
1685
|
-
return this.
|
|
1773
|
+
get collapsibleWidescreenMenu$() {
|
|
1774
|
+
return this._collapsibleWidescreenMenu$.asObservable();
|
|
1686
1775
|
}
|
|
1687
|
-
get
|
|
1688
|
-
return this.
|
|
1776
|
+
get mainContentResized$() {
|
|
1777
|
+
return this._mainContentResized$.asObservable();
|
|
1689
1778
|
}
|
|
1690
|
-
constructor(configService) {
|
|
1779
|
+
constructor(rendererFactory2, configService) {
|
|
1780
|
+
this.rendererFactory2 = rendererFactory2;
|
|
1691
1781
|
this.configService = configService;
|
|
1692
|
-
this.
|
|
1693
|
-
this.
|
|
1694
|
-
this.
|
|
1695
|
-
this.
|
|
1696
|
-
this.
|
|
1697
|
-
this.
|
|
1698
|
-
this.
|
|
1782
|
+
this._sideBarExpanded$ = new BehaviorSubject(true);
|
|
1783
|
+
this._panelExpanded$ = new BehaviorSubject(false);
|
|
1784
|
+
this._largeScreen$ = new BehaviorSubject(true);
|
|
1785
|
+
this._mouseOnTopBar$ = new BehaviorSubject(false);
|
|
1786
|
+
this._sidenavWidth$ = new BehaviorSubject(300);
|
|
1787
|
+
this._sidenavElement$ = new BehaviorSubject(undefined);
|
|
1788
|
+
this._contentElement$ = new BehaviorSubject(undefined);
|
|
1789
|
+
this._resizeBorderElement$ = new BehaviorSubject(undefined);
|
|
1790
|
+
this._mouseX$ = fromEvent(document.body, 'mousemove').pipe(map((e) => e.pageX));
|
|
1791
|
+
this._isResizing$ = new BehaviorSubject(false);
|
|
1792
|
+
this._collapsibleWidescreenMenu$ = new BehaviorSubject(false);
|
|
1793
|
+
this._mainContentResized$ = new Subject();
|
|
1794
|
+
this.renderer = rendererFactory2.createRenderer(null, null);
|
|
1795
|
+
this.openSidenavSizeSubscription();
|
|
1796
|
+
this.openMouseSubscriptions();
|
|
1797
|
+
this.initMenuWidth(configService.config);
|
|
1699
1798
|
}
|
|
1700
|
-
|
|
1701
|
-
this.
|
|
1799
|
+
ngOnDestroy() {
|
|
1800
|
+
this.sidenavSizeSubscription.unsubscribe();
|
|
1702
1801
|
}
|
|
1703
|
-
|
|
1704
|
-
this.
|
|
1802
|
+
toggleSideBar() {
|
|
1803
|
+
const isExpanded = this._sideBarExpanded$.getValue();
|
|
1804
|
+
this._sideBarExpanded$.next(!isExpanded);
|
|
1705
1805
|
}
|
|
1706
|
-
|
|
1707
|
-
this.
|
|
1806
|
+
collapseSideBar() {
|
|
1807
|
+
this._sideBarExpanded$.next(false);
|
|
1708
1808
|
}
|
|
1709
|
-
|
|
1710
|
-
this.
|
|
1809
|
+
togglePanel() {
|
|
1810
|
+
const isExpanded = this._panelExpanded$.getValue();
|
|
1811
|
+
this._panelExpanded$.next(!isExpanded);
|
|
1711
1812
|
}
|
|
1712
|
-
|
|
1713
|
-
this.
|
|
1714
|
-
}
|
|
1715
|
-
setPageHeadHeight(height) {
|
|
1716
|
-
this._pageHeadHeight$.next(height);
|
|
1717
|
-
}
|
|
1718
|
-
enableSmallTitle() {
|
|
1719
|
-
this._smallTitle$.next(true);
|
|
1720
|
-
}
|
|
1721
|
-
disableSmallTitle() {
|
|
1722
|
-
this._smallTitle$.next(false);
|
|
1813
|
+
setPanelExpanded(isExpanded) {
|
|
1814
|
+
this._panelExpanded$.next(isExpanded);
|
|
1723
1815
|
}
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
if (featureToggles && featureToggles.hasOwnProperty('showUserNameInTopBar')) {
|
|
1727
|
-
return featureToggles.showUserNameInTopBar;
|
|
1728
|
-
}
|
|
1729
|
-
return true;
|
|
1816
|
+
setSideBarExpanded(isExpanded) {
|
|
1817
|
+
this._sideBarExpanded$.next(isExpanded);
|
|
1730
1818
|
}
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
}
|
|
1734
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageHeaderService, decorators: [{
|
|
1735
|
-
type: Injectable,
|
|
1736
|
-
args: [{
|
|
1737
|
-
providedIn: 'root',
|
|
1738
|
-
}]
|
|
1739
|
-
}], ctorParameters: () => [{ type: i1$1.ConfigService }] });
|
|
1740
|
-
|
|
1741
|
-
/*
|
|
1742
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1743
|
-
*
|
|
1744
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1745
|
-
* you may not use this file except in compliance with the License.
|
|
1746
|
-
* You may obtain a copy of the License at
|
|
1747
|
-
*
|
|
1748
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1749
|
-
*
|
|
1750
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1751
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1752
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1753
|
-
* See the License for the specific language governing permissions and
|
|
1754
|
-
* limitations under the License.
|
|
1755
|
-
*/
|
|
1756
|
-
class CdsThemeService {
|
|
1757
|
-
get preferredTheme$() {
|
|
1758
|
-
return this._preferredTheme$.pipe(filter(theme => !!theme));
|
|
1819
|
+
setLargeScreen(isLarge) {
|
|
1820
|
+
this._largeScreen$.next(isLarge);
|
|
1759
1821
|
}
|
|
1760
|
-
|
|
1761
|
-
|
|
1822
|
+
setMouseOnTopBar(mouseOnTopBar) {
|
|
1823
|
+
this._mouseOnTopBar$.next(mouseOnTopBar);
|
|
1762
1824
|
}
|
|
1763
|
-
|
|
1764
|
-
|
|
1825
|
+
setSidenavElement(element) {
|
|
1826
|
+
this._sidenavElement$.next(element);
|
|
1827
|
+
this.createResizeBorderElement(element);
|
|
1765
1828
|
}
|
|
1766
|
-
|
|
1767
|
-
this.
|
|
1768
|
-
this._currentTheme$ = new BehaviorSubject(null);
|
|
1769
|
-
this._subscriptions = new Subscription();
|
|
1770
|
-
this.openDarkModeSubscription();
|
|
1829
|
+
setContentElement(element) {
|
|
1830
|
+
this._contentElement$.next(element);
|
|
1771
1831
|
}
|
|
1772
|
-
|
|
1773
|
-
this.
|
|
1832
|
+
setCollapsibleWidescreenMenu(collapsible) {
|
|
1833
|
+
this._collapsibleWidescreenMenu$.next(collapsible);
|
|
1834
|
+
if (collapsible) {
|
|
1835
|
+
this.collapseSideBar();
|
|
1836
|
+
}
|
|
1774
1837
|
}
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
this._preferredTheme$.next(selectedTheme);
|
|
1838
|
+
onMainContentResize() {
|
|
1839
|
+
this._mainContentResized$.next(null);
|
|
1778
1840
|
}
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1841
|
+
createResizeBorderElement(sidenavElement) {
|
|
1842
|
+
const borderElement = this.renderer.createElement('div');
|
|
1843
|
+
this.renderer.addClass(borderElement, 'resize-border');
|
|
1844
|
+
this.renderer.appendChild(sidenavElement, borderElement);
|
|
1845
|
+
this._resizeBorderElement$.next(borderElement);
|
|
1846
|
+
this.renderer.listen(borderElement, 'mouseenter', () => {
|
|
1847
|
+
this.renderer.addClass(borderElement, 'resize-hover');
|
|
1848
|
+
});
|
|
1849
|
+
this.renderer.listen(borderElement, 'mouseleave', () => {
|
|
1850
|
+
this._isResizing$.pipe(take(1)).subscribe(isResizing => {
|
|
1851
|
+
if (!isResizing) {
|
|
1852
|
+
this.renderer.removeClass(borderElement, 'resize-hover');
|
|
1853
|
+
}
|
|
1854
|
+
});
|
|
1855
|
+
});
|
|
1856
|
+
this.renderer.listen(borderElement, 'mousedown', (event) => {
|
|
1857
|
+
this._sidenavWidth$.pipe(take(1)).subscribe(sidenavWidth => {
|
|
1858
|
+
this.sidenavWidthOnClick = sidenavWidth;
|
|
1859
|
+
this.xOnClick = event.pageX;
|
|
1860
|
+
this._isResizing$.next(true);
|
|
1861
|
+
this.renderer.setStyle(document.body, 'user-select', 'none');
|
|
1862
|
+
this.renderer.setStyle(document.body, 'cursor', 'col-resize');
|
|
1863
|
+
this.renderer.setStyle(document.querySelector('.cds--side-nav__navigation'), 'pointer-events', 'none');
|
|
1864
|
+
this.renderer.setStyle(document.querySelector('.main-content'), 'pointer-events', 'none');
|
|
1865
|
+
});
|
|
1797
1866
|
});
|
|
1798
1867
|
}
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1868
|
+
openSidenavSizeSubscription() {
|
|
1869
|
+
this.sidenavSizeSubscription = combineLatest([
|
|
1870
|
+
this._largeScreen$,
|
|
1871
|
+
this._sidenavWidth$,
|
|
1872
|
+
this._sidenavElement$,
|
|
1873
|
+
this._contentElement$,
|
|
1874
|
+
this._resizeBorderElement$,
|
|
1875
|
+
this._collapsibleWidescreenMenu$,
|
|
1876
|
+
]).subscribe(([largeScreen, sidenavWidth, sidenavElement, contentElement, resizeBorderElement, collapsibleWidescreenMenu,]) => {
|
|
1877
|
+
if ((!largeScreen || collapsibleWidescreenMenu) &&
|
|
1878
|
+
sidenavElement &&
|
|
1879
|
+
contentElement &&
|
|
1880
|
+
resizeBorderElement) {
|
|
1881
|
+
this.renderer.removeStyle(sidenavElement, 'min-width');
|
|
1882
|
+
this.renderer.removeStyle(sidenavElement, 'width');
|
|
1883
|
+
this.renderer.removeStyle(sidenavElement, 'transition');
|
|
1884
|
+
this.renderer.removeStyle(contentElement, 'padding-left');
|
|
1885
|
+
this.renderer.addClass(resizeBorderElement, 'resize-border--invisible');
|
|
1810
1886
|
}
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
};
|
|
1887
|
+
else if (largeScreen &&
|
|
1888
|
+
sidenavElement &&
|
|
1889
|
+
contentElement &&
|
|
1890
|
+
typeof sidenavWidth === 'number') {
|
|
1891
|
+
const pixelWidth = `${sidenavWidth}px`;
|
|
1892
|
+
this.renderer.setStyle(sidenavElement, 'min-width', `${pixelWidth}`);
|
|
1893
|
+
this.renderer.setStyle(sidenavElement, 'width', `${pixelWidth}`);
|
|
1894
|
+
this.renderer.setStyle(sidenavElement, 'transition', 'none');
|
|
1895
|
+
this.renderer.setStyle(contentElement, 'padding-left', `calc(2rem + ${pixelWidth})`);
|
|
1896
|
+
this.renderer.removeClass(resizeBorderElement, 'resize-border--invisible');
|
|
1817
1897
|
}
|
|
1818
|
-
mediaListQuery.addEventListener('change', emitValue);
|
|
1819
|
-
subscriber.next(mediaListQuery.matches);
|
|
1820
|
-
return () => {
|
|
1821
|
-
mediaListQuery.removeEventListener('change', emitValue);
|
|
1822
|
-
!subscriber.closed && subscriber.complete();
|
|
1823
|
-
};
|
|
1824
1898
|
});
|
|
1825
1899
|
}
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
constructor(http, configService) {
|
|
1838
|
-
this.http = http;
|
|
1839
|
-
this.configService = configService;
|
|
1840
|
-
this.valtimoApiConfig = this.configService.config.valtimoApi;
|
|
1841
|
-
}
|
|
1842
|
-
query(params) {
|
|
1843
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-fields`, {
|
|
1844
|
-
observe: 'response',
|
|
1845
|
-
params,
|
|
1846
|
-
});
|
|
1847
|
-
}
|
|
1848
|
-
queryPage(params) {
|
|
1849
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}v2/choice-fields`, {
|
|
1850
|
-
params,
|
|
1900
|
+
openMouseSubscriptions() {
|
|
1901
|
+
this.mouseXSubscription = combineLatest([this._mouseX$, this._isResizing$])
|
|
1902
|
+
.pipe(debounceTime(3))
|
|
1903
|
+
.subscribe(([x, isResizing]) => {
|
|
1904
|
+
if (isResizing) {
|
|
1905
|
+
const offSetWidth = this.xOnClick - x;
|
|
1906
|
+
const newSidenavWidth = this.sidenavWidthOnClick - offSetWidth;
|
|
1907
|
+
if (newSidenavWidth <= this.maxMenuWidth && newSidenavWidth >= this.minMenuWidth) {
|
|
1908
|
+
this._sidenavWidth$.next(newSidenavWidth);
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1851
1911
|
});
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-fields/${id}`);
|
|
1855
|
-
}
|
|
1856
|
-
create(choiceField) {
|
|
1857
|
-
return this.http.post(`${this.valtimoApiConfig.endpointUri}v1/choice-fields`, choiceField);
|
|
1858
|
-
}
|
|
1859
|
-
delete(id) {
|
|
1860
|
-
return this.http.delete(`${this.valtimoApiConfig.endpointUri}v1/choice-fields/${id}`);
|
|
1861
|
-
}
|
|
1862
|
-
update(choiceField) {
|
|
1863
|
-
return this.http.put(`${this.valtimoApiConfig.endpointUri}v1/choice-fields`, choiceField);
|
|
1864
|
-
}
|
|
1865
|
-
queryValues(keyName, params) {
|
|
1866
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values/${keyName}/values`, { observe: 'response', params });
|
|
1867
|
-
}
|
|
1868
|
-
queryValuesPage(keyName, params) {
|
|
1869
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}v2/choice-field-values/${keyName}/values`, { params });
|
|
1870
|
-
}
|
|
1871
|
-
getValue(choiceFieldId) {
|
|
1872
|
-
return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values/${choiceFieldId}`);
|
|
1873
|
-
}
|
|
1874
|
-
updateValue(choiceFieldValue, choiceFieldName) {
|
|
1875
|
-
return this.http.put(`${this.valtimoApiConfig.endpointUri}v1/choice-field-values`, choiceFieldValue, {
|
|
1876
|
-
params: { choice_field_name: choiceFieldName },
|
|
1912
|
+
this.mouseUpSubscription = fromEvent(document, 'mouseup').subscribe(() => {
|
|
1913
|
+
this.stopResizing();
|
|
1877
1914
|
});
|
|
1878
1915
|
}
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1916
|
+
stopResizing() {
|
|
1917
|
+
const mainContent = document.querySelector('.main-content');
|
|
1918
|
+
const sideNav = document.querySelector('.cds--side-nav__navigation');
|
|
1919
|
+
this.renderer.removeStyle(document.body, 'user-select');
|
|
1920
|
+
this.renderer.removeStyle(document.body, 'cursor');
|
|
1921
|
+
this._isResizing$.next(false);
|
|
1922
|
+
this.renderer.removeClass(this._resizeBorderElement$.getValue(), 'resize-hover');
|
|
1923
|
+
if (sideNav) {
|
|
1924
|
+
this.renderer.removeStyle(sideNav, 'pointer-events');
|
|
1925
|
+
}
|
|
1926
|
+
if (mainContent) {
|
|
1927
|
+
this.renderer.removeStyle(mainContent, 'pointer-events');
|
|
1928
|
+
}
|
|
1929
|
+
localStorage.setItem('sidenavWidth', this._sidenavWidth$.getValue().toString());
|
|
1884
1930
|
}
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1931
|
+
initMenuWidth(config) {
|
|
1932
|
+
const customLeftSidebar = config?.customLeftSidebar;
|
|
1933
|
+
const localStorageWidth = localStorage.getItem('sidenavWidth');
|
|
1934
|
+
const localStorageWidthNumber = localStorageWidth && +localStorageWidth;
|
|
1935
|
+
const configWidth = customLeftSidebar?.defaultMenuWidth;
|
|
1936
|
+
this._sidenavWidth$.next(localStorageWidthNumber || configWidth || 256);
|
|
1937
|
+
this.minMenuWidth = customLeftSidebar?.minMenuWidth || 150;
|
|
1938
|
+
this.maxMenuWidth = customLeftSidebar?.maxMenuWidth || 500;
|
|
1891
1939
|
}
|
|
1892
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1893
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1940
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ShellService, deps: [{ token: i0.RendererFactory2 }, { token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1941
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ShellService, providedIn: 'root' }); }
|
|
1894
1942
|
}
|
|
1895
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
1943
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ShellService, decorators: [{
|
|
1896
1944
|
type: Injectable,
|
|
1897
1945
|
args: [{
|
|
1898
1946
|
providedIn: 'root',
|
|
1899
1947
|
}]
|
|
1900
|
-
}], ctorParameters: () => [{ type:
|
|
1948
|
+
}], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: i1$2.ConfigService }] });
|
|
1901
1949
|
|
|
1902
1950
|
/*
|
|
1903
1951
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1914,150 +1962,137 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1914
1962
|
* See the License for the specific language governing permissions and
|
|
1915
1963
|
* limitations under the License.
|
|
1916
1964
|
*/
|
|
1917
|
-
class
|
|
1965
|
+
class StepperService {
|
|
1918
1966
|
constructor() {
|
|
1919
|
-
this.
|
|
1920
|
-
this.
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
return this._actionsViewContainerRef$.pipe(filter(ref => !!ref));
|
|
1967
|
+
this._steps$ = new BehaviorSubject([]);
|
|
1968
|
+
this._currentStepIndex$ = new BehaviorSubject(0);
|
|
1969
|
+
this._returnToFirstStep$ = new Subject();
|
|
1970
|
+
this._cancelClick$ = new Subject();
|
|
1971
|
+
this._complete$ = new Subject();
|
|
1972
|
+
this._nextStep$ = new Subject();
|
|
1973
|
+
this._disabled$ = new BehaviorSubject(false);
|
|
1927
1974
|
}
|
|
1928
|
-
|
|
1929
|
-
this.
|
|
1975
|
+
get currentStepIndex$() {
|
|
1976
|
+
return this._currentStepIndex$.asObservable();
|
|
1930
1977
|
}
|
|
1931
|
-
|
|
1932
|
-
this.
|
|
1978
|
+
get steps$() {
|
|
1979
|
+
return this._steps$.asObservable();
|
|
1933
1980
|
}
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
}
|
|
1937
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageSubtitleService, decorators: [{
|
|
1938
|
-
type: Injectable,
|
|
1939
|
-
args: [{
|
|
1940
|
-
providedIn: 'root',
|
|
1941
|
-
}]
|
|
1942
|
-
}] });
|
|
1943
|
-
|
|
1944
|
-
/*
|
|
1945
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1946
|
-
*
|
|
1947
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1948
|
-
* you may not use this file except in compliance with the License.
|
|
1949
|
-
* You may obtain a copy of the License at
|
|
1950
|
-
*
|
|
1951
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1952
|
-
*
|
|
1953
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1954
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1955
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1956
|
-
* See the License for the specific language governing permissions and
|
|
1957
|
-
* limitations under the License.
|
|
1958
|
-
*/
|
|
1959
|
-
class PageTitleService {
|
|
1960
|
-
get customPageTitle$() {
|
|
1961
|
-
return this._customPageTitle$.asObservable();
|
|
1981
|
+
get nextStepAvailable$() {
|
|
1982
|
+
return combineLatest([this._steps$, this._currentStepIndex$]).pipe(map$1(([steps, currentStepIndex]) => currentStepIndex < steps.length - 1));
|
|
1962
1983
|
}
|
|
1963
|
-
get
|
|
1964
|
-
return this.
|
|
1984
|
+
get previousStepAvailable$() {
|
|
1985
|
+
return this._currentStepIndex$.pipe(map$1(currentStepIndex => currentStepIndex > 0));
|
|
1965
1986
|
}
|
|
1966
|
-
get
|
|
1967
|
-
return this.
|
|
1987
|
+
get returnToFirstStep$() {
|
|
1988
|
+
return this._returnToFirstStep$.asObservable();
|
|
1968
1989
|
}
|
|
1969
|
-
get
|
|
1970
|
-
return this.
|
|
1990
|
+
get cancelClick$() {
|
|
1991
|
+
return this._cancelClick$.asObservable();
|
|
1971
1992
|
}
|
|
1972
|
-
get
|
|
1973
|
-
return this.
|
|
1993
|
+
get complete$() {
|
|
1994
|
+
return this._complete$.asObservable();
|
|
1974
1995
|
}
|
|
1975
|
-
get
|
|
1976
|
-
return this.
|
|
1996
|
+
get nextStep$() {
|
|
1997
|
+
return this._nextStep$.asObservable();
|
|
1977
1998
|
}
|
|
1978
|
-
get
|
|
1979
|
-
return this.
|
|
1999
|
+
get disabled$() {
|
|
2000
|
+
return this._disabled$.asObservable();
|
|
1980
2001
|
}
|
|
1981
|
-
|
|
1982
|
-
|
|
2002
|
+
setSteps(steps) {
|
|
2003
|
+
const mappedSteps = steps.map((step, index) => ({
|
|
2004
|
+
...step,
|
|
2005
|
+
isFirst: index === 0,
|
|
2006
|
+
isLast: index === steps.length - 1,
|
|
2007
|
+
}));
|
|
2008
|
+
this._steps$.next(mappedSteps);
|
|
1983
2009
|
}
|
|
1984
|
-
|
|
1985
|
-
this.
|
|
1986
|
-
this._customPageTitle$ = new BehaviorSubject('');
|
|
1987
|
-
this._customPageTitleSet$ = new BehaviorSubject(false);
|
|
1988
|
-
this._customPageSubtitle$ = new BehaviorSubject('');
|
|
1989
|
-
this._customPageSubtitleSet$ = new BehaviorSubject(false);
|
|
1990
|
-
this._hasPageActions$ = new BehaviorSubject(false);
|
|
1991
|
-
this._pageActionsFullWidth$ = new BehaviorSubject(false);
|
|
1992
|
-
this._pageActionsViewContainerRef$ = new BehaviorSubject(null);
|
|
1993
|
-
this._pageTitleHidden$ = new BehaviorSubject(false);
|
|
1994
|
-
this.openRouteSubscription();
|
|
2010
|
+
setCurrentStepIndex(index) {
|
|
2011
|
+
this._currentStepIndex$.next(index);
|
|
1995
2012
|
}
|
|
1996
|
-
|
|
1997
|
-
this.
|
|
2013
|
+
goToNextStep() {
|
|
2014
|
+
combineLatest([this.nextStepAvailable$, this._currentStepIndex$])
|
|
2015
|
+
.pipe(take(1))
|
|
2016
|
+
.subscribe(([nextStepAvailable, currentStepIndex]) => {
|
|
2017
|
+
if (nextStepAvailable) {
|
|
2018
|
+
this.setCurrentStepIndex(currentStepIndex + 1);
|
|
2019
|
+
this._nextStep$.next(currentStepIndex);
|
|
2020
|
+
}
|
|
2021
|
+
});
|
|
1998
2022
|
}
|
|
1999
|
-
|
|
2000
|
-
this.
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2023
|
+
goToPreviousStep() {
|
|
2024
|
+
combineLatest([this.previousStepAvailable$, this._currentStepIndex$])
|
|
2025
|
+
.pipe(take(1))
|
|
2026
|
+
.subscribe(([previousStepAvailable, currentStepIndex]) => {
|
|
2027
|
+
if (previousStepAvailable) {
|
|
2028
|
+
this.setCurrentStepIndex(currentStepIndex - 1);
|
|
2029
|
+
}
|
|
2030
|
+
});
|
|
2005
2031
|
}
|
|
2006
|
-
|
|
2007
|
-
this.
|
|
2008
|
-
this._customPageSubtitleSet$.next(true);
|
|
2032
|
+
cancelClick() {
|
|
2033
|
+
this._cancelClick$.next(null);
|
|
2009
2034
|
}
|
|
2010
|
-
|
|
2011
|
-
this.
|
|
2035
|
+
complete() {
|
|
2036
|
+
this._complete$.next(null);
|
|
2012
2037
|
}
|
|
2013
|
-
|
|
2014
|
-
this.
|
|
2038
|
+
disable() {
|
|
2039
|
+
this._disabled$.next(true);
|
|
2015
2040
|
}
|
|
2016
|
-
|
|
2017
|
-
this.
|
|
2041
|
+
enable() {
|
|
2042
|
+
this._disabled$.next(false);
|
|
2018
2043
|
}
|
|
2019
|
-
|
|
2020
|
-
this.
|
|
2044
|
+
returnToFirstStep() {
|
|
2045
|
+
this.setCurrentStepIndex(0);
|
|
2021
2046
|
}
|
|
2022
|
-
|
|
2023
|
-
|
|
2047
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2048
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperService }); }
|
|
2049
|
+
}
|
|
2050
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StepperService, decorators: [{
|
|
2051
|
+
type: Injectable
|
|
2052
|
+
}] });
|
|
2053
|
+
|
|
2054
|
+
/*
|
|
2055
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2056
|
+
*
|
|
2057
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2058
|
+
* you may not use this file except in compliance with the License.
|
|
2059
|
+
* You may obtain a copy of the License at
|
|
2060
|
+
*
|
|
2061
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2062
|
+
*
|
|
2063
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2064
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2065
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2066
|
+
* See the License for the specific language governing permissions and
|
|
2067
|
+
* limitations under the License.
|
|
2068
|
+
*/
|
|
2069
|
+
class UserInterfaceService {
|
|
2070
|
+
constructor() {
|
|
2071
|
+
this._showPageHeader$ = new BehaviorSubject(true);
|
|
2024
2072
|
}
|
|
2025
|
-
|
|
2026
|
-
this.
|
|
2073
|
+
get showPageHeader$() {
|
|
2074
|
+
return this._showPageHeader$.asObservable();
|
|
2027
2075
|
}
|
|
2028
|
-
|
|
2029
|
-
this.
|
|
2076
|
+
showPageHeader() {
|
|
2077
|
+
this._showPageHeader$.next(true);
|
|
2030
2078
|
}
|
|
2031
|
-
|
|
2032
|
-
this.
|
|
2079
|
+
hidePageHeader() {
|
|
2080
|
+
this._showPageHeader$.next(false);
|
|
2033
2081
|
}
|
|
2034
|
-
|
|
2035
|
-
this.
|
|
2036
|
-
.
|
|
2037
|
-
|
|
2038
|
-
event instanceof ResolveEnd), tap(([_, pageActionsViewContainerRef]) => {
|
|
2039
|
-
if (!this._preventReset) {
|
|
2040
|
-
this._customPageTitle$.next('');
|
|
2041
|
-
this._customPageTitleSet$.next(false);
|
|
2042
|
-
this._customPageSubtitle$.next('');
|
|
2043
|
-
this._customPageSubtitleSet$.next(false);
|
|
2044
|
-
}
|
|
2045
|
-
if (pageActionsViewContainerRef && !this._preventReset) {
|
|
2046
|
-
pageActionsViewContainerRef.clear();
|
|
2047
|
-
this.setHasPageActions(false);
|
|
2048
|
-
}
|
|
2049
|
-
}))
|
|
2050
|
-
.subscribe();
|
|
2082
|
+
togglePageHeader() {
|
|
2083
|
+
this._showPageHeader$.pipe(take(1)).subscribe(showPageHeader => {
|
|
2084
|
+
this._showPageHeader$.next(!showPageHeader);
|
|
2085
|
+
});
|
|
2051
2086
|
}
|
|
2052
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
2053
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
2087
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInterfaceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2088
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInterfaceService, providedIn: 'root' }); }
|
|
2054
2089
|
}
|
|
2055
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
2090
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInterfaceService, decorators: [{
|
|
2056
2091
|
type: Injectable,
|
|
2057
2092
|
args: [{
|
|
2058
2093
|
providedIn: 'root',
|
|
2059
2094
|
}]
|
|
2060
|
-
}]
|
|
2095
|
+
}] });
|
|
2061
2096
|
|
|
2062
2097
|
/*
|
|
2063
2098
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -2074,33 +2109,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2074
2109
|
* See the License for the specific language governing permissions and
|
|
2075
2110
|
* limitations under the License.
|
|
2076
2111
|
*/
|
|
2077
|
-
class
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
.replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')
|
|
2082
|
-
.replace(/_[-_]+/g, '_')
|
|
2083
|
-
.replace(/^[^a-z]+|[^a-z0-9]+$/g, '');
|
|
2084
|
-
if (!usedKeys.includes(dashCaseKey)) {
|
|
2085
|
-
return dashCaseKey;
|
|
2086
|
-
}
|
|
2087
|
-
return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);
|
|
2112
|
+
class ValtimoModalService {
|
|
2113
|
+
constructor() {
|
|
2114
|
+
this._scrollToTop$ = new Subject();
|
|
2115
|
+
this._caseDefinitionKey$ = new BehaviorSubject('');
|
|
2088
2116
|
}
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
const lastNumberFromCurrentKey = numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];
|
|
2092
|
-
const newKey = lastNumberFromCurrentKey
|
|
2093
|
-
? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`
|
|
2094
|
-
: `${dashCaseKey}-1`;
|
|
2095
|
-
if (usedKeys.includes(newKey)) {
|
|
2096
|
-
return this.getUniqueKeyWithNumber(newKey, usedKeys);
|
|
2097
|
-
}
|
|
2098
|
-
return newKey;
|
|
2117
|
+
get scrollToTop$() {
|
|
2118
|
+
return this._scrollToTop$.asObservable();
|
|
2099
2119
|
}
|
|
2100
|
-
|
|
2101
|
-
|
|
2120
|
+
get caseDefinitionKey$() {
|
|
2121
|
+
return this._caseDefinitionKey$.pipe(filter(caseDefinitionKey => !!caseDefinitionKey));
|
|
2122
|
+
}
|
|
2123
|
+
scrollToTop() {
|
|
2124
|
+
this._scrollToTop$.next(null);
|
|
2125
|
+
}
|
|
2126
|
+
setCaseDefinitionKey(caseDefinitionKey) {
|
|
2127
|
+
this._caseDefinitionKey$.next(caseDefinitionKey);
|
|
2128
|
+
}
|
|
2129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValtimoModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2130
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValtimoModalService, providedIn: 'root' }); }
|
|
2102
2131
|
}
|
|
2103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type:
|
|
2132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValtimoModalService, decorators: [{
|
|
2104
2133
|
type: Injectable,
|
|
2105
2134
|
args: [{
|
|
2106
2135
|
providedIn: 'root',
|
|
@@ -2198,7 +2227,7 @@ class ValuePathSelectorService extends BaseApiService {
|
|
|
2198
2227
|
getPrefixesFromResults(results) {
|
|
2199
2228
|
return [...new Set(results.map((result) => result.path.split(':')[0]))];
|
|
2200
2229
|
}
|
|
2201
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValuePathSelectorService, deps: [{ token: i1$
|
|
2230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValuePathSelectorService, deps: [{ token: i1$1.HttpClient }, { token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2202
2231
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValuePathSelectorService, providedIn: 'root' }); }
|
|
2203
2232
|
}
|
|
2204
2233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValuePathSelectorService, decorators: [{
|
|
@@ -2206,7 +2235,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2206
2235
|
args: [{
|
|
2207
2236
|
providedIn: 'root',
|
|
2208
2237
|
}]
|
|
2209
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2238
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1$2.ConfigService }] });
|
|
2210
2239
|
|
|
2211
2240
|
/*
|
|
2212
2241
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3376,13 +3405,13 @@ class TopbarComponent {
|
|
|
3376
3405
|
base64string,
|
|
3377
3406
|
};
|
|
3378
3407
|
}
|
|
3379
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TopbarComponent, deps: [{ token: i1$5.KeycloakService }, { token: i1$
|
|
3408
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TopbarComponent, deps: [{ token: i1$5.KeycloakService }, { token: i1$2.ConfigService }, { token: i3.IconService }, { token: ShellService }, { token: i5.DomSanitizer }, { token: PageHeaderService }, { token: CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3380
3409
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TopbarComponent, isStandalone: false, selector: "valtimo-topbar", host: { properties: { "class.cds--header": "this.headerClass" } }, viewQueries: [{ propertyName: "_headerVcr", first: true, predicate: ["headerVcr"], 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<cds-header [useRouter]=\"false\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\">\n <a\n *ngIf=\"logoBase64$ | async as logoBase64\"\n class=\"logo-link\"\n [ngClass]=\"{'logo-link--large-margin': largeLogoMargin}\"\n [routerLink]=\"['/']\"\n [title]=\"applicationTitle\"\n >\n <img [src]=\"logoBase64\" class=\"logo-image\" />\n </a>\n <cds-hamburger\n *ngIf=\"(largeScreen$ | async) === false || (collapsibleWidescreenMenu$ | async)\"\n [active]=\"sideBarExpanded$ | async\"\n (selected)=\"toggleSideBar()\"\n ></cds-hamburger>\n <cds-header-global>\n <ng-container #headerVcr></ng-container>\n\n <ng-container *ngTemplateOutlet=\"userFullName\"></ng-container>\n\n <cds-header-action\n title=\"action\"\n [active]=\"panelExpanded$ | async\"\n (activeChange)=\"setPanelExpanded($event)\"\n >\n <svg cdsIcon=\"user\" size=\"20\"></svg>\n </cds-header-action>\n </cds-header-global>\n</cds-header>\n\n<ng-template #userFullName>\n <div\n class=\"user-full-name\"\n *ngIf=\"(showUserNameInTopBar$ | async) && {userFullName: userFullName$ | async} as obs\"\n >\n <v-paragraph [loading]=\"!obs.userFullName\">{{ obs.userFullName }}</v-paragraph>\n </div>\n</ng-template>\n", styles: [".user-icon{font-size:30px}.be-toggle-right-sidebar{display:flex}.user-full-name{display:flex;height:100%;align-items:center;justify-content:center;margin-inline-end:var(--v-top-bar-user-name-spacing);flex-shrink:0}::ng-deep .cds--header__name{display:none!important}.logo-link{height:100%;padding-left:16px;padding-top:8px;padding-bottom:8px}.logo-link--large-margin{padding-top:16px;padding-bottom:16px}.logo-image{height:100%;object-fit:contain}\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: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "component", type: i3.Header, selector: "cds-header, ibm-header", inputs: ["skipTo", "name", "brand", "href", "route", "routeExtras", "useRouter"], outputs: ["navigation"] }, { kind: "component", type: i3.HeaderGlobal, selector: "cds-header-global, ibm-header-global" }, { kind: "component", type: i3.HeaderAction, selector: "cds-header-action, ibm-header-action", inputs: ["description", "ariaLabel", "active"], outputs: ["activeChange", "selected"] }, { kind: "component", type: i3.Hamburger, selector: "cds-hamburger, ibm-hamburger", inputs: ["active", "activeTitle", "inactiveTitle"], outputs: ["selected"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
3381
3410
|
}
|
|
3382
3411
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TopbarComponent, decorators: [{
|
|
3383
3412
|
type: Component,
|
|
3384
3413
|
args: [{ selector: 'valtimo-topbar', 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<cds-header [useRouter]=\"false\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\">\n <a\n *ngIf=\"logoBase64$ | async as logoBase64\"\n class=\"logo-link\"\n [ngClass]=\"{'logo-link--large-margin': largeLogoMargin}\"\n [routerLink]=\"['/']\"\n [title]=\"applicationTitle\"\n >\n <img [src]=\"logoBase64\" class=\"logo-image\" />\n </a>\n <cds-hamburger\n *ngIf=\"(largeScreen$ | async) === false || (collapsibleWidescreenMenu$ | async)\"\n [active]=\"sideBarExpanded$ | async\"\n (selected)=\"toggleSideBar()\"\n ></cds-hamburger>\n <cds-header-global>\n <ng-container #headerVcr></ng-container>\n\n <ng-container *ngTemplateOutlet=\"userFullName\"></ng-container>\n\n <cds-header-action\n title=\"action\"\n [active]=\"panelExpanded$ | async\"\n (activeChange)=\"setPanelExpanded($event)\"\n >\n <svg cdsIcon=\"user\" size=\"20\"></svg>\n </cds-header-action>\n </cds-header-global>\n</cds-header>\n\n<ng-template #userFullName>\n <div\n class=\"user-full-name\"\n *ngIf=\"(showUserNameInTopBar$ | async) && {userFullName: userFullName$ | async} as obs\"\n >\n <v-paragraph [loading]=\"!obs.userFullName\">{{ obs.userFullName }}</v-paragraph>\n </div>\n</ng-template>\n", styles: [".user-icon{font-size:30px}.be-toggle-right-sidebar{display:flex}.user-full-name{display:flex;height:100%;align-items:center;justify-content:center;margin-inline-end:var(--v-top-bar-user-name-spacing);flex-shrink:0}::ng-deep .cds--header__name{display:none!important}.logo-link{height:100%;padding-left:16px;padding-top:8px;padding-bottom:8px}.logo-link--large-margin{padding-top:16px;padding-bottom:16px}.logo-image{height:100%;object-fit:contain}\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"] }]
|
|
3385
|
-
}], ctorParameters: () => [{ type: i1$5.KeycloakService }, { type: i1$
|
|
3414
|
+
}], ctorParameters: () => [{ type: i1$5.KeycloakService }, { type: i1$2.ConfigService }, { type: i3.IconService }, { type: ShellService }, { type: i5.DomSanitizer }, { type: PageHeaderService }, { type: CdsThemeService }], propDecorators: { headerClass: [{
|
|
3386
3415
|
type: HostBinding,
|
|
3387
3416
|
args: ['class.cds--header']
|
|
3388
3417
|
}], _headerVcr: [{
|
|
@@ -3607,13 +3636,13 @@ class MenuService {
|
|
|
3607
3636
|
functionValue,
|
|
3608
3637
|
]);
|
|
3609
3638
|
}
|
|
3610
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MenuService, deps: [{ token: i1$
|
|
3639
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MenuService, deps: [{ token: i1$2.ConfigService }, { token: i1$1.HttpClient }, { token: i4.NGXLogger }, { token: i1$2.MenuIncludeService }, { token: PendingChangesService }, { token: i1$3.Router }, { token: i6.UserProviderService }, { token: i1$5.KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3611
3640
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MenuService, providedIn: 'root' }); }
|
|
3612
3641
|
}
|
|
3613
3642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MenuService, decorators: [{
|
|
3614
3643
|
type: Injectable,
|
|
3615
3644
|
args: [{ providedIn: 'root' }]
|
|
3616
|
-
}], ctorParameters: () => [{ type: i1$
|
|
3645
|
+
}], ctorParameters: () => [{ type: i1$2.ConfigService }, { type: i1$1.HttpClient }, { type: i4.NGXLogger }, { type: i1$2.MenuIncludeService }, { type: PendingChangesService }, { type: i1$3.Router }, { type: i6.UserProviderService }, { type: i1$5.KeycloakService }] });
|
|
3617
3646
|
|
|
3618
3647
|
/*
|
|
3619
3648
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3812,7 +3841,7 @@ class VersionService {
|
|
|
3812
3841
|
getVersion() {
|
|
3813
3842
|
return this.http.get(`${this.valtimoEndpointUri}v1/valtimo/version`);
|
|
3814
3843
|
}
|
|
3815
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: VersionService, deps: [{ token: i1$
|
|
3844
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: VersionService, deps: [{ token: i1$1.HttpClient }, { token: i1$2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3816
3845
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: VersionService, providedIn: 'root' }); }
|
|
3817
3846
|
}
|
|
3818
3847
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: VersionService, decorators: [{
|
|
@@ -3820,7 +3849,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3820
3849
|
args: [{
|
|
3821
3850
|
providedIn: 'root',
|
|
3822
3851
|
}]
|
|
3823
|
-
}], ctorParameters: () => [{ type: i1$
|
|
3852
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1$2.ConfigService }] });
|
|
3824
3853
|
|
|
3825
3854
|
/*
|
|
3826
3855
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -4105,13 +4134,13 @@ class RightSidebarComponent {
|
|
|
4105
4134
|
}
|
|
4106
4135
|
}));
|
|
4107
4136
|
}
|
|
4108
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RightSidebarComponent, deps: [{ token: i1.TranslateService }, { token: i6.UserProviderService }, { token: i2.FormBuilder }, { token: VersionService }, { token: ShellService }, { token: i0.ElementRef }, { token: i1$
|
|
4137
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RightSidebarComponent, deps: [{ token: i1.TranslateService }, { token: i6.UserProviderService }, { token: i2.FormBuilder }, { token: VersionService }, { token: ShellService }, { token: i0.ElementRef }, { token: i1$2.ConfigService }, { token: i1$2.UserSettingsService }, { token: PageHeaderService }, { token: CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4109
4138
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RightSidebarComponent, isStandalone: false, selector: "valtimo-right-sidebar", host: { listeners: { "document:click": "onPageClick($event.target)" } }, 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=\"right-sidebar-menu\">\n <cds-panel [expanded]=\"panelExpanded$ | async\">\n <div cdsGrid [condensed]=\"true\">\n <div cdsRow>\n <div cdsCol [columnNumbers]=\"{lg: 16}\" class=\"menu-tabs\" cdsLayer>\n <cds-tabs class=\"cds--tab--list--full-width\">\n <cds-tab [heading]=\"'account.title' | translate\">\n <ng-container *ngTemplateOutlet=\"accountTabTemplate\"></ng-container>\n </cds-tab>\n\n <cds-tab [heading]=\"'settings.title' | translate\">\n <ng-container *ngTemplateOutlet=\"settingsTabTemplate\"></ng-container>\n </cds-tab>\n </cds-tabs>\n </div>\n </div>\n </div>\n </cds-panel>\n</div>\n\n<ng-template #accountTabTemplate>\n <ng-container *ngTemplateOutlet=\"accountInformationTemplate\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"linksTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #settingsTabTemplate>\n <ng-container *ngTemplateOutlet=\"languageSettingsTemplate\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"interfaceSettingsTemplate\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"notificationSettingsTemplate\"></ng-container>\n\n @if (showValtimoVersions) {\n <ng-container *ngTemplateOutlet=\"versionTemplate\"></ng-container>\n }\n</ng-template>\n\n<ng-template #accountInformationTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'account.informationTitle' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <ng-container *ngTemplateOutlet=\"accountInformationTableTemplate\"></ng-container>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #accountInformationTableTemplate>\n <div class=\"information-table account-information\">\n <cds-structured-list *ngIf=\"userSubject$ | async as userSubject\">\n <cds-list-row>\n <cds-list-column\n >{{ 'interface.email' | translate }}\n <cds-tag type=\"blue\">{{ userSubject.email }}</cds-tag>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column\n >{{ 'interface.username' | translate }}\n <cds-tag type=\"blue\">{{ userSubject.username }}</cds-tag>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column\n >{{ 'interface.name' | translate }}\n <cds-tag type=\"blue\">{{ userSubject.firstName + ' ' + userSubject.lastName }}</cds-tag>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-template>\n\n<ng-template #linksTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'account.quickLinks' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <ng-container *ngTemplateOutlet=\"linksTableTemplate\"></ng-container>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #linksTableTemplate>\n <div class=\"information-table\">\n <cds-structured-list>\n <cds-list-row>\n <cds-list-column>\n <a href=\"https://docs.valtimo.nl\" target=\"_blank\" cdsLink>{{\n 'account.links.help' | translate\n }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column *ngIf=\"!overrideFeedbackMenuItemToMailTo; else feedbackMailTo\">\n <a href=\"https://www.valtimo.nl/feedback\" target=\"_blank\" cdsLink>{{\n 'account.links.feedback' | translate\n }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"resetUrl\">\n <cds-list-column>\n <a [href]=\"resetUrl\" cdsLink>{{ 'account.links.resetPassword' | translate }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>\n <a href=\"javascript:void(0)\" cdsLink (click)=\"logout()\">{{\n 'account.links.signOut' | translate\n }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"showPlantATreeButton\">\n <cds-list-column>\n <a\n class=\"text-success\"\n href=\"mailto:valtimo@ritense.com?subject=Plant een boom voor Valtimo&body=Hallo Valtimo gebruiker,%0D%0DMet het versturen van deze e-mail gaan we gelijk aan de slag om een boom te planten. Hiermee compenseren we voor een deel de CO2 uitstoot van je Valtimo gebruik.%0D%0DMet Groene Groet,%0D%0DHet Valtimo team%0D%0D*Deze bomenplantactie kan 1 keer ingezet worden door elke geregistreerde Valtimo gebruiker.%0D%0D** Ritense plant ook jaarlijks bomen voor alle Valtimo installaties die in gebruik zijn.\"\n target=\"_blank\"\n cdsLink\n >\n {{ 'account.links.plantATree' | translate }}\n </a>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-template>\n\n<ng-template #languageSettingsTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'settings.language.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <cds-dropdown\n [id]=\"'language-dropdown'\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n (click)=\"$event.stopPropagation()\"\n (selected)=\"updateUserLanguage($event)\"\n >\n <cds-dropdown-list [items]=\"(languageListItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #notificationSettingsTemplate>\n <cds-structured-list *ngIf=\"emailNotificationSettingsWithSideEffects$ | async\">\n <cds-list-header>\n <cds-list-column>{{ 'settings.notification.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <form [formGroup]=\"settingsForm\" class=\"toggle-group\">\n <cds-toggle\n [label]=\"'settings.notification.taskNotifications' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n formControlName=\"taskNotifications\"\n [disabled]=\"updatingSettings$ | async\"\n >\n </cds-toggle>\n <span class=\"description\">{{\n 'settings.notification.emailNotificationsIntro' | translate\n }}</span>\n </form>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>\n <form [formGroup]=\"settingsForm\" class=\"toggle-group\">\n <cds-toggle\n [label]=\"'settings.notification.emailNotifications' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n formControlName=\"emailNotifications\"\n [disabled]=\"updatingSettings$ | async\"\n >\n </cds-toggle>\n <span class=\"description\">{{\n 'settings.notification.taskNotificationsIntro' | translate\n }}</span>\n </form>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #interfaceSettingsTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'settings.interface.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <cds-toggle\n [label]=\"'settings.interface.collapsibleMenu' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n [disabled]=\"updatingUserSettings$ | async\"\n [ngModel]=\"collapsibleWidescreenMenu$ | async\"\n (ngModelChange)=\"setCollapsibleWidescreenMenu($event)\"\n >\n </cds-toggle>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"allowUserThemeSwitching\">\n <cds-list-column>\n <cds-dropdown\n [label]=\"'settings.interface.themePreference' | translate\"\n [appendInline]=\"true\"\n (click)=\"$event.stopPropagation()\"\n (selected)=\"setPreferredTheme($event)\"\n [dropUp]=\"false\"\n >\n <cds-dropdown-list [items]=\"(themeOptions$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"enableCompactModeToggle\">\n <cds-list-column>\n <cds-toggle\n [label]=\"'settings.interface.compactMode' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n [disabled]=\"updatingUserSettings$ | async\"\n [ngModel]=\"compactMode$ | async\"\n (ngModelChange)=\"setCompactMode($event)\"\n >\n </cds-toggle>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"enableShowUserNameToggle\">\n <cds-list-column>\n <cds-toggle\n [label]=\"'settings.interface.showUserName' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n [disabled]=\"updatingUserSettings$ | async\"\n [ngModel]=\"showUserNameInTopBar$ | async\"\n (ngModelChange)=\"setShowUserName($event)\"\n >\n </cds-toggle>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #versionTemplate>\n <ng-container *ngIf=\"{backendVersion: backendVersion$ | async} as obs\">\n <cds-structured-list *ngIf=\"obs.backendVersion || frontendVersion\">\n <cds-list-header>\n <cds-list-column>{{ 'settings.version.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngIf=\"obs.backendVersion\">\n <cds-list-column>\n <div class=\"build-information\">\n <span class=\"build-title\">{{\n 'interface.builds.' + obs.backendVersion.title | translate\n }}</span>\n <div class=\"tag-container\">\n <cds-tag type=\"blue\">{{ obs.backendVersion.version }}</cds-tag>\n </div>\n </div>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"frontendVersion\">\n <cds-list-column>\n <div class=\"build-information\">\n <span class=\"build-title\">{{\n 'interface.builds.valtimo-frontend-libraries' | translate\n }}</span>\n <div class=\"tag-container\">\n <cds-tag type=\"blue\">{{ frontendVersion }}</cds-tag>\n </div>\n </div>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n</ng-template>\n\n<ng-template #feedbackMailTo>\n <cds-list-column>\n <a\n [href]=\"\n 'mailto:' +\n overrideFeedbackMenuItemToMailTo.email +\n '?subject=' +\n (overrideFeedbackMenuItemToMailTo.subjectTranslationKey | translate) +\n '&body=' +\n (overrideFeedbackMenuItemToMailTo.bodyTranslationKey | translate)\n \"\n target=\"_blank\"\n cdsLink\n >\n {{ 'account.links.feedback' | translate }}\n </a>\n </cds-list-column>\n</ng-template>\n", styles: [".be-scroller-settings{padding-bottom:150px!important}.version-holder{position:fixed;bottom:0;width:259px;background-color:#f8f9fa}.info-text{line-height:1em!important;padding-right:70px;margin-bottom:15px}.right-sidebar-menu .cds--tab--list{width:100%}.right-sidebar-menu .menu-tabs .cds--tabs--scrollable__nav-item{width:12rem}.right-sidebar-menu .menu-tabs .cds--tabs--scrollable__nav-item button{width:100%}.right-sidebar-menu .menu-tabs .cds--tab--overflow-nav-button{display:none}.right-sidebar-menu .cds--header-panel{width:20rem;height:calc(100% - 3rem);transition:transform .11s cubic-bezier(.2,0,1,.9);transform:translate(100%)}.right-sidebar-menu .cds--header-panel--expanded{transform:translate(0)}.right-sidebar-menu .cds--panel--overlay{padding-top:0}.right-sidebar-menu .cds--tab-content{padding:0;outline:0}.right-sidebar-menu .cds--structured-list-td{padding-left:1rem;padding-right:1rem}.right-sidebar-menu .toggle-group{display:flex;flex-direction:column}.right-sidebar-menu .toggle-group .description{margin-top:1rem}.right-sidebar-menu cds-structured-list:last-child .cds--structured-list-row:last-child{border-bottom:0}.right-sidebar-menu .cds--grid,.right-sidebar-menu .cds--row,.right-sidebar-menu .menu-tabs{height:100%}.right-sidebar-menu .cds--grid--condensed{padding-left:1rem;padding-right:1rem}.right-sidebar-menu .cds--tab--list--full-width{display:flex;flex-direction:column;height:100%}.right-sidebar-menu cds-tab{overflow:auto}.right-sidebar-menu .build-information{display:inline-flex;flex-direction:column}.right-sidebar-menu .build-information:not(:last-child){margin-bottom:1rem}.right-sidebar-menu .build-information .tag-container .cds--tag{margin-left:0;margin-right:0;margin-bottom:0}.right-sidebar-menu .information-table cds-list-row:first-child{border-top:0}.right-sidebar-menu .information-table cds-list-row:first-child cds-list-column{border-top:0;padding-top:0}.right-sidebar-menu .information-table cds-list-row:last-child cds-list-column{padding-bottom:0}.right-sidebar-menu .information-table cds-list-row cds-list-column:first-child{padding-left:0!important}.account-information .cds--structured-list-td{display:inline-flex;flex-direction:column;border:none;min-width:100%}.account-information .cds--structured-list-td .cds--tag{margin:0;margin-top:.25rem;width:fit-content}.cds--select-input{background-color:var(--cds-field-02)}\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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.Panel, selector: "cds-panel, ibm-panel", inputs: ["expanded", "ariaLabel"] }, { kind: "directive", type: i3.ColumnDirective, selector: "[cdsCol], [ibmCol]", inputs: ["class", "columnNumbers", "offsets", "columnHang"] }, { kind: "directive", type: i3.GridDirective, selector: "[cdsGrid], [ibmGrid]", inputs: ["condensed", "narrow", "fullWidth", "useCssGrid"] }, { kind: "directive", type: i3.RowDirective, selector: "[cdsRow], [ibmRow]", inputs: ["condensed", "narrow"] }, { kind: "component", type: i3.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i3.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i3.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i3.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i3.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i3.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "component", type: i3.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "component", type: i3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "directive", type: i3.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "component", type: i3.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: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
4110
4139
|
}
|
|
4111
4140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RightSidebarComponent, decorators: [{
|
|
4112
4141
|
type: Component,
|
|
4113
4142
|
args: [{ selector: 'valtimo-right-sidebar', 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 class=\"right-sidebar-menu\">\n <cds-panel [expanded]=\"panelExpanded$ | async\">\n <div cdsGrid [condensed]=\"true\">\n <div cdsRow>\n <div cdsCol [columnNumbers]=\"{lg: 16}\" class=\"menu-tabs\" cdsLayer>\n <cds-tabs class=\"cds--tab--list--full-width\">\n <cds-tab [heading]=\"'account.title' | translate\">\n <ng-container *ngTemplateOutlet=\"accountTabTemplate\"></ng-container>\n </cds-tab>\n\n <cds-tab [heading]=\"'settings.title' | translate\">\n <ng-container *ngTemplateOutlet=\"settingsTabTemplate\"></ng-container>\n </cds-tab>\n </cds-tabs>\n </div>\n </div>\n </div>\n </cds-panel>\n</div>\n\n<ng-template #accountTabTemplate>\n <ng-container *ngTemplateOutlet=\"accountInformationTemplate\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"linksTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #settingsTabTemplate>\n <ng-container *ngTemplateOutlet=\"languageSettingsTemplate\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"interfaceSettingsTemplate\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"notificationSettingsTemplate\"></ng-container>\n\n @if (showValtimoVersions) {\n <ng-container *ngTemplateOutlet=\"versionTemplate\"></ng-container>\n }\n</ng-template>\n\n<ng-template #accountInformationTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'account.informationTitle' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <ng-container *ngTemplateOutlet=\"accountInformationTableTemplate\"></ng-container>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #accountInformationTableTemplate>\n <div class=\"information-table account-information\">\n <cds-structured-list *ngIf=\"userSubject$ | async as userSubject\">\n <cds-list-row>\n <cds-list-column\n >{{ 'interface.email' | translate }}\n <cds-tag type=\"blue\">{{ userSubject.email }}</cds-tag>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column\n >{{ 'interface.username' | translate }}\n <cds-tag type=\"blue\">{{ userSubject.username }}</cds-tag>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column\n >{{ 'interface.name' | translate }}\n <cds-tag type=\"blue\">{{ userSubject.firstName + ' ' + userSubject.lastName }}</cds-tag>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-template>\n\n<ng-template #linksTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'account.quickLinks' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <ng-container *ngTemplateOutlet=\"linksTableTemplate\"></ng-container>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #linksTableTemplate>\n <div class=\"information-table\">\n <cds-structured-list>\n <cds-list-row>\n <cds-list-column>\n <a href=\"https://docs.valtimo.nl\" target=\"_blank\" cdsLink>{{\n 'account.links.help' | translate\n }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column *ngIf=\"!overrideFeedbackMenuItemToMailTo; else feedbackMailTo\">\n <a href=\"https://www.valtimo.nl/feedback\" target=\"_blank\" cdsLink>{{\n 'account.links.feedback' | translate\n }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"resetUrl\">\n <cds-list-column>\n <a [href]=\"resetUrl\" cdsLink>{{ 'account.links.resetPassword' | translate }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>\n <a href=\"javascript:void(0)\" cdsLink (click)=\"logout()\">{{\n 'account.links.signOut' | translate\n }}</a>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"showPlantATreeButton\">\n <cds-list-column>\n <a\n class=\"text-success\"\n href=\"mailto:valtimo@ritense.com?subject=Plant een boom voor Valtimo&body=Hallo Valtimo gebruiker,%0D%0DMet het versturen van deze e-mail gaan we gelijk aan de slag om een boom te planten. Hiermee compenseren we voor een deel de CO2 uitstoot van je Valtimo gebruik.%0D%0DMet Groene Groet,%0D%0DHet Valtimo team%0D%0D*Deze bomenplantactie kan 1 keer ingezet worden door elke geregistreerde Valtimo gebruiker.%0D%0D** Ritense plant ook jaarlijks bomen voor alle Valtimo installaties die in gebruik zijn.\"\n target=\"_blank\"\n cdsLink\n >\n {{ 'account.links.plantATree' | translate }}\n </a>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </div>\n</ng-template>\n\n<ng-template #languageSettingsTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'settings.language.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <cds-dropdown\n [id]=\"'language-dropdown'\"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n (click)=\"$event.stopPropagation()\"\n (selected)=\"updateUserLanguage($event)\"\n >\n <cds-dropdown-list [items]=\"(languageListItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #notificationSettingsTemplate>\n <cds-structured-list *ngIf=\"emailNotificationSettingsWithSideEffects$ | async\">\n <cds-list-header>\n <cds-list-column>{{ 'settings.notification.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <form [formGroup]=\"settingsForm\" class=\"toggle-group\">\n <cds-toggle\n [label]=\"'settings.notification.taskNotifications' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n formControlName=\"taskNotifications\"\n [disabled]=\"updatingSettings$ | async\"\n >\n </cds-toggle>\n <span class=\"description\">{{\n 'settings.notification.emailNotificationsIntro' | translate\n }}</span>\n </form>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>\n <form [formGroup]=\"settingsForm\" class=\"toggle-group\">\n <cds-toggle\n [label]=\"'settings.notification.emailNotifications' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n formControlName=\"emailNotifications\"\n [disabled]=\"updatingSettings$ | async\"\n >\n </cds-toggle>\n <span class=\"description\">{{\n 'settings.notification.taskNotificationsIntro' | translate\n }}</span>\n </form>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #interfaceSettingsTemplate>\n <cds-structured-list>\n <cds-list-header>\n <cds-list-column>{{ 'settings.interface.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row>\n <cds-list-column>\n <cds-toggle\n [label]=\"'settings.interface.collapsibleMenu' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n [disabled]=\"updatingUserSettings$ | async\"\n [ngModel]=\"collapsibleWidescreenMenu$ | async\"\n (ngModelChange)=\"setCollapsibleWidescreenMenu($event)\"\n >\n </cds-toggle>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"allowUserThemeSwitching\">\n <cds-list-column>\n <cds-dropdown\n [label]=\"'settings.interface.themePreference' | translate\"\n [appendInline]=\"true\"\n (click)=\"$event.stopPropagation()\"\n (selected)=\"setPreferredTheme($event)\"\n [dropUp]=\"false\"\n >\n <cds-dropdown-list [items]=\"(themeOptions$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"enableCompactModeToggle\">\n <cds-list-column>\n <cds-toggle\n [label]=\"'settings.interface.compactMode' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n [disabled]=\"updatingUserSettings$ | async\"\n [ngModel]=\"compactMode$ | async\"\n (ngModelChange)=\"setCompactMode($event)\"\n >\n </cds-toggle>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"enableShowUserNameToggle\">\n <cds-list-column>\n <cds-toggle\n [label]=\"'settings.interface.showUserName' | translate\"\n [onText]=\"'interface.on' | translate\"\n [offText]=\"'interface.off' | translate\"\n [disabled]=\"updatingUserSettings$ | async\"\n [ngModel]=\"showUserNameInTopBar$ | async\"\n (ngModelChange)=\"setShowUserName($event)\"\n >\n </cds-toggle>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n</ng-template>\n\n<ng-template #versionTemplate>\n <ng-container *ngIf=\"{backendVersion: backendVersion$ | async} as obs\">\n <cds-structured-list *ngIf=\"obs.backendVersion || frontendVersion\">\n <cds-list-header>\n <cds-list-column>{{ 'settings.version.title' | translate }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngIf=\"obs.backendVersion\">\n <cds-list-column>\n <div class=\"build-information\">\n <span class=\"build-title\">{{\n 'interface.builds.' + obs.backendVersion.title | translate\n }}</span>\n <div class=\"tag-container\">\n <cds-tag type=\"blue\">{{ obs.backendVersion.version }}</cds-tag>\n </div>\n </div>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"frontendVersion\">\n <cds-list-column>\n <div class=\"build-information\">\n <span class=\"build-title\">{{\n 'interface.builds.valtimo-frontend-libraries' | translate\n }}</span>\n <div class=\"tag-container\">\n <cds-tag type=\"blue\">{{ frontendVersion }}</cds-tag>\n </div>\n </div>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n</ng-template>\n\n<ng-template #feedbackMailTo>\n <cds-list-column>\n <a\n [href]=\"\n 'mailto:' +\n overrideFeedbackMenuItemToMailTo.email +\n '?subject=' +\n (overrideFeedbackMenuItemToMailTo.subjectTranslationKey | translate) +\n '&body=' +\n (overrideFeedbackMenuItemToMailTo.bodyTranslationKey | translate)\n \"\n target=\"_blank\"\n cdsLink\n >\n {{ 'account.links.feedback' | translate }}\n </a>\n </cds-list-column>\n</ng-template>\n", styles: [".be-scroller-settings{padding-bottom:150px!important}.version-holder{position:fixed;bottom:0;width:259px;background-color:#f8f9fa}.info-text{line-height:1em!important;padding-right:70px;margin-bottom:15px}.right-sidebar-menu .cds--tab--list{width:100%}.right-sidebar-menu .menu-tabs .cds--tabs--scrollable__nav-item{width:12rem}.right-sidebar-menu .menu-tabs .cds--tabs--scrollable__nav-item button{width:100%}.right-sidebar-menu .menu-tabs .cds--tab--overflow-nav-button{display:none}.right-sidebar-menu .cds--header-panel{width:20rem;height:calc(100% - 3rem);transition:transform .11s cubic-bezier(.2,0,1,.9);transform:translate(100%)}.right-sidebar-menu .cds--header-panel--expanded{transform:translate(0)}.right-sidebar-menu .cds--panel--overlay{padding-top:0}.right-sidebar-menu .cds--tab-content{padding:0;outline:0}.right-sidebar-menu .cds--structured-list-td{padding-left:1rem;padding-right:1rem}.right-sidebar-menu .toggle-group{display:flex;flex-direction:column}.right-sidebar-menu .toggle-group .description{margin-top:1rem}.right-sidebar-menu cds-structured-list:last-child .cds--structured-list-row:last-child{border-bottom:0}.right-sidebar-menu .cds--grid,.right-sidebar-menu .cds--row,.right-sidebar-menu .menu-tabs{height:100%}.right-sidebar-menu .cds--grid--condensed{padding-left:1rem;padding-right:1rem}.right-sidebar-menu .cds--tab--list--full-width{display:flex;flex-direction:column;height:100%}.right-sidebar-menu cds-tab{overflow:auto}.right-sidebar-menu .build-information{display:inline-flex;flex-direction:column}.right-sidebar-menu .build-information:not(:last-child){margin-bottom:1rem}.right-sidebar-menu .build-information .tag-container .cds--tag{margin-left:0;margin-right:0;margin-bottom:0}.right-sidebar-menu .information-table cds-list-row:first-child{border-top:0}.right-sidebar-menu .information-table cds-list-row:first-child cds-list-column{border-top:0;padding-top:0}.right-sidebar-menu .information-table cds-list-row:last-child cds-list-column{padding-bottom:0}.right-sidebar-menu .information-table cds-list-row cds-list-column:first-child{padding-left:0!important}.account-information .cds--structured-list-td{display:inline-flex;flex-direction:column;border:none;min-width:100%}.account-information .cds--structured-list-td .cds--tag{margin:0;margin-top:.25rem;width:fit-content}.cds--select-input{background-color:var(--cds-field-02)}\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"] }]
|
|
4114
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i6.UserProviderService }, { type: i2.FormBuilder }, { type: VersionService }, { type: ShellService }, { type: i0.ElementRef }, { type: i1$
|
|
4143
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i6.UserProviderService }, { type: i2.FormBuilder }, { type: VersionService }, { type: ShellService }, { type: i0.ElementRef }, { type: i1$2.ConfigService }, { type: i1$2.UserSettingsService }, { type: PageHeaderService }, { type: CdsThemeService }], propDecorators: { onPageClick: [{
|
|
4115
4144
|
type: HostListener,
|
|
4116
4145
|
args: ['document:click', ['$event.target']]
|
|
4117
4146
|
}] } });
|
|
@@ -4356,11 +4385,11 @@ class LeftSidebarComponent {
|
|
|
4356
4385
|
});
|
|
4357
4386
|
}
|
|
4358
4387
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LeftSidebarComponent, deps: [{ token: i0.ElementRef }, { token: MenuService }, { token: ShellService }, { token: i3$1.BreakpointObserver }, { token: i1$3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4359
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 <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 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 [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}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\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> </cds-sidenav-item\n ></ng-container>\n</ng-template>\n\n<ng-template #countTemplate let-count=\"count\">\n <ng-container *ngIf=\"count\">\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: i3.SideNav, selector: "cds-sidenav, ibm-sidenav", inputs: ["ariaLabel", "expanded", "hidden", "rail", "allowExpansion", "navigationItems", "useRouter"] }, { kind: "component", type: i3.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "useRouter", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }, { kind: "component", type: i3.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: i3.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" }] }); }
|
|
4388
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 <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 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 [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}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\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\">\n <ng-container *ngIf=\"count\">\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: i3.SideNav, selector: "cds-sidenav, ibm-sidenav", inputs: ["ariaLabel", "expanded", "hidden", "rail", "allowExpansion", "navigationItems", "useRouter"] }, { kind: "component", type: i3.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "useRouter", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }, { kind: "component", type: i3.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: i3.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" }] }); }
|
|
4360
4389
|
}
|
|
4361
4390
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LeftSidebarComponent, decorators: [{
|
|
4362
4391
|
type: Component,
|
|
4363
|
-
args: [{ selector: 'valtimo-left-sidebar', 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<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 <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 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 [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}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\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
|
|
4392
|
+
args: [{ selector: 'valtimo-left-sidebar', 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<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 <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 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 [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}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\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\">\n <ng-container *ngIf=\"count\">\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"] }]
|
|
4364
4393
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: MenuService }, { type: ShellService }, { type: i3$1.BreakpointObserver }, { type: i1$3.Router }], propDecorators: { toggleButtonRef: [{
|
|
4365
4394
|
type: ViewChild,
|
|
4366
4395
|
args: ['toggleButton']
|
|
@@ -4460,13 +4489,13 @@ class PageTitleComponent {
|
|
|
4460
4489
|
this.isCompact = compactMode;
|
|
4461
4490
|
}));
|
|
4462
4491
|
}
|
|
4463
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageTitleComponent, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }, { token: i5.Title }, { token: i1.TranslateService }, { token: i4.NGXLogger }, { token: i1$
|
|
4492
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageTitleComponent, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }, { token: i5.Title }, { token: i1.TranslateService }, { token: i4.NGXLogger }, { token: i1$2.ConfigService }, { token: PageTitleService }, { token: PageHeaderService }, { token: PageSubtitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4464
4493
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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 <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 } @else {\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 }\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: i3.SkeletonPlaceholder, selector: "cds-skeleton-placeholder, ibm-skeleton-placeholder" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
4465
4494
|
}
|
|
4466
4495
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PageTitleComponent, decorators: [{
|
|
4467
4496
|
type: Component,
|
|
4468
4497
|
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 <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 } @else {\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 }\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"] }]
|
|
4469
|
-
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }, { type: i5.Title }, { type: i1.TranslateService }, { type: i4.NGXLogger }, { type: i1$
|
|
4498
|
+
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }, { type: i5.Title }, { type: i1.TranslateService }, { type: i4.NGXLogger }, { type: i1$2.ConfigService }, { type: PageTitleService }, { type: PageHeaderService }, { type: PageSubtitleService }], propDecorators: { isCompact: [{
|
|
4470
4499
|
type: HostBinding,
|
|
4471
4500
|
args: ['class.valtimo-page-title--compact']
|
|
4472
4501
|
}], _subtitleVcr: [{
|
|
@@ -5370,7 +5399,7 @@ class ValtimoCdsModalDirective {
|
|
|
5370
5399
|
applyStyleToModalElements() {
|
|
5371
5400
|
if (this.minContentHeight <= 0)
|
|
5372
5401
|
return;
|
|
5373
|
-
const contentElements =
|
|
5402
|
+
const contentElements = this.elementRef.nativeElement.querySelectorAll('.cds--modal-content');
|
|
5374
5403
|
for (const element of contentElements) {
|
|
5375
5404
|
this.renderer.setStyle(element, 'min-height', `${this.minContentHeight}px`, RendererStyleFlags2.Important);
|
|
5376
5405
|
}
|
|
@@ -8189,13 +8218,13 @@ class FormioComponent {
|
|
|
8189
8218
|
return;
|
|
8190
8219
|
this._overrideOptions$.next(config.formioOptions);
|
|
8191
8220
|
}
|
|
8192
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormioComponent, deps: [{ token: i6.UserProviderService }, { token: i4.NGXLogger }, { token: FormIoStateService }, { token: i1$3.ActivatedRoute }, { token: i1.TranslateService }, { token: FormIoLocalStorageService }, { token: ValtimoModalService }, { token: i1$
|
|
8221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormioComponent, deps: [{ token: i6.UserProviderService }, { token: i4.NGXLogger }, { token: FormIoStateService }, { token: i1$3.ActivatedRoute }, { token: i1.TranslateService }, { token: FormIoLocalStorageService }, { token: ValtimoModalService }, { token: i1$2.ConfigService }, { token: FormIoTagsService }, { token: i0.Injector }, { token: FormioTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8193
8222
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FormioComponent, isStandalone: false, selector: "valtimo-form-io", inputs: { options: "options", submission: "submission", form: "form", readOnly: "readOnly", formRefresh$: "formRefresh$" }, outputs: { submit: "submit", change: "change", event: "event" }, host: { listeners: { "window:beforeunload": "handleBeforeUnload($event)" } }, providers: [FormIoLocalStorageService], 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 class=\"formio-carbon\"\n cdsLayer=\"1\"\n *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [form]=\"obs.form\"\n [language]=\"languageEventEmitter\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n [refresh]=\"refreshForm\"\n [submission]=\"obs.submission\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n (ready)=\"formReady($event)\"\n (submit)=\"onSubmit($event)\"\n (customEvent)=\"onCustomEvent($event)\"\n ></formio>\n</div>\n", styles: [""], dependencies: [{ 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: i9.FormioComponent, selector: "formio" }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
8194
8223
|
}
|
|
8195
8224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormioComponent, decorators: [{
|
|
8196
8225
|
type: Component,
|
|
8197
8226
|
args: [{ selector: 'valtimo-form-io', providers: [FormIoLocalStorageService], 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=\"formio-carbon\"\n cdsLayer=\"1\"\n *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [form]=\"obs.form\"\n [language]=\"languageEventEmitter\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n [refresh]=\"refreshForm\"\n [submission]=\"obs.submission\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n (ready)=\"formReady($event)\"\n (submit)=\"onSubmit($event)\"\n (customEvent)=\"onCustomEvent($event)\"\n ></formio>\n</div>\n" }]
|
|
8198
|
-
}], ctorParameters: () => [{ type: i6.UserProviderService }, { type: i4.NGXLogger }, { type: FormIoStateService }, { type: i1$3.ActivatedRoute }, { type: i1.TranslateService }, { type: FormIoLocalStorageService }, { type: ValtimoModalService }, { type: i1$
|
|
8227
|
+
}], ctorParameters: () => [{ type: i6.UserProviderService }, { type: i4.NGXLogger }, { type: FormIoStateService }, { type: i1$3.ActivatedRoute }, { type: i1.TranslateService }, { type: FormIoLocalStorageService }, { type: ValtimoModalService }, { type: i1$2.ConfigService }, { type: FormIoTagsService }, { type: i0.Injector }, { type: FormioTranslationService }], propDecorators: { options: [{
|
|
8199
8228
|
type: Input
|
|
8200
8229
|
}], submission: [{
|
|
8201
8230
|
type: Input
|
|
@@ -8348,13 +8377,13 @@ class FormioBuilderComponent {
|
|
|
8348
8377
|
return;
|
|
8349
8378
|
this._overrideOptions$.next(config.formioOptions);
|
|
8350
8379
|
}
|
|
8351
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormioBuilderComponent, deps: [{ token: i1.TranslateService }, { token: FormIoStateService }, { token: i1$
|
|
8380
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormioBuilderComponent, deps: [{ token: i1.TranslateService }, { token: FormIoStateService }, { token: i1$2.ConfigService }, { token: i0.Injector }, { token: FormIoTagsService }, { token: i1$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8352
8381
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FormioBuilderComponent, isStandalone: false, selector: "valtimo-form-io-builder", inputs: { form: "form" }, outputs: { change: "change" }, 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=\"formio-carbon\"\n cdsLayer=\"1\"\n *ngIf=\"(editFormModified$ | async) && form$ | async as formDefinition\"\n>\n <form-builder\n [form]=\"formDefinition\"\n [options]=\"formioOptions$ | async\"\n [rebuild]=\"triggerRebuild\"\n (change)=\"onChange($event)\"\n ></form-builder>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FormBuilderComponent, selector: "form-builder", inputs: ["form", "options", "formbuilder", "noeval", "refresh", "rebuild"], outputs: ["change"] }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
8353
8382
|
}
|
|
8354
8383
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormioBuilderComponent, decorators: [{
|
|
8355
8384
|
type: Component,
|
|
8356
8385
|
args: [{ selector: 'valtimo-form-io-builder', 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=\"formio-carbon\"\n cdsLayer=\"1\"\n *ngIf=\"(editFormModified$ | async) && form$ | async as formDefinition\"\n>\n <form-builder\n [form]=\"formDefinition\"\n [options]=\"formioOptions$ | async\"\n [rebuild]=\"triggerRebuild\"\n (change)=\"onChange($event)\"\n ></form-builder>\n</div>\n" }]
|
|
8357
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: FormIoStateService }, { type: i1$
|
|
8386
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: FormIoStateService }, { type: i1$2.ConfigService }, { type: i0.Injector }, { type: FormIoTagsService }, { type: i1$3.ActivatedRoute }], propDecorators: { form: [{
|
|
8358
8387
|
type: Input
|
|
8359
8388
|
}], change: [{
|
|
8360
8389
|
type: Output
|
|
@@ -9428,8 +9457,7 @@ class ValuePathSelectorComponent {
|
|
|
9428
9457
|
this.collectionSelected = new EventEmitter();
|
|
9429
9458
|
this._caseDefinitionKeySubject$ = new BehaviorSubject(null);
|
|
9430
9459
|
this._caseDefinitionVersionTag$ = new BehaviorSubject(null);
|
|
9431
|
-
this.showToggle$ = this._caseDefinitionKey
|
|
9432
|
-
.pipe(map(caseDefinitionKey => !!caseDefinitionKey));
|
|
9460
|
+
this.showToggle$ = this._caseDefinitionKey$.pipe(map(caseDefinitionKey => !!caseDefinitionKey));
|
|
9433
9461
|
this._prefixes$ = new BehaviorSubject([]);
|
|
9434
9462
|
this._inputMode$ = new BehaviorSubject(ValuePathSelectorInputMode.DROPDOWN);
|
|
9435
9463
|
this.inputModeIsDropdown$ = this._inputMode$.pipe(map(mode => {
|
|
@@ -9445,7 +9473,7 @@ class ValuePathSelectorComponent {
|
|
|
9445
9473
|
this._prefixes$,
|
|
9446
9474
|
this._type$,
|
|
9447
9475
|
this._caseDefinitionVersionTag$,
|
|
9448
|
-
this.showToggle
|
|
9476
|
+
this.showToggle$,
|
|
9449
9477
|
]).pipe(filter$1(([, , , , showToggle]) => showToggle), switchMap(([caseDefinitionKey, prefixes, type, caseDefinitionVersionTag]) => this.valuePathSelectorService.getResolvableKeys(prefixes, caseDefinitionKey, type, caseDefinitionVersionTag)))), map((results) => results
|
|
9450
9478
|
.map((result) => ({
|
|
9451
9479
|
...result,
|
|
@@ -9544,7 +9572,7 @@ class ValuePathSelectorComponent {
|
|
|
9544
9572
|
multi: true,
|
|
9545
9573
|
useExisting: forwardRef(() => ValuePathSelectorComponent),
|
|
9546
9574
|
},
|
|
9547
|
-
], 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\n *ngIf=\"{\n inputModeIsDropdown: inputModeIsDropdown$ | async,\n valuePathListItems: valuePathListItems$ | async,\n loadingValuePathItems: loadingValuePathItems$ | async,\n disabled: disabled$ | async,\n showToggle: showToggle$ | async
|
|
9575
|
+
], 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\n *ngIf=\"{\n inputModeIsDropdown: inputModeIsDropdown$ | async,\n valuePathListItems: valuePathListItems$ | async,\n loadingValuePathItems: loadingValuePathItems$ | async,\n disabled: disabled$ | async,\n showToggle: showToggle$ | async,\n } as obs\"\n>\n <v-input-label *ngIf=\"!!label\" [required]=\"required\" [title]=\"label\" [tooltip]=\"tooltip\">\n </v-input-label>\n\n <form\n [formGroup]=\"formGroup\"\n [ngClass]=\"{\n 'value-path-selector__form--case-def-input':\n showCaseDefinitionSelector && obs.inputModeIsDropdown && !obs.showToggle,\n }\"\n class=\"value-path-selector__form\"\n >\n <cds-toggle\n *ngIf=\"obs.showToggle\"\n data-testid=\"value-path-selector-toggle\"\n size=\"sm\"\n [disabled]=\"obs.disabled\"\n [onText]=\"'valuePathSelector.dropdown' | translate\"\n [offText]=\"'valuePathSelector.manual' | translate\"\n [checked]=\"obs.inputModeIsDropdown\"\n (checkedChange)=\"onInputModeChange($event)\"\n ></cds-toggle>\n\n @if (obs.inputModeIsDropdown && obs.showToggle) {\n <cds-dropdown\n data-testid=\"value-path-selector-valuePath\"\n [appendInline]=\"appendInline\"\n [disabled]=\"\n obs.disabled ||\n obs.loadingValuePathItems ||\n !obs.valuePathListItems ||\n (obs.valuePathListItems || []).length === 0\n \"\n (selected)=\"onPathSelected($event)\"\n [placeholder]=\"'valuePathSelector.placeholder' | translate\"\n >\n <cds-dropdown-list [items]=\"obs.valuePathListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n } @else {\n <input\n data-testid=\"value-path-selector-input\"\n cdsText\n type=\"text\"\n formControlName=\"selectedPath\"\n />\n }\n </form>\n</ng-container>\n", styles: [":host{width:100%;display:flex;flex-direction:column}::ng-deep .value-path-selector--margin-bottom{margin-bottom:16px}::ng-deep .value-path-selector--margin-bottom-lg{margin-bottom:24px}::ng-deep .value-path-selector--margin-bottom-xl{margin-bottom:34px}.value-path-selector__form{display:grid;grid-template-columns:110px 1fr;width:100%;align-items:center;gap:16px;justify-content:space-between}::ng-deep .value-path-selector__form--case-def-input{display:flex!important}.value-path-selector__form ::ng-deep cds-dropdown{width:100%;min-width:0}.value-path-selector__form ::ng-deep .cds--toggle__label-text{display:none}.value-path-selector__form ::ng-deep .cds--toggle__label{display:flex}\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: DropdownModule }, { kind: "component", type: i3.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: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i3.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { 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: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: LayerModule }] }); }
|
|
9548
9576
|
}
|
|
9549
9577
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ValuePathSelectorComponent, decorators: [{
|
|
9550
9578
|
type: Component,
|
|
@@ -9565,7 +9593,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
9565
9593
|
multi: true,
|
|
9566
9594
|
useExisting: forwardRef(() => ValuePathSelectorComponent),
|
|
9567
9595
|
},
|
|
9568
|
-
], 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\n *ngIf=\"{\n inputModeIsDropdown: inputModeIsDropdown$ | async,\n valuePathListItems: valuePathListItems$ | async,\n loadingValuePathItems: loadingValuePathItems$ | async,\n disabled: disabled$ | async,\n showToggle: showToggle$ | async
|
|
9596
|
+
], 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\n *ngIf=\"{\n inputModeIsDropdown: inputModeIsDropdown$ | async,\n valuePathListItems: valuePathListItems$ | async,\n loadingValuePathItems: loadingValuePathItems$ | async,\n disabled: disabled$ | async,\n showToggle: showToggle$ | async,\n } as obs\"\n>\n <v-input-label *ngIf=\"!!label\" [required]=\"required\" [title]=\"label\" [tooltip]=\"tooltip\">\n </v-input-label>\n\n <form\n [formGroup]=\"formGroup\"\n [ngClass]=\"{\n 'value-path-selector__form--case-def-input':\n showCaseDefinitionSelector && obs.inputModeIsDropdown && !obs.showToggle,\n }\"\n class=\"value-path-selector__form\"\n >\n <cds-toggle\n *ngIf=\"obs.showToggle\"\n data-testid=\"value-path-selector-toggle\"\n size=\"sm\"\n [disabled]=\"obs.disabled\"\n [onText]=\"'valuePathSelector.dropdown' | translate\"\n [offText]=\"'valuePathSelector.manual' | translate\"\n [checked]=\"obs.inputModeIsDropdown\"\n (checkedChange)=\"onInputModeChange($event)\"\n ></cds-toggle>\n\n @if (obs.inputModeIsDropdown && obs.showToggle) {\n <cds-dropdown\n data-testid=\"value-path-selector-valuePath\"\n [appendInline]=\"appendInline\"\n [disabled]=\"\n obs.disabled ||\n obs.loadingValuePathItems ||\n !obs.valuePathListItems ||\n (obs.valuePathListItems || []).length === 0\n \"\n (selected)=\"onPathSelected($event)\"\n [placeholder]=\"'valuePathSelector.placeholder' | translate\"\n >\n <cds-dropdown-list [items]=\"obs.valuePathListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n } @else {\n <input\n data-testid=\"value-path-selector-input\"\n cdsText\n type=\"text\"\n formControlName=\"selectedPath\"\n />\n }\n </form>\n</ng-container>\n", styles: [":host{width:100%;display:flex;flex-direction:column}::ng-deep .value-path-selector--margin-bottom{margin-bottom:16px}::ng-deep .value-path-selector--margin-bottom-lg{margin-bottom:24px}::ng-deep .value-path-selector--margin-bottom-xl{margin-bottom:34px}.value-path-selector__form{display:grid;grid-template-columns:110px 1fr;width:100%;align-items:center;gap:16px;justify-content:space-between}::ng-deep .value-path-selector__form--case-def-input{display:flex!important}.value-path-selector__form ::ng-deep cds-dropdown{width:100%;min-width:0}.value-path-selector__form ::ng-deep .cds--toggle__label-text{display:none}.value-path-selector__form ::ng-deep .cds--toggle__label{display:flex}\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"] }]
|
|
9569
9597
|
}], ctorParameters: () => [{ type: ValuePathSelectorService }, { type: i2.FormBuilder }, { type: i3$2.DocumentService }, { type: i1$3.ActivatedRoute }], propDecorators: { _showMargin: [{
|
|
9570
9598
|
type: HostBinding,
|
|
9571
9599
|
args: ['class.value-path-selector--margin-bottom']
|
|
@@ -11301,6 +11329,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11301
11329
|
* limitations under the License.
|
|
11302
11330
|
*/
|
|
11303
11331
|
class InputComponent {
|
|
11332
|
+
set defaultValue(value) {
|
|
11333
|
+
this._defaultValue = value;
|
|
11334
|
+
this.setDefaultValue(this.defaultValue);
|
|
11335
|
+
}
|
|
11336
|
+
get defaultValue() {
|
|
11337
|
+
return this._defaultValue;
|
|
11338
|
+
}
|
|
11304
11339
|
set fullWidth(value) {
|
|
11305
11340
|
this.fullWidthClass = value;
|
|
11306
11341
|
}
|
|
@@ -11311,7 +11346,7 @@ class InputComponent {
|
|
|
11311
11346
|
this.type = 'text';
|
|
11312
11347
|
this.title = '';
|
|
11313
11348
|
this.titleTranslationKey = '';
|
|
11314
|
-
this.
|
|
11349
|
+
this._defaultValue = '';
|
|
11315
11350
|
this.margin = false;
|
|
11316
11351
|
this.smallMargin = false;
|
|
11317
11352
|
this.disabled = false;
|
|
@@ -11401,11 +11436,11 @@ class InputComponent {
|
|
|
11401
11436
|
}
|
|
11402
11437
|
}
|
|
11403
11438
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, deps: [{ token: i3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11404
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: InputComponent, isStandalone: false, selector: "v-input", inputs: { name: "name", type: "type", title: "title", titleTranslationKey: "titleTranslationKey", defaultValue: "defaultValue", widthPx: "widthPx", fullWidth: "fullWidth", margin: "margin", smallMargin: "smallMargin", disabled: "disabled", step: "step", min: "min", maxLength: "maxLength", tooltip: "tooltip", required: "required", hideNumberSpinBox: "hideNumberSpinBox", smallLabel: "smallLabel", rows: "rows", clear$: "clear$", carbonTheme: "carbonTheme", placeholder: "placeholder", dataTestId: "dataTestId", trim: "trim", presetsTitle: "presetsTitle", presetOptions: "presetOptions" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.full-width": "this.fullWidthClass" } }, 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 class=\"v-input-container\">\n <ng-container *ngTemplateOutlet=\"inputTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textareaInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"passwordInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"numberInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"digitOnlyInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"checkboxInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"presets\"></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 #textInput>\n <input\n *ngIf=\"isText\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin && presetOptions.length === 0,\n 'v-input--small-margin': smallMargin && presetOptions.length === 0,\n }\"\n [ngModel]=\"inputValue$ | async\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #textareaInput>\n <textarea\n *ngIf=\"isTextarea\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsTextArea\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [rows]=\"rows\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n ></textarea>\n</ng-template>\n\n<ng-template #passwordInput>\n <ng-container *ngIf=\"isPassword\">\n <div\n *ngIf=\"{showPassword: showPassword$ | async} as obs\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input__password-container\"\n >\n <input\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [type]=\"obs.showPassword ? 'text' : 'password'\"\n />\n\n <div class=\"v-input__password-icon\">\n <cds-icon-button align=\"top\" (click)=\"toggleShowPassword()\">\n <svg cdsIcon=\"{{ obs.showPassword ? 'view-off' : 'view' }}\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #numberInput>\n <input\n *ngIf=\"isNumber\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n 'v-input--hide-spinbox': hideNumberSpinBox,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"min\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"number\"\n />\n</ng-template>\n\n<ng-template #digitOnlyInput>\n <input\n *ngIf=\"isDigitOnly\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsText\n digitOnly\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #checkboxInput>\n <div *ngIf=\"isCheckbox\" (click)=\"stopCheckboxEventPropagation($event)\">\n <cds-checkbox\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n (ngModelChange)=\"onValueChange($event)\"\n >\n </cds-checkbox>\n </div>\n</ng-template>\n\n<ng-template #presets>\n <div\n *ngIf=\"isText && presetOptions.length > 0\"\n [ngClass]=\"{\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input--preset-options\">\n <span>{{ presetsTitle }}:</span>\n @for (preset of presetOptions; track $index; let isFirst = $first) {\n @if (!isFirst) { | }\n <a (click)=\"presetWithValue(preset)\" class=\"v-input--preset-option\">{{ preset }}</a>\n }\n </div>\n</ng-template>\n", styles: [".full-width{width:100%}.v-input-container{display:flex;flex-direction:column}.v-input__label{margin:0;font-size:var(--v-input-title-font-size);color:var(--v-input-title-font-color);line-height:var(--v-input-title-line-height);font-weight:var(--v-input-title-font-weight);margin-block-end:var(--v-input-title-margin)}.v-input{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-input:focus{outline:var(--v-input-focus-border);outline-offset:var(--v-outline-offset)}.v-input:disabled{color:var(--v-input-font-color-disabled);cursor:var(--v-input-disabled-cursor)}.v-input--full-width{width:100%}.v-input--margin{margin-block-end:var(--v-input-margin)}.v-input--small-margin{margin-block-end:var(--v-input-small-margin)}.v-input__password-container{display:flex;flex-direction:row;align-items:center}.v-input__password-icon{margin-inline-start:var(--v-input-password-icon-spacing)}.v-input--hide-spinbox::-webkit-outer-spin-button,.v-input--hide-spinbox::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spinbox{-moz-appearance:textfield}.v-input--checkbox{width:20px;height:20px;margin-block-end:var(--v-input-margin)}div.v-input--preset-options{margin-top:3px;font-size:var(--v-input-font-size);color:var(--v-input-color)}div.v-input--preset-options span:first-child{padding-right:3px}div.v-input--preset-options a.v-input--preset-option{cursor:pointer;font-style:italic}\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: "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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i3.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description", "showTooltipWhenDisabled"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "component", type: i3.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i3.TextArea, selector: "[cdsTextArea], [ibmTextArea]", inputs: ["theme", "invalid", "skeleton"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: DigitOnlyDirective, selector: "[digitOnly]", inputs: ["decimal", "decimalSeparator", "allowNegatives", "allowPaste", "negativeSign", "min", "max", "pattern"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
11439
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: InputComponent, isStandalone: false, selector: "v-input", inputs: { name: "name", type: "type", title: "title", titleTranslationKey: "titleTranslationKey", defaultValue: "defaultValue", widthPx: "widthPx", fullWidth: "fullWidth", margin: "margin", smallMargin: "smallMargin", disabled: "disabled", step: "step", min: "min", maxLength: "maxLength", tooltip: "tooltip", required: "required", hideNumberSpinBox: "hideNumberSpinBox", smallLabel: "smallLabel", rows: "rows", clear$: "clear$", carbonTheme: "carbonTheme", placeholder: "placeholder", dataTestId: "dataTestId", trim: "trim", presetsTitle: "presetsTitle", presetOptions: "presetOptions" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.full-width": "this.fullWidthClass" } }, 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 class=\"v-input-container\">\n <ng-container *ngTemplateOutlet=\"inputTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textareaInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"passwordInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"numberInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"digitOnlyInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"checkboxInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"presets\"></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 #textInput>\n <input\n *ngIf=\"isText\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin && presetOptions.length === 0,\n 'v-input--small-margin': smallMargin && presetOptions.length === 0,\n }\"\n [ngModel]=\"inputValue$ | async\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #textareaInput>\n <textarea\n *ngIf=\"isTextarea\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsTextArea\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [rows]=\"rows\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n ></textarea>\n</ng-template>\n\n<ng-template #passwordInput>\n <ng-container *ngIf=\"isPassword\">\n <div\n *ngIf=\"{showPassword: showPassword$ | async} as obs\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input__password-container\"\n >\n <input\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [type]=\"obs.showPassword ? 'text' : 'password'\"\n />\n\n <div class=\"v-input__password-icon\">\n <cds-icon-button align=\"top\" (click)=\"toggleShowPassword()\">\n <svg cdsIcon=\"{{ obs.showPassword ? 'view-off' : 'view' }}\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #numberInput>\n <input\n *ngIf=\"isNumber\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n 'v-input--hide-spinbox': hideNumberSpinBox,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"min\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"number\"\n />\n</ng-template>\n\n<ng-template #digitOnlyInput>\n <input\n *ngIf=\"isDigitOnly\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsText\n digitOnly\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #checkboxInput>\n <div *ngIf=\"isCheckbox\" (click)=\"stopCheckboxEventPropagation($event)\">\n <cds-checkbox\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n (ngModelChange)=\"onValueChange($event)\"\n >\n </cds-checkbox>\n </div>\n</ng-template>\n\n<ng-template #presets>\n <div\n *ngIf=\"isText && presetOptions.length > 0\"\n [ngClass]=\"{\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input--preset-options\">\n <span>{{ presetsTitle }}:</span>\n\n @for (preset of presetOptions; track $index) {\n @if (!$first) { | }\n <a (click)=\"presetWithValue(preset)\" class=\"v-input--preset-option\">{{ preset }}</a>\n }\n </div>\n</ng-template>\n", styles: [".full-width{width:100%}.v-input-container{display:flex;flex-direction:column}.v-input__label{margin:0;font-size:var(--v-input-title-font-size);color:var(--v-input-title-font-color);line-height:var(--v-input-title-line-height);font-weight:var(--v-input-title-font-weight);margin-block-end:var(--v-input-title-margin)}.v-input{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-input:focus{outline:var(--v-input-focus-border);outline-offset:var(--v-outline-offset)}.v-input:disabled{color:var(--v-input-font-color-disabled);cursor:var(--v-input-disabled-cursor)}.v-input--full-width{width:100%}.v-input--margin{margin-block-end:var(--v-input-margin)}.v-input--small-margin{margin-block-end:var(--v-input-small-margin)}.v-input__password-container{display:flex;flex-direction:row;align-items:center}.v-input__password-icon{margin-inline-start:var(--v-input-password-icon-spacing)}.v-input--hide-spinbox::-webkit-outer-spin-button,.v-input--hide-spinbox::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spinbox{-moz-appearance:textfield}.v-input--checkbox{width:20px;height:20px;margin-block-end:var(--v-input-margin)}div.v-input--preset-options{margin-top:3px;font-size:var(--v-input-font-size);color:var(--v-input-color)}div.v-input--preset-options span:first-child{padding-right:3px}div.v-input--preset-options a.v-input--preset-option{cursor:pointer;font-style:italic}\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: "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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i3.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description", "showTooltipWhenDisabled"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "component", type: i3.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i3.TextArea, selector: "[cdsTextArea], [ibmTextArea]", inputs: ["theme", "invalid", "skeleton"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: DigitOnlyDirective, selector: "[digitOnly]", inputs: ["decimal", "decimalSeparator", "allowNegatives", "allowPaste", "negativeSign", "min", "max", "pattern"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
|
|
11405
11440
|
}
|
|
11406
11441
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, decorators: [{
|
|
11407
11442
|
type: Component,
|
|
11408
|
-
args: [{ selector: 'v-input', 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-input-container\">\n <ng-container *ngTemplateOutlet=\"inputTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textareaInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"passwordInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"numberInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"digitOnlyInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"checkboxInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"presets\"></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 #textInput>\n <input\n *ngIf=\"isText\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin && presetOptions.length === 0,\n 'v-input--small-margin': smallMargin && presetOptions.length === 0,\n }\"\n [ngModel]=\"inputValue$ | async\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #textareaInput>\n <textarea\n *ngIf=\"isTextarea\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsTextArea\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [rows]=\"rows\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n ></textarea>\n</ng-template>\n\n<ng-template #passwordInput>\n <ng-container *ngIf=\"isPassword\">\n <div\n *ngIf=\"{showPassword: showPassword$ | async} as obs\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input__password-container\"\n >\n <input\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [type]=\"obs.showPassword ? 'text' : 'password'\"\n />\n\n <div class=\"v-input__password-icon\">\n <cds-icon-button align=\"top\" (click)=\"toggleShowPassword()\">\n <svg cdsIcon=\"{{ obs.showPassword ? 'view-off' : 'view' }}\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #numberInput>\n <input\n *ngIf=\"isNumber\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n 'v-input--hide-spinbox': hideNumberSpinBox,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"min\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"number\"\n />\n</ng-template>\n\n<ng-template #digitOnlyInput>\n <input\n *ngIf=\"isDigitOnly\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsText\n digitOnly\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #checkboxInput>\n <div *ngIf=\"isCheckbox\" (click)=\"stopCheckboxEventPropagation($event)\">\n <cds-checkbox\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n (ngModelChange)=\"onValueChange($event)\"\n >\n </cds-checkbox>\n </div>\n</ng-template>\n\n<ng-template #presets>\n <div\n *ngIf=\"isText && presetOptions.length > 0\"\n [ngClass]=\"{\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input--preset-options\">\n <span>{{ presetsTitle }}:</span>\n @for (preset of presetOptions; track $index
|
|
11443
|
+
args: [{ selector: 'v-input', 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-input-container\">\n <ng-container *ngTemplateOutlet=\"inputTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"textareaInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"passwordInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"numberInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"digitOnlyInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"checkboxInput\"></ng-container>\n <ng-container *ngTemplateOutlet=\"presets\"></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 #textInput>\n <input\n *ngIf=\"isText\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin && presetOptions.length === 0,\n 'v-input--small-margin': smallMargin && presetOptions.length === 0,\n }\"\n [ngModel]=\"inputValue$ | async\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #textareaInput>\n <textarea\n *ngIf=\"isTextarea\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsTextArea\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [rows]=\"rows\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n ></textarea>\n</ng-template>\n\n<ng-template #passwordInput>\n <ng-container *ngIf=\"isPassword\">\n <div\n *ngIf=\"{showPassword: showPassword$ | async} as obs\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input__password-container\"\n >\n <input\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n [type]=\"obs.showPassword ? 'text' : 'password'\"\n />\n\n <div class=\"v-input__password-icon\">\n <cds-icon-button align=\"top\" (click)=\"toggleShowPassword()\">\n <svg cdsIcon=\"{{ obs.showPassword ? 'view-off' : 'view' }}\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #numberInput>\n <input\n *ngIf=\"isNumber\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n 'v-input--hide-spinbox': hideNumberSpinBox,\n }\"\n cdsText\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"min\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"number\"\n />\n</ng-template>\n\n<ng-template #digitOnlyInput>\n <input\n *ngIf=\"isDigitOnly\"\n [ngClass]=\"{\n 'v-input--full-width': fullWidthClass,\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n cdsText\n digitOnly\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [maxLength]=\"maxLength\"\n [min]=\"0\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n [step]=\"step\"\n (ngModelChange)=\"onValueChange($event)\"\n [style.width.px]=\"widthPx\"\n type=\"text\"\n />\n</ng-template>\n\n<ng-template #checkboxInput>\n <div *ngIf=\"isCheckbox\" (click)=\"stopCheckboxEventPropagation($event)\">\n <cds-checkbox\n [attr.data-testid]=\"dataTestId\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [ngModel]=\"inputValue$ | async\"\n (ngModelChange)=\"onValueChange($event)\"\n >\n </cds-checkbox>\n </div>\n</ng-template>\n\n<ng-template #presets>\n <div\n *ngIf=\"isText && presetOptions.length > 0\"\n [ngClass]=\"{\n 'v-input--margin': margin,\n 'v-input--small-margin': smallMargin,\n }\"\n class=\"v-input--preset-options\">\n <span>{{ presetsTitle }}:</span>\n\n @for (preset of presetOptions; track $index) {\n @if (!$first) { | }\n <a (click)=\"presetWithValue(preset)\" class=\"v-input--preset-option\">{{ preset }}</a>\n }\n </div>\n</ng-template>\n", styles: [".full-width{width:100%}.v-input-container{display:flex;flex-direction:column}.v-input__label{margin:0;font-size:var(--v-input-title-font-size);color:var(--v-input-title-font-color);line-height:var(--v-input-title-line-height);font-weight:var(--v-input-title-font-weight);margin-block-end:var(--v-input-title-margin)}.v-input{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-input:focus{outline:var(--v-input-focus-border);outline-offset:var(--v-outline-offset)}.v-input:disabled{color:var(--v-input-font-color-disabled);cursor:var(--v-input-disabled-cursor)}.v-input--full-width{width:100%}.v-input--margin{margin-block-end:var(--v-input-margin)}.v-input--small-margin{margin-block-end:var(--v-input-small-margin)}.v-input__password-container{display:flex;flex-direction:row;align-items:center}.v-input__password-icon{margin-inline-start:var(--v-input-password-icon-spacing)}.v-input--hide-spinbox::-webkit-outer-spin-button,.v-input--hide-spinbox::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spinbox{-moz-appearance:textfield}.v-input--checkbox{width:20px;height:20px;margin-block-end:var(--v-input-margin)}div.v-input--preset-options{margin-top:3px;font-size:var(--v-input-font-size);color:var(--v-input-color)}div.v-input--preset-options span:first-child{padding-right:3px}div.v-input--preset-options a.v-input--preset-option{cursor:pointer;font-style:italic}\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"] }]
|
|
11409
11444
|
}], ctorParameters: () => [{ type: i3.IconService }], propDecorators: { fullWidthClass: [{
|
|
11410
11445
|
type: HostBinding,
|
|
11411
11446
|
args: ['class.full-width']
|
|
@@ -12176,6 +12211,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
12176
12211
|
class CarbonMultiInputComponent {
|
|
12177
12212
|
constructor() {
|
|
12178
12213
|
this.addRowText = '';
|
|
12214
|
+
this.addButtonType = 'primary';
|
|
12179
12215
|
this.addRowTranslationKey = '';
|
|
12180
12216
|
this._defaultValues$ = new BehaviorSubject([]);
|
|
12181
12217
|
this.deleteRowText = '';
|
|
@@ -12388,13 +12424,13 @@ class CarbonMultiInputComponent {
|
|
|
12388
12424
|
}));
|
|
12389
12425
|
}
|
|
12390
12426
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CarbonMultiInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12391
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CarbonMultiInputComponent, isStandalone: false, selector: "valtimo-carbon-multi-input", inputs: { addRowText: "addRowText", 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: [
|
|
12427
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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: [
|
|
12392
12428
|
{
|
|
12393
12429
|
provide: NG_VALUE_ACCESSOR,
|
|
12394
12430
|
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
12395
12431
|
multi: true,
|
|
12396
12432
|
},
|
|
12397
|
-
], 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 ></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 ></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 >\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=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || $disabled()\"\n (click)=\"addRow()\"\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: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.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 }); }
|
|
12433
|
+
], 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 ></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 ></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 >\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 >\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: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.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 }); }
|
|
12398
12434
|
}
|
|
12399
12435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CarbonMultiInputComponent, decorators: [{
|
|
12400
12436
|
type: Component,
|
|
@@ -12404,9 +12440,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
12404
12440
|
useExisting: forwardRef(() => CarbonMultiInputComponent),
|
|
12405
12441
|
multi: true,
|
|
12406
12442
|
},
|
|
12407
|
-
], 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 ></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 ></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 >\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=\"
|
|
12443
|
+
], 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 ></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 ></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 >\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 >\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"] }]
|
|
12408
12444
|
}], propDecorators: { addRowText: [{
|
|
12409
12445
|
type: Input
|
|
12446
|
+
}], addButtonType: [{
|
|
12447
|
+
type: Input
|
|
12410
12448
|
}], addRowTranslationKey: [{
|
|
12411
12449
|
type: Input
|
|
12412
12450
|
}], arbitraryAmountTitles: [{
|
|
@@ -12499,6 +12537,9 @@ class DatePickerComponent {
|
|
|
12499
12537
|
set fullWidth(value) {
|
|
12500
12538
|
this.fullWidthClass = value;
|
|
12501
12539
|
}
|
|
12540
|
+
set defaultDate(value) {
|
|
12541
|
+
this.dateValue$.next(value);
|
|
12542
|
+
}
|
|
12502
12543
|
constructor(translateService) {
|
|
12503
12544
|
this.translateService = translateService;
|
|
12504
12545
|
this.fullWidthClass = false;
|
|
@@ -13121,6 +13162,14 @@ class SearchFieldsComponent {
|
|
|
13121
13162
|
}
|
|
13122
13163
|
});
|
|
13123
13164
|
}
|
|
13165
|
+
set defaultValues(value) {
|
|
13166
|
+
console.log({ value });
|
|
13167
|
+
this._defaultValues = value;
|
|
13168
|
+
this.setDefaultValues();
|
|
13169
|
+
}
|
|
13170
|
+
get defaultValues() {
|
|
13171
|
+
return this._defaultValues;
|
|
13172
|
+
}
|
|
13124
13173
|
constructor(documentService, translateService, iconService) {
|
|
13125
13174
|
this.documentService = documentService;
|
|
13126
13175
|
this.translateService = translateService;
|
|
@@ -13128,7 +13177,10 @@ class SearchFieldsComponent {
|
|
|
13128
13177
|
this._caseDefinitionKey$ = new BehaviorSubject('');
|
|
13129
13178
|
this.inputDisabled = false;
|
|
13130
13179
|
this.externalSearchField = false;
|
|
13180
|
+
this.canSaveSearch = false;
|
|
13131
13181
|
this.doSearch = new EventEmitter();
|
|
13182
|
+
this.saveSearchEvent = new EventEmitter();
|
|
13183
|
+
this.clearEvent = new EventEmitter();
|
|
13132
13184
|
this.searchFields$ = new BehaviorSubject([]);
|
|
13133
13185
|
this.values$ = new BehaviorSubject({});
|
|
13134
13186
|
this.hasValidValues$ = this.values$.pipe(map(values => {
|
|
@@ -13214,6 +13266,7 @@ class SearchFieldsComponent {
|
|
|
13214
13266
|
clear() {
|
|
13215
13267
|
this.clear$.next(null);
|
|
13216
13268
|
this.doSearch.emit({});
|
|
13269
|
+
this.clearEvent.emit();
|
|
13217
13270
|
}
|
|
13218
13271
|
getDefaultBooleanSelectionId(values, searchFieldKey) {
|
|
13219
13272
|
const searchFieldValue = values[searchFieldKey];
|
|
@@ -13225,6 +13278,9 @@ class SearchFieldsComponent {
|
|
|
13225
13278
|
}
|
|
13226
13279
|
return null;
|
|
13227
13280
|
}
|
|
13281
|
+
saveSearch() {
|
|
13282
|
+
this.values$.pipe(take$1(1)).subscribe(values => this.saveSearchEvent.emit(values));
|
|
13283
|
+
}
|
|
13228
13284
|
getSingleValue(value, isDateTime) {
|
|
13229
13285
|
if (isDateTime) {
|
|
13230
13286
|
return new Date(value).toISOString();
|
|
@@ -13288,20 +13344,18 @@ class SearchFieldsComponent {
|
|
|
13288
13344
|
this.expanded$.next(true);
|
|
13289
13345
|
}
|
|
13290
13346
|
setDefaultValues() {
|
|
13291
|
-
if (this.defaultValues &&
|
|
13292
|
-
typeof this.defaultValues === 'object' &&
|
|
13293
|
-
Object.keys(this.defaultValues).length > 0) {
|
|
13347
|
+
if (this.defaultValues && typeof this.defaultValues === 'object') {
|
|
13294
13348
|
this.values$.next(this.defaultValues);
|
|
13295
13349
|
this.search();
|
|
13296
13350
|
this.expand();
|
|
13297
13351
|
}
|
|
13298
13352
|
}
|
|
13299
13353
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchFieldsComponent, deps: [{ token: i3$2.DocumentService }, { token: i1.TranslateService }, { token: i3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13300
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SearchFieldsComponent, isStandalone: false, selector: "valtimo-search-fields", inputs: { loading: "loading", searchFields: "searchFields", caseDefinitionKey: "caseDefinitionKey", setValuesSubject$: "setValuesSubject$", clearValuesSubject$: "clearValuesSubject$", defaultValues: "defaultValues", inputDisabled: "inputDisabled", externalSearchField: "externalSearchField" }, outputs: { doSearch: "doSearch" }, 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=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <cds-accordion>\n <cds-accordion-item\n [title]=\"'searchFields.searchButtonText' | translate\"\n (selected)=\"toggleExpanded()\"\n [expanded]=\"expanded$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"searchFieldsTemplate\"></ng-container>\n </cds-accordion-item>\n </cds-accordion>\n</ng-container>\n\n<ng-template #loadingTemplate>\n <div class=\"loading-container\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #searchFieldsTemplate>\n <ng-container *ngIf=\"searchFields$ | async as searchFields\">\n <ng-container\n *ngIf=\"{\n noSearchFields: (!searchFields || searchFields.length === 0) && !externalSearchField,\n } as vars\"\n >\n <div\n *ngIf=\"!vars.noSearchFields\"\n class=\"search-fields-container\"\n [ngClass]=\"{'search-fields-container--hidden': (expanded$ | async) === false}\"\n [cdsLayer]=\"1\"\n >\n <ng-content></ng-content>\n\n <ng-container *ngFor=\"let searchField of searchFields\">\n <div class=\"search-field-container\">\n <ng-container\n *ngTemplateOutlet=\"searchFieldTemplate; context: {searchField: searchField}\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n\n <div class=\"meta-container\" *ngIf=\"expanded$ | async\">\n <ng-container\n *ngTemplateOutlet=\"buttonsTemplate; context: {noSearchFields: vars.noSearchFields}\"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #searchFieldTemplate let-searchField=\"searchField\">\n <ng-container\n *ngIf=\"{\n values: values$ | async,\n tooltipKey: 'searchFieldsTooltips.' + searchField.key,\n tooltip: 'searchFieldsTooltips.' + searchField.key | translate,\n searchField,\n title:\n searchField.title ||\n ('searchFields.' + searchField.key !== ('searchFields.' + searchField.key | translate)\n ? ('searchFields.' + searchField.key | translate)\n : searchField.key),\n } as vars\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateText;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumber;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDate;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateBoolean;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTime;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumberRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateTextRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTimeRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateSingleSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateMultiSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateText\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumber\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDate\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateTextRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumberRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateBoolean\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'boolean'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"booleanItems$ | async as booleanItems\"\n [items]=\"booleanItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"getDefaultBooleanSelectionId(values, searchField.key)\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTime\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event, true)\"\n [smallLabel]=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTimeRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event, true)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateSingleSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'single-select-dropdown' ||\n searchField.fieldType === 'single_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateMultiSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'multi-select-dropdown' ||\n searchField.fieldType === 'multi_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [multiple]=\"true\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"multipleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionIds]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template #toText>\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n</ng-template>\n\n<ng-template #buttonsTemplate let-noSearchFields=\"noSearchFields\">\n <ng-container\n *ngTemplateOutlet=\"noSearchFieldsTemplate; context: {noSearchFields: noSearchFields}\"\n ></ng-container>\n\n <div class=\"buttons-container\" *ngIf=\"!noSearchFields && {expanded: expanded$ | async} as obs\">\n <div class=\"right-buttons\">\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"tertiary\"\n data-testid=\"search-fields-clear-button\"\n (click)=\"clear()\"\n [disabled]=\"loading || noSearchFields || inputDisabled\"\n type=\"button\"\n id=\"clear\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.clearButtonText' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"primary\"\n data-testid=\"search-fields-search-button\"\n (click)=\"search()\"\n [disabled]=\"\n loading || noSearchFields || (hasValidValues$ | async) === false || inputDisabled\n \"\n type=\"button\"\n id=\"search\"\n >\n <svg cdsIcon=\"search\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.searchButtonText' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #noSearchFieldsTemplate let-noSearchFields=\"noSearchFields\">\n <div class=\"no-search-fields-message\" *ngIf=\"noSearchFields\">\n <v-paragraph dataTestId=\"search-fields-no-fields\" [fullWidth]=\"true\" [center]=\"true\">{{\n 'searchFields.noneConfigured' | translate\n }}</v-paragraph>\n </div>\n</ng-template>\n", styles: ["::ng-deep .multiple-search-fields{display:flex!important;flex-direction:row!important;align-items:center}.to-text{margin-inline-start:8px;margin-inline-end:8px}.buttons-container{width:100%;display:flex;justify-content:flex-end}.right-buttons{display:flex;flex-direction:row;gap:16px}.search-fields-container{padding-bottom:16px;padding-top:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.search-fields-container--hidden{display:none}.meta-container{width:100%;padding-bottom:16px}.loading-container{display:flex;width:100%;justify-content:center}.no-search-fields-message{display:flex;width:100%;justify-content:center;margin-top:16px}.search-fields-tile{padding:0}::ng-deep .cds--accordion{background-color:var(--cds-layer)}::ng-deep .cds--accordion__item{border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle)}::ng-deep .cds--accordion__content{padding:0 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: "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: 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: "component", type: FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: DatePickerComponent, selector: "v-date-picker", inputs: ["name", "title", "titleTranslationKey", "widthPx", "fullWidth", "margin", "disabled", "tooltip", "required", "defaultDate", "defaultDateIsToday", "smallLabel", "clear$", "enableTime", "carbonTheme"], outputs: ["valueChange"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { 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", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i3.Accordion, selector: "cds-accordion, ibm-accordion", inputs: ["align", "size", "skeleton"] }, { kind: "component", type: i3.AccordionItem, selector: "cds-accordion-item, ibm-accordion-item", inputs: ["title", "context", "id", "skeleton", "expanded", "disabled"], outputs: ["selected"] }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
13354
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SearchFieldsComponent, isStandalone: false, selector: "valtimo-search-fields", inputs: { loading: "loading", searchFields: "searchFields", caseDefinitionKey: "caseDefinitionKey", setValuesSubject$: "setValuesSubject$", clearValuesSubject$: "clearValuesSubject$", defaultValues: "defaultValues", inputDisabled: "inputDisabled", externalSearchField: "externalSearchField", canSaveSearch: "canSaveSearch" }, outputs: { doSearch: "doSearch", saveSearchEvent: "saveSearchEvent", clearEvent: "clearEvent" }, 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=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <cds-accordion>\n <cds-accordion-item\n [title]=\"'searchFields.searchButtonText' | translate\"\n (selected)=\"toggleExpanded()\"\n [expanded]=\"expanded$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"searchFieldsTemplate\"></ng-container>\n </cds-accordion-item>\n </cds-accordion>\n</ng-container>\n\n<ng-template #loadingTemplate>\n <div class=\"loading-container\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #searchFieldsTemplate>\n <ng-container *ngIf=\"searchFields$ | async as searchFields\">\n <ng-container\n *ngIf=\"{\n noSearchFields: (!searchFields || searchFields.length === 0) && !externalSearchField,\n } as vars\"\n >\n <div\n *ngIf=\"!vars.noSearchFields\"\n class=\"search-fields-container\"\n [ngClass]=\"{'search-fields-container--hidden': (expanded$ | async) === false}\"\n [cdsLayer]=\"1\"\n >\n <ng-content></ng-content>\n\n <ng-container *ngFor=\"let searchField of searchFields\">\n <div class=\"search-field-container\">\n <ng-container\n *ngTemplateOutlet=\"searchFieldTemplate; context: {searchField: searchField}\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n\n <div class=\"meta-container\" *ngIf=\"expanded$ | async\">\n <ng-container\n *ngTemplateOutlet=\"buttonsTemplate; context: {noSearchFields: vars.noSearchFields}\"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #searchFieldTemplate let-searchField=\"searchField\">\n <ng-container\n *ngIf=\"{\n values: values$ | async,\n tooltipKey: 'searchFieldsTooltips.' + searchField.key,\n tooltip: 'searchFieldsTooltips.' + searchField.key | translate,\n searchField,\n title:\n searchField.title ||\n ('searchFields.' + searchField.key !== ('searchFields.' + searchField.key | translate)\n ? ('searchFields.' + searchField.key | translate)\n : searchField.key),\n } as vars\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateText;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumber;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDate;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateBoolean;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTime;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumberRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateTextRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTimeRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateSingleSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateMultiSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateText\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumber\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDate\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateTextRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumberRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateBoolean\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'boolean'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"booleanItems$ | async as booleanItems\"\n [items]=\"booleanItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"getDefaultBooleanSelectionId(values, searchField.key)\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTime\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event, true)\"\n [smallLabel]=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTimeRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event, true)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateSingleSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'single-select-dropdown' ||\n searchField.fieldType === 'single_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateMultiSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'multi-select-dropdown' ||\n searchField.fieldType === 'multi_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [multiple]=\"true\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"multipleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionIds]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template #toText>\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n</ng-template>\n\n<ng-template #buttonsTemplate let-noSearchFields=\"noSearchFields\">\n <ng-container\n *ngTemplateOutlet=\"noSearchFieldsTemplate; context: {noSearchFields: noSearchFields}\"\n ></ng-container>\n\n <div class=\"buttons-container\" *ngIf=\"!noSearchFields && {expanded: expanded$ | async} as obs\">\n <div class=\"right-buttons\">\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"tertiary\"\n data-testid=\"search-fields-clear-button\"\n (click)=\"clear()\"\n [disabled]=\"loading || noSearchFields || inputDisabled\"\n type=\"button\"\n id=\"clear\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.clearButtonText' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.expanded && canSaveSearch\"\n cdsButton=\"secondary\"\n data-testid=\"search-fields-save-button\"\n (click)=\"saveSearch()\"\n type=\"button\"\n id=\"save\"\n >\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.saveButtonText' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"primary\"\n data-testid=\"search-fields-search-button\"\n (click)=\"search()\"\n [disabled]=\"\n loading || noSearchFields || (hasValidValues$ | async) === false || inputDisabled\n \"\n type=\"button\"\n id=\"search\"\n >\n <svg cdsIcon=\"search\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.searchButtonText' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #noSearchFieldsTemplate let-noSearchFields=\"noSearchFields\">\n <div class=\"no-search-fields-message\" *ngIf=\"noSearchFields\">\n <v-paragraph dataTestId=\"search-fields-no-fields\" [fullWidth]=\"true\" [center]=\"true\">{{\n 'searchFields.noneConfigured' | translate\n }}</v-paragraph>\n </div>\n</ng-template>\n", styles: ["::ng-deep .multiple-search-fields{display:flex!important;flex-direction:row!important;align-items:center}.to-text{margin-inline-start:8px;margin-inline-end:8px}.buttons-container{width:100%;display:flex;justify-content:flex-end}.right-buttons{display:flex;flex-direction:row;gap:16px}.search-fields-container{padding-bottom:16px;padding-top:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.search-fields-container--hidden{display:none}.meta-container{width:100%;padding-bottom:16px}.loading-container{display:flex;width:100%;justify-content:center}.no-search-fields-message{display:flex;width:100%;justify-content:center;margin-top:16px}.search-fields-tile{padding:0}::ng-deep .cds--accordion{background-color:var(--cds-layer)}::ng-deep .cds--accordion__item{border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle)}::ng-deep .cds--accordion__content{padding:0 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: "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: 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: "component", type: FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: DatePickerComponent, selector: "v-date-picker", inputs: ["name", "title", "titleTranslationKey", "widthPx", "fullWidth", "margin", "disabled", "tooltip", "required", "defaultDate", "defaultDateIsToday", "smallLabel", "clear$", "enableTime", "carbonTheme"], outputs: ["valueChange"] }, { kind: "component", type: InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { 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", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i3.Accordion, selector: "cds-accordion, ibm-accordion", inputs: ["align", "size", "skeleton"] }, { kind: "component", type: i3.AccordionItem, selector: "cds-accordion-item, ibm-accordion-item", inputs: ["title", "context", "id", "skeleton", "expanded", "disabled"], outputs: ["selected"] }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
13301
13355
|
}
|
|
13302
13356
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchFieldsComponent, decorators: [{
|
|
13303
13357
|
type: Component,
|
|
13304
|
-
args: [{ selector: 'valtimo-search-fields', 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=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <cds-accordion>\n <cds-accordion-item\n [title]=\"'searchFields.searchButtonText' | translate\"\n (selected)=\"toggleExpanded()\"\n [expanded]=\"expanded$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"searchFieldsTemplate\"></ng-container>\n </cds-accordion-item>\n </cds-accordion>\n</ng-container>\n\n<ng-template #loadingTemplate>\n <div class=\"loading-container\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #searchFieldsTemplate>\n <ng-container *ngIf=\"searchFields$ | async as searchFields\">\n <ng-container\n *ngIf=\"{\n noSearchFields: (!searchFields || searchFields.length === 0) && !externalSearchField,\n } as vars\"\n >\n <div\n *ngIf=\"!vars.noSearchFields\"\n class=\"search-fields-container\"\n [ngClass]=\"{'search-fields-container--hidden': (expanded$ | async) === false}\"\n [cdsLayer]=\"1\"\n >\n <ng-content></ng-content>\n\n <ng-container *ngFor=\"let searchField of searchFields\">\n <div class=\"search-field-container\">\n <ng-container\n *ngTemplateOutlet=\"searchFieldTemplate; context: {searchField: searchField}\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n\n <div class=\"meta-container\" *ngIf=\"expanded$ | async\">\n <ng-container\n *ngTemplateOutlet=\"buttonsTemplate; context: {noSearchFields: vars.noSearchFields}\"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #searchFieldTemplate let-searchField=\"searchField\">\n <ng-container\n *ngIf=\"{\n values: values$ | async,\n tooltipKey: 'searchFieldsTooltips.' + searchField.key,\n tooltip: 'searchFieldsTooltips.' + searchField.key | translate,\n searchField,\n title:\n searchField.title ||\n ('searchFields.' + searchField.key !== ('searchFields.' + searchField.key | translate)\n ? ('searchFields.' + searchField.key | translate)\n : searchField.key),\n } as vars\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateText;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumber;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDate;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateBoolean;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTime;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumberRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateTextRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTimeRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateSingleSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateMultiSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateText\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumber\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDate\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateTextRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumberRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateBoolean\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'boolean'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"booleanItems$ | async as booleanItems\"\n [items]=\"booleanItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"getDefaultBooleanSelectionId(values, searchField.key)\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTime\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event, true)\"\n [smallLabel]=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTimeRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event, true)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateSingleSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'single-select-dropdown' ||\n searchField.fieldType === 'single_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateMultiSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'multi-select-dropdown' ||\n searchField.fieldType === 'multi_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [multiple]=\"true\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"multipleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionIds]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template #toText>\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n</ng-template>\n\n<ng-template #buttonsTemplate let-noSearchFields=\"noSearchFields\">\n <ng-container\n *ngTemplateOutlet=\"noSearchFieldsTemplate; context: {noSearchFields: noSearchFields}\"\n ></ng-container>\n\n <div class=\"buttons-container\" *ngIf=\"!noSearchFields && {expanded: expanded$ | async} as obs\">\n <div class=\"right-buttons\">\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"tertiary\"\n data-testid=\"search-fields-clear-button\"\n (click)=\"clear()\"\n [disabled]=\"loading || noSearchFields || inputDisabled\"\n type=\"button\"\n id=\"clear\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.clearButtonText' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"primary\"\n data-testid=\"search-fields-search-button\"\n (click)=\"search()\"\n [disabled]=\"\n loading || noSearchFields || (hasValidValues$ | async) === false || inputDisabled\n \"\n type=\"button\"\n id=\"search\"\n >\n <svg cdsIcon=\"search\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.searchButtonText' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #noSearchFieldsTemplate let-noSearchFields=\"noSearchFields\">\n <div class=\"no-search-fields-message\" *ngIf=\"noSearchFields\">\n <v-paragraph dataTestId=\"search-fields-no-fields\" [fullWidth]=\"true\" [center]=\"true\">{{\n 'searchFields.noneConfigured' | translate\n }}</v-paragraph>\n </div>\n</ng-template>\n", styles: ["::ng-deep .multiple-search-fields{display:flex!important;flex-direction:row!important;align-items:center}.to-text{margin-inline-start:8px;margin-inline-end:8px}.buttons-container{width:100%;display:flex;justify-content:flex-end}.right-buttons{display:flex;flex-direction:row;gap:16px}.search-fields-container{padding-bottom:16px;padding-top:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.search-fields-container--hidden{display:none}.meta-container{width:100%;padding-bottom:16px}.loading-container{display:flex;width:100%;justify-content:center}.no-search-fields-message{display:flex;width:100%;justify-content:center;margin-top:16px}.search-fields-tile{padding:0}::ng-deep .cds--accordion{background-color:var(--cds-layer)}::ng-deep .cds--accordion__item{border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle)}::ng-deep .cds--accordion__content{padding:0 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"] }]
|
|
13358
|
+
args: [{ selector: 'valtimo-search-fields', 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=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <cds-accordion>\n <cds-accordion-item\n [title]=\"'searchFields.searchButtonText' | translate\"\n (selected)=\"toggleExpanded()\"\n [expanded]=\"expanded$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"searchFieldsTemplate\"></ng-container>\n </cds-accordion-item>\n </cds-accordion>\n</ng-container>\n\n<ng-template #loadingTemplate>\n <div class=\"loading-container\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #searchFieldsTemplate>\n <ng-container *ngIf=\"searchFields$ | async as searchFields\">\n <ng-container\n *ngIf=\"{\n noSearchFields: (!searchFields || searchFields.length === 0) && !externalSearchField,\n } as vars\"\n >\n <div\n *ngIf=\"!vars.noSearchFields\"\n class=\"search-fields-container\"\n [ngClass]=\"{'search-fields-container--hidden': (expanded$ | async) === false}\"\n [cdsLayer]=\"1\"\n >\n <ng-content></ng-content>\n\n <ng-container *ngFor=\"let searchField of searchFields\">\n <div class=\"search-field-container\">\n <ng-container\n *ngTemplateOutlet=\"searchFieldTemplate; context: {searchField: searchField}\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n\n <div class=\"meta-container\" *ngIf=\"expanded$ | async\">\n <ng-container\n *ngTemplateOutlet=\"buttonsTemplate; context: {noSearchFields: vars.noSearchFields}\"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #searchFieldTemplate let-searchField=\"searchField\">\n <ng-container\n *ngIf=\"{\n values: values$ | async,\n tooltipKey: 'searchFieldsTooltips.' + searchField.key,\n tooltip: 'searchFieldsTooltips.' + searchField.key | translate,\n searchField,\n title:\n searchField.title ||\n ('searchFields.' + searchField.key !== ('searchFields.' + searchField.key | translate)\n ? ('searchFields.' + searchField.key | translate)\n : searchField.key),\n } as vars\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateText;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumber;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDate;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateBoolean;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTime;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateNumberRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateTextRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateDateTimeRange;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateSingleSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n searchFieldTemplateMultiSelectDropdown;\n context: {\n searchField: searchField,\n tooltipKey: vars.tooltipKey,\n tooltip: vars.tooltip,\n title: vars.title,\n values: vars.values,\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateText\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumber\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-input\n *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'single'\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [name]=\"searchField.key\"\n [title]=\"title\"\n [fullWidth]=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDate\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event)\"\n [smallLabel]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateTextRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'text' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateNumberRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'number' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-input\n name=\"start\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-input\n name=\"end\"\n [dataTestId]=\"'search-field-' + searchField.key\"\n [fullWidth]=\"true\"\n type=\"number\"\n [hideNumberSpinBox]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultValue]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'date' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateBoolean\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'boolean'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"booleanItems$ | async as booleanItems\"\n [items]=\"booleanItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"getDefaultBooleanSelectionId(values, searchField.key)\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTime\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <v-date-picker\n *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'single'\"\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [name]=\"searchField.key\"\n fullWidth=\"true\"\n (valueChange)=\"singleValueChange(searchField.key, $event, true)\"\n [smallLabel]=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateDateTimeRange\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container *ngIf=\"searchField.dataType === 'datetime' && searchField.fieldType === 'range'\">\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-form\n (valueChange)=\"multipleValueChange(searchField.key, $event, true)\"\n className=\"multiple-search-fields\"\n >\n <v-date-picker\n name=\"start\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.start\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n <ng-container *ngTemplateOutlet=\"toText\"></ng-container>\n <v-date-picker\n name=\"end\"\n fullWidth=\"true\"\n [enableTime]=\"true\"\n [clear$]=\"clear$\"\n (keyup.enter)=\"search()\"\n [defaultDate]=\"values[searchField.key]?.end\"\n [disabled]=\"inputDisabled\"\n ></v-date-picker>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateSingleSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'single-select-dropdown' ||\n searchField.fieldType === 'single_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"singleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionId]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template\n #searchFieldTemplateMultiSelectDropdown\n let-searchField=\"searchField\"\n let-tooltip=\"tooltip\"\n let-tooltipKey=\"tooltipKey\"\n let-title=\"title\"\n let-values=\"values\"\n>\n <ng-container\n *ngIf=\"\n searchField.dataType === 'text' &&\n (searchField.fieldType === 'multi-select-dropdown' ||\n searchField.fieldType === 'multi_select_dropdown')\n \"\n >\n <v-input-label\n [title]=\"title\"\n [tooltip]=\"tooltip !== tooltipKey && tooltip\"\n [small]=\"true\"\n ></v-input-label>\n <v-select\n *ngIf=\"dropdownSelectItemsMap[searchField.key] as searchFieldSelectItems\"\n [items]=\"searchFieldSelectItems\"\n [margin]=\"false\"\n [multiple]=\"true\"\n [required]=\"false\"\n [name]=\"searchField.key\"\n [clearSelectionSubject$]=\"clear$\"\n (selectedChange)=\"multipleValueChange(searchField.key, $event)\"\n (keyup.enter)=\"search()\"\n [defaultSelectionIds]=\"values[searchField.key]\"\n [disabled]=\"inputDisabled\"\n [appendInline]=\"false\"\n ></v-select>\n </ng-container>\n</ng-template>\n\n<ng-template #toText>\n <div class=\"to-text\">\n <v-paragraph>{{ 'searchFields.to' | translate }}</v-paragraph>\n </div>\n</ng-template>\n\n<ng-template #buttonsTemplate let-noSearchFields=\"noSearchFields\">\n <ng-container\n *ngTemplateOutlet=\"noSearchFieldsTemplate; context: {noSearchFields: noSearchFields}\"\n ></ng-container>\n\n <div class=\"buttons-container\" *ngIf=\"!noSearchFields && {expanded: expanded$ | async} as obs\">\n <div class=\"right-buttons\">\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"tertiary\"\n data-testid=\"search-fields-clear-button\"\n (click)=\"clear()\"\n [disabled]=\"loading || noSearchFields || inputDisabled\"\n type=\"button\"\n id=\"clear\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.clearButtonText' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.expanded && canSaveSearch\"\n cdsButton=\"secondary\"\n data-testid=\"search-fields-save-button\"\n (click)=\"saveSearch()\"\n type=\"button\"\n id=\"save\"\n >\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.saveButtonText' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.expanded\"\n cdsButton=\"primary\"\n data-testid=\"search-fields-search-button\"\n (click)=\"search()\"\n [disabled]=\"\n loading || noSearchFields || (hasValidValues$ | async) === false || inputDisabled\n \"\n type=\"button\"\n id=\"search\"\n >\n <svg cdsIcon=\"search\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFields.searchButtonText' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #noSearchFieldsTemplate let-noSearchFields=\"noSearchFields\">\n <div class=\"no-search-fields-message\" *ngIf=\"noSearchFields\">\n <v-paragraph dataTestId=\"search-fields-no-fields\" [fullWidth]=\"true\" [center]=\"true\">{{\n 'searchFields.noneConfigured' | translate\n }}</v-paragraph>\n </div>\n</ng-template>\n", styles: ["::ng-deep .multiple-search-fields{display:flex!important;flex-direction:row!important;align-items:center}.to-text{margin-inline-start:8px;margin-inline-end:8px}.buttons-container{width:100%;display:flex;justify-content:flex-end}.right-buttons{display:flex;flex-direction:row;gap:16px}.search-fields-container{padding-bottom:16px;padding-top:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.search-fields-container--hidden{display:none}.meta-container{width:100%;padding-bottom:16px}.loading-container{display:flex;width:100%;justify-content:center}.no-search-fields-message{display:flex;width:100%;justify-content:center;margin-top:16px}.search-fields-tile{padding:0}::ng-deep .cds--accordion{background-color:var(--cds-layer)}::ng-deep .cds--accordion__item{border-inline-start:1px solid var(--cds-border-subtle);border-inline-end:1px solid var(--cds-border-subtle)}::ng-deep .cds--accordion__content{padding:0 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"] }]
|
|
13305
13359
|
}], ctorParameters: () => [{ type: i3$2.DocumentService }, { type: i1.TranslateService }, { type: i3.IconService }], propDecorators: { loading: [{
|
|
13306
13360
|
type: Input
|
|
13307
13361
|
}], searchFields: [{
|
|
@@ -13318,8 +13372,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
13318
13372
|
type: Input
|
|
13319
13373
|
}], externalSearchField: [{
|
|
13320
13374
|
type: Input
|
|
13375
|
+
}], canSaveSearch: [{
|
|
13376
|
+
type: Input
|
|
13321
13377
|
}], doSearch: [{
|
|
13322
13378
|
type: Output
|
|
13379
|
+
}], saveSearchEvent: [{
|
|
13380
|
+
type: Output
|
|
13381
|
+
}], clearEvent: [{
|
|
13382
|
+
type: Output
|
|
13323
13383
|
}] } });
|
|
13324
13384
|
|
|
13325
13385
|
/*
|
|
@@ -14339,25 +14399,25 @@ class StatusSelectorComponent {
|
|
|
14339
14399
|
tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),
|
|
14340
14400
|
})));
|
|
14341
14401
|
}
|
|
14342
|
-
set
|
|
14343
|
-
this.
|
|
14402
|
+
set selectedStatusKeys(value) {
|
|
14403
|
+
this._selectedStatusKeys$.next(value);
|
|
14344
14404
|
}
|
|
14345
14405
|
constructor(translateService) {
|
|
14346
14406
|
this.translateService = translateService;
|
|
14347
14407
|
this.carbonTheme = CARBON_THEME.WHITE;
|
|
14348
14408
|
this.selectedStatusesChangeEvent = new EventEmitter();
|
|
14349
14409
|
this._statuses$ = new BehaviorSubject([]);
|
|
14350
|
-
this.
|
|
14410
|
+
this._selectedStatusKeys$ = new BehaviorSubject([]);
|
|
14351
14411
|
this.CASES_WITHOUT_STATUS_KEY = CASES_WITHOUT_STATUS_KEY;
|
|
14352
14412
|
this.listItems$ = combineLatest([
|
|
14353
14413
|
this._statuses$,
|
|
14354
|
-
this.
|
|
14414
|
+
this._selectedStatusKeys$,
|
|
14355
14415
|
this.translateService.stream('key'),
|
|
14356
14416
|
]).pipe(filter(([statuses, selectedStatuses]) => !!statuses && !!selectedStatuses), map(([statuses, selectedStatuses]) => statuses.map(status => ({
|
|
14357
14417
|
content: status.key === this.CASES_WITHOUT_STATUS_KEY
|
|
14358
14418
|
? this.translateService.instant('caseManagement.statuses.withoutStatus')
|
|
14359
14419
|
: status.title,
|
|
14360
|
-
selected: !!selectedStatuses.find(
|
|
14420
|
+
selected: !!selectedStatuses.find(selectedStatusKey => selectedStatusKey === status.key),
|
|
14361
14421
|
key: status.key,
|
|
14362
14422
|
tagType: status.tagType,
|
|
14363
14423
|
}))), distinctUntilChanged((previous, current) => isEqual(previous, current)));
|
|
@@ -14367,19 +14427,20 @@ class StatusSelectorComponent {
|
|
|
14367
14427
|
this._statuses$.pipe(take(1)).subscribe(statuses => {
|
|
14368
14428
|
const newSelectedStatuses = newSelectedItems
|
|
14369
14429
|
.map(item => statuses.find(status => status.key === item.key))
|
|
14370
|
-
.filter(status => !!status)
|
|
14430
|
+
.filter(status => !!status)
|
|
14431
|
+
.map(status => status?.key ?? '');
|
|
14371
14432
|
this.selectedStatusesChangeEvent.emit(newSelectedStatuses);
|
|
14372
14433
|
});
|
|
14373
14434
|
}
|
|
14374
14435
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusSelectorComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14375
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: StatusSelectorComponent, isStandalone: true, selector: "valtimo-status-selector", inputs: { statuses: "statuses",
|
|
14436
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: StatusSelectorComponent, isStandalone: true, selector: "valtimo-status-selector", inputs: { statuses: "statuses", selectedStatusKeys: "selectedStatusKeys", carbonTheme: "carbonTheme", disabled: "disabled" }, outputs: { selectedStatusesChangeEvent: "selectedStatusesChangeEvent" }, 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-label class=\"status-selector\" *ngIf=\"listItems$ | async as listItems\">\n {{ 'caseManagement.statuses.searchFieldTitle' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n type=\"multi\"\n [disabled]=\"disabled\"\n selectionFeedback=\"fixed\"\n (selected)=\"itemSelected($event)\"\n >\n <cds-dropdown-list\n [items]=\"listItems\"\n [listTpl]=\"colorDropdownItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</cds-label>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"status-selector-dropdown-template\">\n <cds-checkbox [checked]=\"item.selected\"></cds-checkbox>\n\n <span *ngIf=\"item.key === CASES_WITHOUT_STATUS_KEY\" class=\"generic-span\">{{\n item?.content\n }}</span>\n\n <cds-tag\n *ngIf=\"item.key !== CASES_WITHOUT_STATUS_KEY\"\n class=\"cds-tag--no-margin\"\n [type]=\"item?.tagType\"\n [title]=\"item?.content\"\n >\n {{ item?.content }}\n </cds-tag>\n </div>\n</ng-template>\n", styles: ["::ng-deep .status-selector .cds--label{width:100%;margin-bottom:0!important}::ng-deep .status-selector .cds--multiselect{margin-top:8px}::ng-deep .status-selector-dropdown-template{display:flex;margin-top:-4px}::ng-deep .status-selector-dropdown-template .cds--tag{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px;max-width:100%}::ng-deep .status-selector-dropdown-template .generic-span{display:flex;align-items:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i3.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: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14376
14437
|
}
|
|
14377
14438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusSelectorComponent, decorators: [{
|
|
14378
14439
|
type: Component,
|
|
14379
14440
|
args: [{ selector: 'valtimo-status-selector', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, DropdownModule, CheckboxModule, InputModule$1, TranslateModule, TagModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-label class=\"status-selector\" *ngIf=\"listItems$ | async as listItems\">\n {{ 'caseManagement.statuses.searchFieldTitle' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n type=\"multi\"\n [disabled]=\"disabled\"\n selectionFeedback=\"fixed\"\n (selected)=\"itemSelected($event)\"\n >\n <cds-dropdown-list\n [items]=\"listItems\"\n [listTpl]=\"colorDropdownItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</cds-label>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"status-selector-dropdown-template\">\n <cds-checkbox [checked]=\"item.selected\"></cds-checkbox>\n\n <span *ngIf=\"item.key === CASES_WITHOUT_STATUS_KEY\" class=\"generic-span\">{{\n item?.content\n }}</span>\n\n <cds-tag\n *ngIf=\"item.key !== CASES_WITHOUT_STATUS_KEY\"\n class=\"cds-tag--no-margin\"\n [type]=\"item?.tagType\"\n [title]=\"item?.content\"\n >\n {{ item?.content }}\n </cds-tag>\n </div>\n</ng-template>\n", styles: ["::ng-deep .status-selector .cds--label{width:100%;margin-bottom:0!important}::ng-deep .status-selector .cds--multiselect{margin-top:8px}::ng-deep .status-selector-dropdown-template{display:flex;margin-top:-4px}::ng-deep .status-selector-dropdown-template .cds--tag{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:24px;max-width:100%}::ng-deep .status-selector-dropdown-template .generic-span{display:flex;align-items: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"] }]
|
|
14380
14441
|
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { statuses: [{
|
|
14381
14442
|
type: Input
|
|
14382
|
-
}],
|
|
14443
|
+
}], selectedStatusKeys: [{
|
|
14383
14444
|
type: Input
|
|
14384
14445
|
}], carbonTheme: [{
|
|
14385
14446
|
type: Input
|
|
@@ -15425,16 +15486,16 @@ class PendingChangesComponent {
|
|
|
15425
15486
|
*/
|
|
15426
15487
|
class CaseTagsSelectorComponent {
|
|
15427
15488
|
constructor() {
|
|
15489
|
+
this._selectedCaseTagKeys$ = new BehaviorSubject([]);
|
|
15428
15490
|
this.carbonTheme = CARBON_THEME.WHITE;
|
|
15429
15491
|
this.selectedCaseTagsChangeEvent = new EventEmitter();
|
|
15430
15492
|
this._caseTags$ = new BehaviorSubject([]);
|
|
15431
|
-
this._selectedCaseTags$ = new BehaviorSubject([]);
|
|
15432
15493
|
this.listItems$ = combineLatest([
|
|
15433
15494
|
this._caseTags$,
|
|
15434
|
-
this.
|
|
15495
|
+
this._selectedCaseTagKeys$,
|
|
15435
15496
|
]).pipe(filter(([caseTags, selectedCaseTags]) => !!caseTags && !!selectedCaseTags), map(([caseTags, selectedCaseTags]) => caseTags.map(caseTag => ({
|
|
15436
15497
|
content: caseTag.title,
|
|
15437
|
-
selected: !!selectedCaseTags.find(
|
|
15498
|
+
selected: !!selectedCaseTags.find(selectedCaseTagKey => selectedCaseTagKey === caseTag.key),
|
|
15438
15499
|
key: caseTag.key,
|
|
15439
15500
|
tagType: caseTag.tagType,
|
|
15440
15501
|
}))), distinctUntilChanged((previous, current) => isEqual(previous, current)));
|
|
@@ -15445,27 +15506,28 @@ class CaseTagsSelectorComponent {
|
|
|
15445
15506
|
tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTags.color),
|
|
15446
15507
|
})));
|
|
15447
15508
|
}
|
|
15448
|
-
set
|
|
15449
|
-
this.
|
|
15509
|
+
set selectedCaseTagKeys(value) {
|
|
15510
|
+
this._selectedCaseTagKeys$.next(value);
|
|
15450
15511
|
}
|
|
15451
15512
|
itemSelected(event) {
|
|
15452
15513
|
const newSelectedItems = event?.filter(item => item?.selected) || [];
|
|
15453
15514
|
this._caseTags$.pipe(take(1)).subscribe(caseTags => {
|
|
15454
15515
|
const newSelectedCaseTags = newSelectedItems
|
|
15455
15516
|
.map(item => caseTags.find(caseTag => caseTag.key === item.key))
|
|
15456
|
-
.filter(caseTag => !!caseTag)
|
|
15517
|
+
.filter(caseTag => !!caseTag)
|
|
15518
|
+
.map(caseTag => caseTag?.key ?? '');
|
|
15457
15519
|
this.selectedCaseTagsChangeEvent.emit(newSelectedCaseTags);
|
|
15458
15520
|
});
|
|
15459
15521
|
}
|
|
15460
15522
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseTagsSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15461
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: CaseTagsSelectorComponent, isStandalone: true, selector: "valtimo-case-tags-selector", inputs: { caseTags: "caseTags",
|
|
15523
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: CaseTagsSelectorComponent, isStandalone: true, selector: "valtimo-case-tags-selector", inputs: { caseTags: "caseTags", selectedCaseTagKeys: "selectedCaseTagKeys", carbonTheme: "carbonTheme", disabled: "disabled" }, outputs: { selectedCaseTagsChangeEvent: "selectedCaseTagsChangeEvent" }, 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-label class=\"case-tag-selector\" *ngIf=\"listItems$ | async as listItems\">\n {{ 'caseManagement.caseTags.searchFieldTitle' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n type=\"multi\"\n [disabled]=\"disabled\"\n selectionFeedback=\"fixed\"\n (selected)=\"itemSelected($event)\"\n >\n <cds-dropdown-list\n [items]=\"listItems\"\n [listTpl]=\"colorDropdownItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</cds-label>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"case-tag-selector-dropdown-template\">\n <cds-checkbox [checked]=\"item.selected\"></cds-checkbox>\n\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ item?.content }}\n </cds-tag>\n </div>\n</ng-template>\n", styles: ["::ng-deep .case-tag-selector .cds--label{width:100%;margin-bottom:0!important}::ng-deep .case-tag-selector .cds--multiselect{margin-top:8px}::ng-deep .case-tag-selector-dropdown-template{display:flex;margin-top:-4px}::ng-deep .case-tag-selector-dropdown-template .cds--tag{margin:0}::ng-deep .case-tag-selector-dropdown-template .generic-span{display:flex;align-items:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i3.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: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
15462
15524
|
}
|
|
15463
15525
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseTagsSelectorComponent, decorators: [{
|
|
15464
15526
|
type: Component,
|
|
15465
15527
|
args: [{ selector: 'valtimo-case-tags-selector', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, DropdownModule, CheckboxModule, InputModule$1, TranslateModule, TagModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-label class=\"case-tag-selector\" *ngIf=\"listItems$ | async as listItems\">\n {{ 'caseManagement.caseTags.searchFieldTitle' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n type=\"multi\"\n [disabled]=\"disabled\"\n selectionFeedback=\"fixed\"\n (selected)=\"itemSelected($event)\"\n >\n <cds-dropdown-list\n [items]=\"listItems\"\n [listTpl]=\"colorDropdownItemTemplate\"\n ></cds-dropdown-list>\n </cds-dropdown>\n</cds-label>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"case-tag-selector-dropdown-template\">\n <cds-checkbox [checked]=\"item.selected\"></cds-checkbox>\n\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ item?.content }}\n </cds-tag>\n </div>\n</ng-template>\n", styles: ["::ng-deep .case-tag-selector .cds--label{width:100%;margin-bottom:0!important}::ng-deep .case-tag-selector .cds--multiselect{margin-top:8px}::ng-deep .case-tag-selector-dropdown-template{display:flex;margin-top:-4px}::ng-deep .case-tag-selector-dropdown-template .cds--tag{margin:0}::ng-deep .case-tag-selector-dropdown-template .generic-span{display:flex;align-items: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"] }]
|
|
15466
15528
|
}], propDecorators: { caseTags: [{
|
|
15467
15529
|
type: Input
|
|
15468
|
-
}],
|
|
15530
|
+
}], selectedCaseTagKeys: [{
|
|
15469
15531
|
type: Input
|
|
15470
15532
|
}], carbonTheme: [{
|
|
15471
15533
|
type: Input
|
|
@@ -15655,6 +15717,258 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
15655
15717
|
type: Output
|
|
15656
15718
|
}] } });
|
|
15657
15719
|
|
|
15720
|
+
/*
|
|
15721
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
15722
|
+
*
|
|
15723
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
15724
|
+
* you may not use this file except in compliance with the License.
|
|
15725
|
+
* You may obtain a copy of the License at
|
|
15726
|
+
*
|
|
15727
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
15728
|
+
*
|
|
15729
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15730
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
15731
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15732
|
+
* See the License for the specific language governing permissions and
|
|
15733
|
+
* limitations under the License.
|
|
15734
|
+
*/
|
|
15735
|
+
class ContextMenuDirective {
|
|
15736
|
+
constructor() {
|
|
15737
|
+
this.overlay = inject(Overlay);
|
|
15738
|
+
this.vcr = inject(ViewContainerRef);
|
|
15739
|
+
this.hostEl = inject((ElementRef));
|
|
15740
|
+
this.positions = [
|
|
15741
|
+
{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'top' },
|
|
15742
|
+
{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'top' },
|
|
15743
|
+
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },
|
|
15744
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },
|
|
15745
|
+
];
|
|
15746
|
+
}
|
|
15747
|
+
ngOnDestroy() {
|
|
15748
|
+
this.close();
|
|
15749
|
+
}
|
|
15750
|
+
onContextMenu(ev) {
|
|
15751
|
+
ev.preventDefault();
|
|
15752
|
+
ev.stopPropagation();
|
|
15753
|
+
this.openAt(ev.clientX, ev.clientY);
|
|
15754
|
+
}
|
|
15755
|
+
onKeydown(ev) {
|
|
15756
|
+
if ((ev.shiftKey && ev.key === 'F10') || ev.key === 'ContextMenu') {
|
|
15757
|
+
ev.preventDefault();
|
|
15758
|
+
const rect = this.hostEl.nativeElement.getBoundingClientRect();
|
|
15759
|
+
this.openAt(rect.left + 12, rect.top + 12);
|
|
15760
|
+
}
|
|
15761
|
+
}
|
|
15762
|
+
openAt(clientX, clientY) {
|
|
15763
|
+
this.close();
|
|
15764
|
+
const positionStrategy = this.overlay
|
|
15765
|
+
.position()
|
|
15766
|
+
.flexibleConnectedTo({ x: clientX, y: clientY })
|
|
15767
|
+
.withFlexibleDimensions(false)
|
|
15768
|
+
.withViewportMargin(8)
|
|
15769
|
+
.withPositions(this.positions);
|
|
15770
|
+
this.overlayRef = this.overlay.create({
|
|
15771
|
+
positionStrategy,
|
|
15772
|
+
scrollStrategy: this.overlay.scrollStrategies.close(),
|
|
15773
|
+
hasBackdrop: true,
|
|
15774
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
15775
|
+
panelClass: 'app-context-menu-panel',
|
|
15776
|
+
});
|
|
15777
|
+
const portal = new TemplatePortal(this.menuTpl, this.vcr, {
|
|
15778
|
+
data: this.contextData,
|
|
15779
|
+
close: () => this.close(),
|
|
15780
|
+
});
|
|
15781
|
+
this.overlayRef.attach(portal);
|
|
15782
|
+
const subBackdropClick = this.overlayRef.backdropClick().subscribe(() => this.close());
|
|
15783
|
+
const subKeydown = this.overlayRef
|
|
15784
|
+
.keydownEvents()
|
|
15785
|
+
.subscribe(e => e.key === 'Escape' && this.close());
|
|
15786
|
+
const backdropEl = this.overlayRef.backdropElement;
|
|
15787
|
+
const onBackdropContextMenu = (e) => {
|
|
15788
|
+
e.preventDefault();
|
|
15789
|
+
e.stopPropagation();
|
|
15790
|
+
const { clientX: x, clientY: y } = e;
|
|
15791
|
+
this.close();
|
|
15792
|
+
setTimeout(() => {
|
|
15793
|
+
const target = document.elementFromPoint(x, y);
|
|
15794
|
+
if (target) {
|
|
15795
|
+
target.dispatchEvent(new MouseEvent('contextmenu', {
|
|
15796
|
+
bubbles: true,
|
|
15797
|
+
cancelable: true,
|
|
15798
|
+
clientX: x,
|
|
15799
|
+
clientY: y,
|
|
15800
|
+
}));
|
|
15801
|
+
}
|
|
15802
|
+
}, 0);
|
|
15803
|
+
};
|
|
15804
|
+
backdropEl.addEventListener('contextmenu', onBackdropContextMenu);
|
|
15805
|
+
const subDetach = this.overlayRef.detachments().subscribe(() => {
|
|
15806
|
+
subBackdropClick.unsubscribe();
|
|
15807
|
+
subKeydown.unsubscribe();
|
|
15808
|
+
subDetach.unsubscribe();
|
|
15809
|
+
backdropEl.removeEventListener('contextmenu', onBackdropContextMenu);
|
|
15810
|
+
});
|
|
15811
|
+
}
|
|
15812
|
+
close() {
|
|
15813
|
+
if (this.overlayRef && this.overlayRef.hasAttached()) {
|
|
15814
|
+
this.overlayRef.detach();
|
|
15815
|
+
this.overlayRef.dispose();
|
|
15816
|
+
this.overlayRef = undefined;
|
|
15817
|
+
}
|
|
15818
|
+
}
|
|
15819
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15820
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: ContextMenuDirective, isStandalone: true, selector: "[valtimoContextMenu]", inputs: { menuTpl: ["valtimoContextMenu", "menuTpl"], contextData: "contextData", positions: "positions" }, host: { listeners: { "contextmenu": "onContextMenu($event)", "keydown": "onKeydown($event)" } }, ngImport: i0 }); }
|
|
15821
|
+
}
|
|
15822
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextMenuDirective, decorators: [{
|
|
15823
|
+
type: Directive,
|
|
15824
|
+
args: [{
|
|
15825
|
+
selector: '[valtimoContextMenu]',
|
|
15826
|
+
standalone: true,
|
|
15827
|
+
}]
|
|
15828
|
+
}], propDecorators: { menuTpl: [{
|
|
15829
|
+
type: Input,
|
|
15830
|
+
args: ['valtimoContextMenu']
|
|
15831
|
+
}], contextData: [{
|
|
15832
|
+
type: Input
|
|
15833
|
+
}], positions: [{
|
|
15834
|
+
type: Input
|
|
15835
|
+
}], onContextMenu: [{
|
|
15836
|
+
type: HostListener,
|
|
15837
|
+
args: ['contextmenu', ['$event']]
|
|
15838
|
+
}], onKeydown: [{
|
|
15839
|
+
type: HostListener,
|
|
15840
|
+
args: ['keydown', ['$event']]
|
|
15841
|
+
}] } });
|
|
15842
|
+
|
|
15843
|
+
/*
|
|
15844
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
15845
|
+
*
|
|
15846
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
15847
|
+
* you may not use this file except in compliance with the License.
|
|
15848
|
+
* You may obtain a copy of the License at
|
|
15849
|
+
*
|
|
15850
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
15851
|
+
*
|
|
15852
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15853
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
15854
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15855
|
+
* See the License for the specific language governing permissions and
|
|
15856
|
+
* limitations under the License.
|
|
15857
|
+
*/
|
|
15858
|
+
class QuickSearchModalComponent {
|
|
15859
|
+
constructor(fb, quickSearchStateService) {
|
|
15860
|
+
this.fb = fb;
|
|
15861
|
+
this.quickSearchStateService = quickSearchStateService;
|
|
15862
|
+
this.closeEvent = new EventEmitter();
|
|
15863
|
+
this.$modalOpen = this.quickSearchStateService.$modalOpen;
|
|
15864
|
+
this.formGroup = this.fb.group({ title: this.fb.control('', Validators.required) });
|
|
15865
|
+
}
|
|
15866
|
+
closeModal(save = false) {
|
|
15867
|
+
this.closeEvent.emit(save ? this.formGroup.getRawValue().title : null);
|
|
15868
|
+
setTimeout(() => {
|
|
15869
|
+
this.formGroup.reset();
|
|
15870
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
15871
|
+
}
|
|
15872
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchModalComponent, deps: [{ token: i2.FormBuilder }, { token: QuickSearchStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15873
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: QuickSearchModalComponent, isStandalone: true, selector: "valtimo-quick-search-modal", outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n [minContentHeight]=\"0\"\n [open]=\"$modalOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n (close)=\"closeModal()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'quickSearch.addItem' | translate }}</h3>\n </cds-modal-header>\n\n <form cdsModalContent class=\"valtimo-qiuck-search-modal__content\" [formGroup]=\"formGroup\">\n <cds-text-label>\n {{ 'interface.title' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n type=\"text\"\n [placeholder]=\"'interface.title' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-text-label>\n\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'info',\n message: 'quickSearch.deleteHelperText' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"formGroup.invalid\" cdsButton=\"primary\" (click)=\"closeModal(true)\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-qiuck-search-modal__content{display:flex;flex-direction:column;gap: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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule$1 }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: InputModule$1 }, { kind: "component", type: i3.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: NotificationModule }, { kind: "component", type: i3.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
15874
|
+
}
|
|
15875
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchModalComponent, decorators: [{
|
|
15876
|
+
type: Component,
|
|
15877
|
+
args: [{ selector: 'valtimo-quick-search-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
15878
|
+
CommonModule,
|
|
15879
|
+
ReactiveFormsModule,
|
|
15880
|
+
TranslateModule,
|
|
15881
|
+
ModalModule$1,
|
|
15882
|
+
ButtonModule,
|
|
15883
|
+
ValtimoCdsModalDirective,
|
|
15884
|
+
InputModule$1,
|
|
15885
|
+
NotificationModule,
|
|
15886
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n [minContentHeight]=\"0\"\n [open]=\"$modalOpen()\"\n size=\"sm\"\n showFooter=\"true\"\n (close)=\"closeModal()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'quickSearch.addItem' | translate }}</h3>\n </cds-modal-header>\n\n <form cdsModalContent class=\"valtimo-qiuck-search-modal__content\" [formGroup]=\"formGroup\">\n <cds-text-label>\n {{ 'interface.title' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n type=\"text\"\n [placeholder]=\"'interface.title' | translate\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-text-label>\n\n <cds-inline-notification\n [notificationObj]=\"{\n type: 'info',\n message: 'quickSearch.deleteHelperText' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"formGroup.invalid\" cdsButton=\"primary\" (click)=\"closeModal(true)\">\n {{ 'interface.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-qiuck-search-modal__content{display:flex;flex-direction:column;gap: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"] }]
|
|
15887
|
+
}], ctorParameters: () => [{ type: i2.FormBuilder }, { type: QuickSearchStateService }], propDecorators: { closeEvent: [{
|
|
15888
|
+
type: Output
|
|
15889
|
+
}] } });
|
|
15890
|
+
|
|
15891
|
+
/*
|
|
15892
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
15893
|
+
*
|
|
15894
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
15895
|
+
* you may not use this file except in compliance with the License.
|
|
15896
|
+
* You may obtain a copy of the License at
|
|
15897
|
+
*
|
|
15898
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
15899
|
+
*
|
|
15900
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15901
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
15902
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15903
|
+
* See the License for the specific language governing permissions and
|
|
15904
|
+
* limitations under the License.
|
|
15905
|
+
*/
|
|
15906
|
+
class QuickSearchComponent {
|
|
15907
|
+
constructor(iconService, quickSearchStateService, quickSearchService) {
|
|
15908
|
+
this.iconService = iconService;
|
|
15909
|
+
this.quickSearchStateService = quickSearchStateService;
|
|
15910
|
+
this.quickSearchService = quickSearchService;
|
|
15911
|
+
this.$modalOpen = this.quickSearchStateService.$modalOpen;
|
|
15912
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
15913
|
+
this.$itemToDelete = signal(null);
|
|
15914
|
+
this._refresh$ = new BehaviorSubject(null);
|
|
15915
|
+
this.quickSearchItems$ = combineLatest([
|
|
15916
|
+
this._refresh$,
|
|
15917
|
+
this.quickSearchService.params$,
|
|
15918
|
+
]).pipe(switchMap(() => this.quickSearchService.getQuickSearchItems()));
|
|
15919
|
+
this.paramsToSave$ = this.quickSearchStateService.paramsToSave$;
|
|
15920
|
+
this.quickSearchEvent = new EventEmitter();
|
|
15921
|
+
this.TOOLTIP_DELAY = 1500;
|
|
15922
|
+
this.iconService.register(TrashCan16);
|
|
15923
|
+
}
|
|
15924
|
+
deleteItem(item) {
|
|
15925
|
+
this.$itemToDelete.set(item);
|
|
15926
|
+
this.showDeleteModal$.next(true);
|
|
15927
|
+
}
|
|
15928
|
+
onDeleteConfirm(item) {
|
|
15929
|
+
this.quickSearchService.deleteQuickSearchItem(item).subscribe(() => {
|
|
15930
|
+
this._refresh$.next(null);
|
|
15931
|
+
});
|
|
15932
|
+
}
|
|
15933
|
+
onItemClick(item) {
|
|
15934
|
+
this.quickSearchEvent.emit(item.queryPath);
|
|
15935
|
+
}
|
|
15936
|
+
onModalCloseEvent(title, paramsToSave) {
|
|
15937
|
+
this.quickSearchStateService.closeModal();
|
|
15938
|
+
if (!title)
|
|
15939
|
+
return;
|
|
15940
|
+
const queryPath = new URLSearchParams(paramsToSave ?? {}).toString();
|
|
15941
|
+
this.quickSearchService
|
|
15942
|
+
.createQuickSearchItem({
|
|
15943
|
+
title,
|
|
15944
|
+
queryPath,
|
|
15945
|
+
})
|
|
15946
|
+
.subscribe(() => this._refresh$.next(null));
|
|
15947
|
+
}
|
|
15948
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchComponent, deps: [{ token: i3.IconService }, { token: QuickSearchStateService }, { token: QUICK_SEARCH_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15949
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: QuickSearchComponent, isStandalone: true, selector: "valtimo-quick-search", outputs: { quickSearchEvent: "quickSearchEvent" }, 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\n *ngIf=\"{paramsToSave: paramsToSave$ | async, quickSearchItems: quickSearchItems$ | async} as obs\"\n>\n @for (item of obs.quickSearchItems; track item.title) {\n <cds-tooltip\n [description]=\"'quickSearch.rightClickTooltip' | translate\"\n [enterDelayMs]=\"TOOLTIP_DELAY\"\n >\n <cds-tag\n type=\"blue\"\n [valtimoContextMenu]=\"contextMenuTpl\"\n [contextData]=\"item\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.title }}\n </cds-tag>\n </cds-tooltip>\n }\n\n <valtimo-quick-search-modal\n (closeEvent)=\"onModalCloseEvent($event, obs.paramsToSave)\"\n ></valtimo-quick-search-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"quickSearch.deleteModalContent\"\n [outputOnConfirm]=\"$itemToDelete()\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"quickSearch.deleteModalTitle\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n ></valtimo-confirmation-modal>\n\n <ng-template #contextMenuTpl let-data=\"data\" let-close=\"close\">\n <cds-overflow-menu-option (click)=\"deleteItem(data); close()\">\n {{ 'interface.delete' | translate }}\n\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg\n ></cds-overflow-menu-option>\n </ng-template>\n</ng-container>\n", styles: ["cds-tag{cursor:pointer}cds-overflow-menu-option{background:var(--cds-layer)}\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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: QuickSearchModalComponent, selector: "valtimo-quick-search-modal", outputs: ["closeEvent"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { 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"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: ContextMenuDirective, selector: "[valtimoContextMenu]", inputs: ["valtimoContextMenu", "contextData", "positions"] }, { kind: "ngmodule", type: TooltipModule$1 }, { kind: "component", type: i3.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }] }); }
|
|
15950
|
+
}
|
|
15951
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QuickSearchComponent, decorators: [{
|
|
15952
|
+
type: Component,
|
|
15953
|
+
args: [{ selector: 'valtimo-quick-search', standalone: true, imports: [
|
|
15954
|
+
CommonModule,
|
|
15955
|
+
TranslateModule,
|
|
15956
|
+
QuickSearchModalComponent,
|
|
15957
|
+
TagModule,
|
|
15958
|
+
ConfirmationModalModule,
|
|
15959
|
+
ContextMenuModule,
|
|
15960
|
+
IconModule,
|
|
15961
|
+
ContextMenuDirective,
|
|
15962
|
+
TooltipModule$1,
|
|
15963
|
+
DialogModule,
|
|
15964
|
+
], 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\n *ngIf=\"{paramsToSave: paramsToSave$ | async, quickSearchItems: quickSearchItems$ | async} as obs\"\n>\n @for (item of obs.quickSearchItems; track item.title) {\n <cds-tooltip\n [description]=\"'quickSearch.rightClickTooltip' | translate\"\n [enterDelayMs]=\"TOOLTIP_DELAY\"\n >\n <cds-tag\n type=\"blue\"\n [valtimoContextMenu]=\"contextMenuTpl\"\n [contextData]=\"item\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.title }}\n </cds-tag>\n </cds-tooltip>\n }\n\n <valtimo-quick-search-modal\n (closeEvent)=\"onModalCloseEvent($event, obs.paramsToSave)\"\n ></valtimo-quick-search-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"quickSearch.deleteModalContent\"\n [outputOnConfirm]=\"$itemToDelete()\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"quickSearch.deleteModalTitle\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n ></valtimo-confirmation-modal>\n\n <ng-template #contextMenuTpl let-data=\"data\" let-close=\"close\">\n <cds-overflow-menu-option (click)=\"deleteItem(data); close()\">\n {{ 'interface.delete' | translate }}\n\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg\n ></cds-overflow-menu-option>\n </ng-template>\n</ng-container>\n", styles: ["cds-tag{cursor:pointer}cds-overflow-menu-option{background:var(--cds-layer)}\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"] }]
|
|
15965
|
+
}], ctorParameters: () => [{ type: i3.IconService }, { type: QuickSearchStateService }, { type: undefined, decorators: [{
|
|
15966
|
+
type: Inject,
|
|
15967
|
+
args: [QUICK_SEARCH_SERVICE]
|
|
15968
|
+
}] }], propDecorators: { quickSearchEvent: [{
|
|
15969
|
+
type: Output
|
|
15970
|
+
}] } });
|
|
15971
|
+
|
|
15658
15972
|
/*
|
|
15659
15973
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
15660
15974
|
*
|
|
@@ -16260,5 +16574,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
16260
16574
|
* Generated bundle index. Do not edit.
|
|
16261
16575
|
*/
|
|
16262
16576
|
|
|
16263
|
-
export { Alert, AlertComponent, AlertModule, AlertService, AlertType, AlertsOptionsImpl, AutoKeyInputComponent, BOOLEAN_CONVERTER_VALUES, BpmnJsDiagramComponent, BpmnJsDiagramModule, BreadcrumbNavigationComponent, BreadcrumbNavigationModule, BreadcrumbService, CARBON_CONSTANTS, CARBON_THEME, CASES_WITHOUT_STATUS_KEY, CamundaFormComponent, CamundaFormModule, CarbonListComponent, CarbonListFilterPipe, CarbonListModule, CarbonMultiInputComponent, CarbonMultiInputModule, CarbonNoResultsComponent, CaseCountPipe, CaseTagsSelectorComponent, CdsThemeService, ChoiceFieldService, ComponentsPipesModule, ConfirmationModalComponent, ConfirmationModalModule, CtrlClickDirective, CurrentCarbonTheme, DEFAULT_LIST_TRANSLATIONS, DEFAULT_PAGINATION, DEFAULT_PAGINATOR_CONFIG, DataListComponent, DataListModule, DatePickerComponent, DatePickerModule, 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, JsonEditorComponent, KeyGeneratorService, LeftSidebarComponent, LeftSidebarModule, MenuItemTextComponent, MenuItemTranslationPipe, MenuModule, MenuRoutingModule, MenuService, ModalComponent, ModalModule, ModalService, MonacoTheme, MoveRowDirection, MultiInputFormComponent, MultiInputFormModule, MultiselectDropdownComponent, MultiselectDropdownModule, MuuriDirective, MuuriDirectiveModule, MuuriItemComponent, PageHeaderComponent, PageHeaderModule, PageHeaderService, PageSubtitleService, PageTitleComponent, PageTitleModule, PageTitleService, ParagraphComponent, ParagraphModule, PendingChangesComponent, PendingChangesService, ProgressBarComponent, ProgressBarModule, PromptComponent, PromptModule, PromptService, RadioComponent, RadioModule, ReadOnlyDirective, RemoveClassnamesDirective, RenderInBodyComponent, RenderInPageHeaderDirective, RenderPageHeaderDirective, RightSidebarComponent, RightSidebarModule, SearchFieldsComponent, SearchFieldsModule, SearchableDropdownComponent, SearchableDropdownModule, SearchableDropdownSelectComponent, SearchableDropdownSelectModule, 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, VModalComponent, VModalModule, ValtimoCdsModalDirective, ValtimoCdsOverflowButtonDirective, ValtimoModalService, ValuePathSelectorComponent, ValuePathSelectorInputMode, ValuePathSelectorPrefix, ValuePathSelectorService, ValuePathType, ViewContentService, ViewType, WebcamComponent, WebcamModule, WidgetComponent, WidgetModule, createCustomFormioComponent, customUploaderType, enableCustomFormioComponents, menuInitializer, pendingChangesGuard, registerCustomFormioComponent, registerCustomTag, registerFormioCurrencyComponent, registerFormioCurrentUserComponent, registerFormioFileSelectorComponent, registerFormioIbanComponent, registerFormioUploadComponent, registerFormioValueResolverSelectorComponent, runAfterCarbonModalClosed };
|
|
16577
|
+
export { Alert, AlertComponent, AlertModule, AlertService, AlertType, AlertsOptionsImpl, AutoKeyInputComponent, BOOLEAN_CONVERTER_VALUES, BpmnJsDiagramComponent, BpmnJsDiagramModule, BreadcrumbNavigationComponent, BreadcrumbNavigationModule, BreadcrumbService, CARBON_CONSTANTS, CARBON_THEME, CASES_WITHOUT_STATUS_KEY, CamundaFormComponent, CamundaFormModule, CarbonListComponent, CarbonListFilterPipe, CarbonListModule, CarbonMultiInputComponent, CarbonMultiInputModule, CarbonNoResultsComponent, CaseCountPipe, CaseTagsSelectorComponent, CdsThemeService, ChoiceFieldService, ComponentsPipesModule, ConfirmationModalComponent, ConfirmationModalModule, ContextMenuDirective, CtrlClickDirective, CurrentCarbonTheme, DEFAULT_LIST_TRANSLATIONS, DEFAULT_PAGINATION, DEFAULT_PAGINATOR_CONFIG, DataListComponent, DataListModule, DatePickerComponent, DatePickerModule, 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, JsonEditorComponent, KeyGeneratorService, LeftSidebarComponent, LeftSidebarModule, MenuItemTextComponent, MenuItemTranslationPipe, MenuModule, MenuRoutingModule, MenuService, ModalComponent, ModalModule, ModalService, MonacoTheme, MoveRowDirection, MultiInputFormComponent, MultiInputFormModule, MultiselectDropdownComponent, MultiselectDropdownModule, MuuriDirective, MuuriDirectiveModule, MuuriItemComponent, PageHeaderComponent, PageHeaderModule, PageHeaderService, PageSubtitleService, PageTitleComponent, PageTitleModule, PageTitleService, ParagraphComponent, ParagraphModule, PendingChangesComponent, PendingChangesService, ProgressBarComponent, ProgressBarModule, PromptComponent, PromptModule, PromptService, QUICK_SEARCH_SERVICE, QuickSearchComponent, QuickSearchStateService, RadioComponent, RadioModule, ReadOnlyDirective, RemoveClassnamesDirective, RenderInBodyComponent, RenderInPageHeaderDirective, RenderPageHeaderDirective, RightSidebarComponent, RightSidebarModule, SearchFieldsComponent, SearchFieldsModule, SearchableDropdownComponent, SearchableDropdownModule, SearchableDropdownSelectComponent, SearchableDropdownSelectModule, 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, VModalComponent, VModalModule, ValtimoCdsModalDirective, ValtimoCdsOverflowButtonDirective, ValtimoModalService, ValuePathSelectorComponent, ValuePathSelectorInputMode, ValuePathSelectorPrefix, ValuePathSelectorService, ValuePathType, ViewContentService, ViewType, WebcamComponent, WebcamModule, WidgetComponent, WidgetModule, createCustomFormioComponent, customUploaderType, enableCustomFormioComponents, menuInitializer, pendingChangesGuard, registerCustomFormioComponent, registerCustomTag, registerFormioCurrencyComponent, registerFormioCurrentUserComponent, registerFormioFileSelectorComponent, registerFormioIbanComponent, registerFormioUploadComponent, registerFormioValueResolverSelectorComponent, runAfterCarbonModalClosed };
|
|
16264
16578
|
//# sourceMappingURL=valtimo-components.mjs.map
|