@messaia/cdk 18.0.0-rc15 → 18.0.0-rc17
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/esm2022/lib/common/common.module.mjs +8 -4
- package/esm2022/lib/common/helpers/delegate.mjs +2 -0
- package/esm2022/lib/common/models/icon.mjs +6 -1
- package/esm2022/lib/common/pipes/bind.mjs +31 -0
- package/esm2022/lib/common/public_api.mjs +3 -1
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +8 -3
- package/esm2022/lib/forms/forms.module.mjs +9 -5
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +4 -2
- package/esm2022/lib/forms/models/form-field-definition.mjs +5 -1
- package/esm2022/lib/forms/pipes/field-func.pipe.mjs +23 -0
- package/esm2022/lib/select/components/select.component.mjs +3 -3
- package/fesm2022/messaia-cdk.mjs +839 -767
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/common/common.module.d.ts +2 -1
- package/lib/common/helpers/delegate.d.ts +3 -0
- package/lib/common/models/icon.d.ts +5 -0
- package/lib/common/pipes/bind.d.ts +18 -0
- package/lib/common/public_api.d.ts +2 -0
- package/lib/common/styles/utilities/_pad.scss +15 -8
- package/lib/common/styles/utilities/_pull.scss +17 -10
- package/lib/common/styles/utilities/_push.scss +16 -9
- package/lib/forms/components/generic-form/generic-form.component.d.ts +2 -0
- package/lib/forms/forms.module.d.ts +23 -21
- package/lib/forms/helpers/abstract-select-form-field.component.d.ts +1 -1
- package/lib/forms/models/form-field-definition.d.ts +5 -0
- package/lib/forms/pipes/field-func.pipe.d.ts +14 -0
- package/package.json +1 -1
package/fesm2022/messaia-cdk.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { CommonModule, Location, getLocaleNumberSymbol, NumberSymbol, DecimalPip
|
|
|
5
5
|
import * as i1$6 from '@angular/common/http';
|
|
6
6
|
import { HttpParams, HttpClient, HttpRequest, HttpHeaders, HttpEventType, provideHttpClient, withInterceptorsFromDi, HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { Directive, Input, Pipe, HostListener, Component, NgModule,
|
|
8
|
+
import { Directive, Input, Pipe, HostListener, EventEmitter, Injectable, Component, NgModule, Injector, ViewEncapsulation, COMPILER_OPTIONS, CompilerFactory, Compiler, Output, ViewChild, Optional, SkipSelf, NgZone, forwardRef, Inject, SecurityContext, ContentChildren, HostBinding, Self, ContentChild, TemplateRef, ViewContainerRef, ViewChildren, ElementRef, LOCALE_ID, ChangeDetectionStrategy, SimpleChange, Attribute } from '@angular/core';
|
|
9
9
|
import * as i1 from '@angular/forms';
|
|
10
10
|
import { FormControlName, FormControlDirective, FormArray, FormGroup, FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, NG_ASYNC_VALIDATORS, NG_VALIDATORS, AbstractControl, FormBuilder, Validators } from '@angular/forms';
|
|
11
11
|
import * as i5$1 from '@angular/material/button';
|
|
@@ -45,10 +45,10 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
45
45
|
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
|
|
46
46
|
import * as i1$1 from '@angular/platform-browser';
|
|
47
47
|
import { Title } from '@angular/platform-browser';
|
|
48
|
-
import { Subject, BehaviorSubject, of, map as map$1, fromEvent, distinctUntilChanged, debounceTime, merge as merge$1, tap, Observable, filter, takeUntil } from 'rxjs';
|
|
49
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
50
48
|
import { __decorate, __metadata } from 'tslib';
|
|
51
49
|
import 'reflect-metadata';
|
|
50
|
+
import { Subject, filter, BehaviorSubject, of, map as map$1, fromEvent, distinctUntilChanged, debounceTime, merge as merge$1, tap, Observable, takeUntil } from 'rxjs';
|
|
51
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
52
52
|
import { catchError, map, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, skip, switchMap, tap as tap$1, finalize } from 'rxjs/operators';
|
|
53
53
|
import * as i3$2 from '@angular/cdk/scrolling';
|
|
54
54
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -1056,370 +1056,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
1056
1056
|
args: [{ name: 'values', pure: false }]
|
|
1057
1057
|
}] });
|
|
1058
1058
|
|
|
1059
|
-
|
|
1060
|
-
// empty method
|
|
1061
|
-
};
|
|
1062
|
-
/** Mixin to augment a component with ngModel support. */
|
|
1063
|
-
function mixinControlValueAccessor(base, initialValue) {
|
|
1064
|
-
return class extends base {
|
|
1065
|
-
_value = initialValue instanceof Array ? Object.assign([], initialValue) : initialValue;
|
|
1066
|
-
_subjectValueChanges;
|
|
1067
|
-
valueChanges;
|
|
1068
|
-
constructor(...args) {
|
|
1069
|
-
super(...args);
|
|
1070
|
-
this._subjectValueChanges = new Subject();
|
|
1071
|
-
this.valueChanges = this._subjectValueChanges.asObservable();
|
|
1072
|
-
}
|
|
1073
|
-
set value(v) {
|
|
1074
|
-
if (v !== this._value) {
|
|
1075
|
-
this._value = v;
|
|
1076
|
-
this.onChange(v);
|
|
1077
|
-
this._changeDetectorRef.markForCheck();
|
|
1078
|
-
this._subjectValueChanges.next(v);
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
get value() {
|
|
1082
|
-
return this._value;
|
|
1083
|
-
}
|
|
1084
|
-
writeValue(value) {
|
|
1085
|
-
this.value = value;
|
|
1086
|
-
this._changeDetectorRef.markForCheck();
|
|
1087
|
-
}
|
|
1088
|
-
registerOnChange(fn) {
|
|
1089
|
-
this.onChange = fn;
|
|
1090
|
-
}
|
|
1091
|
-
registerOnTouched(fn) {
|
|
1092
|
-
this.onTouched = fn;
|
|
1093
|
-
}
|
|
1094
|
-
onChange = (_) => noop$1;
|
|
1095
|
-
onTouched = () => noop$1;
|
|
1096
|
-
};
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
/** Mixin to augment a component or directive with a `disabled` property. */
|
|
1100
|
-
function mixinDisabled(base) {
|
|
1101
|
-
return class extends base {
|
|
1102
|
-
_disabled = false;
|
|
1103
|
-
constructor(...args) {
|
|
1104
|
-
super(...args);
|
|
1105
|
-
}
|
|
1106
|
-
get disabled() {
|
|
1107
|
-
return this._disabled;
|
|
1108
|
-
}
|
|
1109
|
-
set disabled(value) {
|
|
1110
|
-
let newValue = coerceBooleanProperty(value);
|
|
1111
|
-
if (this._disabled !== newValue) {
|
|
1112
|
-
this._disabled = newValue;
|
|
1113
|
-
this.onDisabledChange(this._disabled);
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
onDisabledChange(v) {
|
|
1117
|
-
/** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */
|
|
1118
|
-
}
|
|
1119
|
-
};
|
|
1120
|
-
}
|
|
1121
|
-
|
|
1122
|
-
const headerMetadataKey = 'customer:vdHeader';
|
|
1123
|
-
const endpointMetadataKey = 'customer:vdEndpoint';
|
|
1124
|
-
|
|
1125
|
-
var Salutation;
|
|
1126
|
-
(function (Salutation) {
|
|
1127
|
-
Salutation[Salutation["Unknown"] = 0] = "Unknown";
|
|
1128
|
-
Salutation[Salutation["Female"] = 1] = "Female";
|
|
1129
|
-
Salutation[Salutation["Male"] = 2] = "Male";
|
|
1130
|
-
})(Salutation || (Salutation = {}));
|
|
1131
|
-
|
|
1132
|
-
/**
|
|
1133
|
-
* Property decorator to add display name to a property
|
|
1134
|
-
* @param name
|
|
1135
|
-
* @returns
|
|
1136
|
-
*/
|
|
1137
|
-
function Display(name) {
|
|
1138
|
-
return function (target, propertyKey) {
|
|
1139
|
-
Reflect.defineMetadata(headerMetadataKey, name, target, propertyKey);
|
|
1140
|
-
};
|
|
1141
|
-
}
|
|
1142
|
-
/**
|
|
1143
|
-
* Class decorator to add endpoint to an entity
|
|
1144
|
-
* @param endpoint
|
|
1145
|
-
* @returns
|
|
1146
|
-
*/
|
|
1147
|
-
function Api(endpoint) {
|
|
1148
|
-
return function (target) {
|
|
1149
|
-
Reflect.defineMetadata(endpointMetadataKey, endpoint, target);
|
|
1150
|
-
};
|
|
1151
|
-
}
|
|
1152
|
-
|
|
1153
|
-
/**
|
|
1154
|
-
* Gets the endpoint metadata from a class decorated with @Api.
|
|
1155
|
-
*
|
|
1156
|
-
* @param origin - The class from which to retrieve the endpoint metadata.
|
|
1157
|
-
* @returns The endpoint as a string.
|
|
1158
|
-
*/
|
|
1159
|
-
function getEndpoint(origin) {
|
|
1160
|
-
/* Retrieve and return the endpoint metadata associated with the given class */
|
|
1161
|
-
return Reflect.getMetadata(endpointMetadataKey, origin);
|
|
1162
|
-
}
|
|
1163
|
-
/**
|
|
1164
|
-
* Gets the display header metadata from a class.
|
|
1165
|
-
*
|
|
1166
|
-
* @param origin - The class from which to retrieve the header metadata.
|
|
1167
|
-
* @returns The display header as a string.
|
|
1168
|
-
*/
|
|
1169
|
-
function getDisplay(origin) {
|
|
1170
|
-
/* Retrieve and return the display header metadata associated with the given class */
|
|
1171
|
-
return Reflect.getMetadata(headerMetadataKey, origin);
|
|
1172
|
-
}
|
|
1173
|
-
|
|
1174
|
-
//@dynamic
|
|
1175
|
-
class AppStorage {
|
|
1059
|
+
class VdDelayedHoverDirective {
|
|
1176
1060
|
/**
|
|
1177
|
-
*
|
|
1178
|
-
* @param key
|
|
1061
|
+
* @property
|
|
1179
1062
|
*/
|
|
1180
|
-
|
|
1063
|
+
duration = 500;
|
|
1181
1064
|
/**
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
*/
|
|
1186
|
-
static setString = (key, value) => localStorage.setItem(AppStorage.getKey(key), value);
|
|
1065
|
+
* @property
|
|
1066
|
+
*/
|
|
1067
|
+
delayedhoverEvents = new EventEmitter();
|
|
1187
1068
|
/**
|
|
1188
|
-
|
|
1189
|
-
|
|
1069
|
+
* @field
|
|
1070
|
+
*/
|
|
1071
|
+
elementRef;
|
|
1072
|
+
/**
|
|
1073
|
+
* @field
|
|
1190
1074
|
*/
|
|
1191
|
-
|
|
1075
|
+
renderer;
|
|
1192
1076
|
/**
|
|
1193
|
-
*
|
|
1194
|
-
* @param key The key of the item to store
|
|
1195
|
-
* @param value The value to store
|
|
1077
|
+
* @field
|
|
1196
1078
|
*/
|
|
1197
|
-
|
|
1198
|
-
try {
|
|
1199
|
-
AppStorage.setString(key, JSON.stringify(value));
|
|
1200
|
-
}
|
|
1201
|
-
catch (error) {
|
|
1202
|
-
console.warn(error);
|
|
1203
|
-
}
|
|
1204
|
-
};
|
|
1079
|
+
unlisteners = null;
|
|
1205
1080
|
/**
|
|
1206
|
-
*
|
|
1207
|
-
* @param key The key of the item to store
|
|
1208
|
-
* @param value The value to store
|
|
1081
|
+
* @field
|
|
1209
1082
|
*/
|
|
1210
|
-
|
|
1211
|
-
try {
|
|
1212
|
-
AppStorage.setString(key, btoa(JSON.stringify(value)));
|
|
1213
|
-
}
|
|
1214
|
-
catch (error) {
|
|
1215
|
-
console.warn(error);
|
|
1216
|
-
}
|
|
1217
|
-
};
|
|
1083
|
+
timer = 0;
|
|
1218
1084
|
/**
|
|
1219
|
-
*
|
|
1220
|
-
* @param key The key of the item
|
|
1085
|
+
* @field
|
|
1221
1086
|
*/
|
|
1222
|
-
|
|
1223
|
-
try {
|
|
1224
|
-
return JSON.parse(AppStorage.getString(key) ?? '{}') || defaultValue;
|
|
1225
|
-
}
|
|
1226
|
-
catch (error) {
|
|
1227
|
-
return defaultValue;
|
|
1228
|
-
}
|
|
1229
|
-
};
|
|
1087
|
+
zone;
|
|
1230
1088
|
/**
|
|
1231
|
-
*
|
|
1232
|
-
* @param
|
|
1089
|
+
* Initialize the delayedhover directive.
|
|
1090
|
+
* @param elementRef
|
|
1091
|
+
* @param renderer
|
|
1092
|
+
* @param zone
|
|
1233
1093
|
*/
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
return defaultValue;
|
|
1240
|
-
}
|
|
1241
|
-
};
|
|
1242
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppStorage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1243
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: AppStorage, ngImport: i0 });
|
|
1244
|
-
}
|
|
1245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppStorage, decorators: [{
|
|
1246
|
-
type: Directive
|
|
1247
|
-
}] });
|
|
1248
|
-
|
|
1249
|
-
class DynamicBuilder {
|
|
1250
|
-
compiler;
|
|
1094
|
+
constructor(elementRef, renderer, zone) {
|
|
1095
|
+
this.elementRef = elementRef;
|
|
1096
|
+
this.renderer = renderer;
|
|
1097
|
+
this.zone = zone;
|
|
1098
|
+
}
|
|
1251
1099
|
/**
|
|
1252
|
-
*
|
|
1253
|
-
* @param componentFactoryResolver
|
|
1100
|
+
* I Cancels any pending hesitation timer.
|
|
1254
1101
|
*/
|
|
1255
|
-
|
|
1256
|
-
this.
|
|
1102
|
+
cancel() {
|
|
1103
|
+
clearTimeout(this.timer);
|
|
1257
1104
|
}
|
|
1258
1105
|
/**
|
|
1259
|
-
*
|
|
1260
|
-
* @param viewContainerRef
|
|
1261
|
-
* @param template
|
|
1262
|
-
* @param data
|
|
1106
|
+
* Gets called once when the host element is being unmounted.
|
|
1263
1107
|
*/
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
const module = this.compiler.compileModuleAndAllComponentsSync(NgModule({
|
|
1272
|
-
declarations: [component],
|
|
1273
|
-
exports: [component],
|
|
1274
|
-
imports: [CommonModule]
|
|
1275
|
-
})(class {
|
|
1276
|
-
}));
|
|
1277
|
-
/* Retrieve the factory object that creates a component of the given type */
|
|
1278
|
-
const componentFactory = module.componentFactories.find((comp) => comp.componentType === component);
|
|
1279
|
-
/* Instantiate a single component and inserts its host view into this container */
|
|
1280
|
-
const componentRef = viewContainerRef.createComponent(componentFactory);
|
|
1281
|
-
if (componentFactory) {
|
|
1282
|
-
/* Add properties to the component */
|
|
1283
|
-
Object.assign(componentRef.instance, data);
|
|
1284
|
-
/* Check this view and its children */
|
|
1285
|
-
componentRef.changeDetectorRef.detectChanges();
|
|
1286
|
-
return componentRef;
|
|
1108
|
+
ngOnDestroy() {
|
|
1109
|
+
this.cancel();
|
|
1110
|
+
/* If we have event-handler bindings, unbind them all */
|
|
1111
|
+
if (this.unlisteners) {
|
|
1112
|
+
for (var unlistener of this.unlisteners) {
|
|
1113
|
+
unlistener();
|
|
1114
|
+
}
|
|
1287
1115
|
}
|
|
1288
|
-
return null;
|
|
1289
1116
|
}
|
|
1290
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicBuilder, deps: [{ token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1291
|
-
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicBuilder, providedIn: 'root' });
|
|
1292
|
-
}
|
|
1293
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicBuilder, decorators: [{
|
|
1294
|
-
type: Injectable,
|
|
1295
|
-
args: [{ providedIn: 'root' }]
|
|
1296
|
-
}], ctorParameters: () => [{ type: i0.Compiler }] });
|
|
1297
|
-
|
|
1298
|
-
class DynamicComponentCompiler {
|
|
1299
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicComponentCompiler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1300
|
-
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicComponentCompiler, providedIn: 'root' });
|
|
1301
|
-
}
|
|
1302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicComponentCompiler, decorators: [{
|
|
1303
|
-
type: Injectable,
|
|
1304
|
-
args: [{ providedIn: 'root' }]
|
|
1305
|
-
}] });
|
|
1306
|
-
|
|
1307
|
-
class ActionItem {
|
|
1308
|
-
/**
|
|
1309
|
-
* @property
|
|
1310
|
-
*/
|
|
1311
|
-
title;
|
|
1312
|
-
/**
|
|
1313
|
-
* @property
|
|
1314
|
-
*/
|
|
1315
|
-
icon = 'radio_button_unchecked';
|
|
1316
|
-
/**
|
|
1317
|
-
* @property
|
|
1318
|
-
*/
|
|
1319
|
-
iconFontSet = 'material-symbols-outlined';
|
|
1320
|
-
/**
|
|
1321
|
-
* @property
|
|
1322
|
-
*/
|
|
1323
|
-
iconClass;
|
|
1324
|
-
/**
|
|
1325
|
-
* @property
|
|
1326
|
-
*/
|
|
1327
|
-
event;
|
|
1328
|
-
/**
|
|
1329
|
-
* @property
|
|
1330
|
-
*/
|
|
1331
|
-
hide;
|
|
1332
|
-
/**
|
|
1333
|
-
* @property
|
|
1334
|
-
*/
|
|
1335
|
-
disable;
|
|
1336
|
-
/**
|
|
1337
|
-
* @property
|
|
1338
|
-
*/
|
|
1339
|
-
items;
|
|
1340
|
-
/**
|
|
1341
|
-
* @property
|
|
1342
|
-
*/
|
|
1343
|
-
index;
|
|
1344
1117
|
/**
|
|
1345
|
-
*
|
|
1346
|
-
*
|
|
1118
|
+
* Gets called once after the host element has been mounted and the inputs
|
|
1119
|
+
* have been bound for the first time.
|
|
1347
1120
|
*/
|
|
1348
|
-
|
|
1349
|
-
|
|
1121
|
+
ngOnInit() {
|
|
1122
|
+
/*
|
|
1123
|
+
Instead of using host bindings, which would trigger change-detection digests
|
|
1124
|
+
when the events are triggered, we want to drop-down out of the core NgZone so
|
|
1125
|
+
that we can setup our event-handlers without adding processing overhead.
|
|
1126
|
+
*/
|
|
1127
|
+
this.zone.runOutsideAngular(() => {
|
|
1128
|
+
this.unlisteners = [
|
|
1129
|
+
this.renderer.listen(this.elementRef.nativeElement, "mouseenter", this.handleMouseenter),
|
|
1130
|
+
this.renderer.listen(this.elementRef.nativeElement, "mousedown", this.handleMousedown),
|
|
1131
|
+
this.renderer.listen(this.elementRef.nativeElement, "mouseleave", this.handleMouseleave)
|
|
1132
|
+
];
|
|
1133
|
+
});
|
|
1350
1134
|
}
|
|
1351
|
-
}
|
|
1352
|
-
|
|
1353
|
-
class AppSetting {
|
|
1354
|
-
/**
|
|
1355
|
-
* @property
|
|
1356
|
-
*/
|
|
1357
|
-
production;
|
|
1358
|
-
/**
|
|
1359
|
-
* @property
|
|
1360
|
-
*/
|
|
1361
|
-
debug;
|
|
1362
|
-
/**
|
|
1363
|
-
* @property
|
|
1364
|
-
*/
|
|
1365
|
-
apiUrl;
|
|
1366
|
-
/**
|
|
1367
|
-
* @property
|
|
1368
|
-
*/
|
|
1369
|
-
frontendUrl;
|
|
1370
|
-
/**
|
|
1371
|
-
* @property
|
|
1372
|
-
*/
|
|
1373
|
-
projectName;
|
|
1374
|
-
/**
|
|
1375
|
-
* @property
|
|
1376
|
-
*/
|
|
1377
|
-
copyright;
|
|
1378
|
-
/**
|
|
1379
|
-
* @property
|
|
1380
|
-
*/
|
|
1381
|
-
authUrl;
|
|
1382
|
-
/**
|
|
1383
|
-
* @property
|
|
1384
|
-
*/
|
|
1385
|
-
spaUrl;
|
|
1386
1135
|
/**
|
|
1387
|
-
*
|
|
1136
|
+
* Handles the mousedown event inside the host element.
|
|
1137
|
+
* @param event
|
|
1388
1138
|
*/
|
|
1389
|
-
|
|
1139
|
+
handleMousedown = (event) => {
|
|
1140
|
+
/*
|
|
1141
|
+
If the user shows any mouse-activity (other than enter/leave) inside the host
|
|
1142
|
+
element, we want to cancel the hesitation timer. Such mouse activity indicates
|
|
1143
|
+
non-hesitation intent on behalf of the user.
|
|
1144
|
+
*/
|
|
1145
|
+
this.cancel();
|
|
1146
|
+
};
|
|
1390
1147
|
/**
|
|
1391
|
-
*
|
|
1148
|
+
* Handles the mouseevent event inside the host element.
|
|
1149
|
+
* @param event
|
|
1392
1150
|
*/
|
|
1393
|
-
|
|
1151
|
+
handleMouseenter = (event) => {
|
|
1152
|
+
/*
|
|
1153
|
+
When the user enters the host, start the hesitation timer. This timer will be
|
|
1154
|
+
fulfilled if the user remains inside of the host without performing any other
|
|
1155
|
+
meaningful actions.
|
|
1156
|
+
*/
|
|
1157
|
+
this.timer = setTimeout(this.handleTimerThreshold, this.duration);
|
|
1158
|
+
};
|
|
1394
1159
|
/**
|
|
1395
|
-
*
|
|
1160
|
+
* Handles the mouseleave event inside the host element.
|
|
1161
|
+
* @param event
|
|
1396
1162
|
*/
|
|
1397
|
-
|
|
1163
|
+
handleMouseleave = (event) => {
|
|
1164
|
+
this.cancel();
|
|
1165
|
+
};
|
|
1398
1166
|
/**
|
|
1399
|
-
*
|
|
1167
|
+
* Handles the timer threshold event.
|
|
1400
1168
|
*/
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1169
|
+
handleTimerThreshold = () => {
|
|
1170
|
+
/*
|
|
1171
|
+
Once the hesitation timer threshold has been surpassed, we want to trigger an
|
|
1172
|
+
output event. This time, however, we want to trigger Angular change-detection.
|
|
1173
|
+
As such, we have set up into the Angular zone for the emission.
|
|
1174
|
+
*/
|
|
1175
|
+
this.zone.runGuarded(() => { this.delayedhoverEvents.emit(); });
|
|
1176
|
+
};
|
|
1177
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdDelayedHoverDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1178
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: VdDelayedHoverDirective, selector: "[delayedHover]", inputs: { duration: "duration" }, outputs: { delayedhoverEvents: "delayedHover" }, exportAs: ["hesitation"], ngImport: i0 });
|
|
1404
1179
|
}
|
|
1405
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type:
|
|
1406
|
-
type:
|
|
1407
|
-
|
|
1180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdDelayedHoverDirective, decorators: [{
|
|
1181
|
+
type: Directive,
|
|
1182
|
+
args: [{
|
|
1183
|
+
selector: "[delayedHover]",
|
|
1184
|
+
inputs: ["duration"],
|
|
1185
|
+
outputs: ["delayedhoverEvents: delayedHover"],
|
|
1186
|
+
exportAs: "hesitation"
|
|
1187
|
+
}]
|
|
1188
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }] });
|
|
1408
1189
|
|
|
1409
|
-
var
|
|
1410
|
-
(function (
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
Grid[Grid["Md"] = 3] = "Md";
|
|
1415
|
-
Grid[Grid["Lg"] = 4] = "Lg";
|
|
1416
|
-
Grid[Grid["Xl"] = 5] = "Xl";
|
|
1417
|
-
Grid[Grid["Xxl"] = 6] = "Xxl";
|
|
1418
|
-
Grid[Grid["None"] = 7] = "None";
|
|
1419
|
-
})(Grid || (Grid = {}));
|
|
1190
|
+
var AppEventType;
|
|
1191
|
+
(function (AppEventType) {
|
|
1192
|
+
AppEventType["ClickedOnNotification"] = "CLICKED_ON_NOTIFICATION";
|
|
1193
|
+
AppEventType["SocketEvent"] = "SOCKET_EVENT";
|
|
1194
|
+
})(AppEventType || (AppEventType = {}));
|
|
1420
1195
|
|
|
1421
|
-
|
|
1422
|
-
|
|
1196
|
+
var Salutation;
|
|
1197
|
+
(function (Salutation) {
|
|
1198
|
+
Salutation[Salutation["Unknown"] = 0] = "Unknown";
|
|
1199
|
+
Salutation[Salutation["Female"] = 1] = "Female";
|
|
1200
|
+
Salutation[Salutation["Male"] = 2] = "Male";
|
|
1201
|
+
})(Salutation || (Salutation = {}));
|
|
1202
|
+
|
|
1203
|
+
class AppEvent {
|
|
1204
|
+
type;
|
|
1205
|
+
payload;
|
|
1206
|
+
constructor(type, payload) {
|
|
1207
|
+
this.type = type;
|
|
1208
|
+
this.payload = payload;
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1423
1211
|
|
|
1424
1212
|
var FilterOperator;
|
|
1425
1213
|
(function (FilterOperator) {
|
|
@@ -1436,6 +1224,24 @@ var FilterOperator;
|
|
|
1436
1224
|
FilterOperator["Contains"] = "~";
|
|
1437
1225
|
})(FilterOperator || (FilterOperator = {}));
|
|
1438
1226
|
|
|
1227
|
+
var Grid;
|
|
1228
|
+
(function (Grid) {
|
|
1229
|
+
Grid[Grid["All"] = 0] = "All";
|
|
1230
|
+
Grid[Grid["Xs"] = 1] = "Xs";
|
|
1231
|
+
Grid[Grid["Sm"] = 2] = "Sm";
|
|
1232
|
+
Grid[Grid["Md"] = 3] = "Md";
|
|
1233
|
+
Grid[Grid["Lg"] = 4] = "Lg";
|
|
1234
|
+
Grid[Grid["Xl"] = 5] = "Xl";
|
|
1235
|
+
Grid[Grid["Xxl"] = 6] = "Xxl";
|
|
1236
|
+
Grid[Grid["None"] = 7] = "None";
|
|
1237
|
+
})(Grid || (Grid = {}));
|
|
1238
|
+
|
|
1239
|
+
const headerMetadataKey = 'customer:vdHeader';
|
|
1240
|
+
const endpointMetadataKey = 'customer:vdEndpoint';
|
|
1241
|
+
|
|
1242
|
+
const tableDefinitionMetadataKey = 'custom:vdTableDefinition';
|
|
1243
|
+
const tableColumnsMetadataKey = 'custom:vdTableColumns';
|
|
1244
|
+
|
|
1439
1245
|
var TableColumnType;
|
|
1440
1246
|
(function (TableColumnType) {
|
|
1441
1247
|
TableColumnType[TableColumnType["None"] = 0] = "None";
|
|
@@ -1906,6 +1712,627 @@ function ColumnObject(type) {
|
|
|
1906
1712
|
};
|
|
1907
1713
|
}
|
|
1908
1714
|
|
|
1715
|
+
/**
|
|
1716
|
+
* Property decorator to add display name to a property
|
|
1717
|
+
* @param name
|
|
1718
|
+
* @returns
|
|
1719
|
+
*/
|
|
1720
|
+
function Display(name) {
|
|
1721
|
+
return function (target, propertyKey) {
|
|
1722
|
+
Reflect.defineMetadata(headerMetadataKey, name, target, propertyKey);
|
|
1723
|
+
};
|
|
1724
|
+
}
|
|
1725
|
+
/**
|
|
1726
|
+
* Class decorator to add endpoint to an entity
|
|
1727
|
+
* @param endpoint
|
|
1728
|
+
* @returns
|
|
1729
|
+
*/
|
|
1730
|
+
function Api(endpoint) {
|
|
1731
|
+
return function (target) {
|
|
1732
|
+
Reflect.defineMetadata(endpointMetadataKey, endpoint, target);
|
|
1733
|
+
};
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
class DisplayNameNumberProjection {
|
|
1737
|
+
/**
|
|
1738
|
+
* @property
|
|
1739
|
+
*/
|
|
1740
|
+
displayName;
|
|
1741
|
+
/**
|
|
1742
|
+
* @property
|
|
1743
|
+
*/
|
|
1744
|
+
number;
|
|
1745
|
+
/**
|
|
1746
|
+
* @property
|
|
1747
|
+
*/
|
|
1748
|
+
id;
|
|
1749
|
+
}
|
|
1750
|
+
__decorate([
|
|
1751
|
+
Column({}),
|
|
1752
|
+
Display($localize `:@@name:Name`),
|
|
1753
|
+
__metadata("design:type", String)
|
|
1754
|
+
], DisplayNameNumberProjection.prototype, "displayName", void 0);
|
|
1755
|
+
__decorate([
|
|
1756
|
+
Column({ index: 10, filterOperator: FilterOperator.Contains, maxWidth: 90, display: Grid.Md }),
|
|
1757
|
+
Display($localize `:@@number:Number`),
|
|
1758
|
+
__metadata("design:type", Number)
|
|
1759
|
+
], DisplayNameNumberProjection.prototype, "number", void 0);
|
|
1760
|
+
__decorate([
|
|
1761
|
+
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
1762
|
+
Display($localize `:@@id:ID`),
|
|
1763
|
+
__metadata("design:type", Number)
|
|
1764
|
+
], DisplayNameNumberProjection.prototype, "id", void 0);
|
|
1765
|
+
|
|
1766
|
+
class DisplayNameProjection {
|
|
1767
|
+
/**
|
|
1768
|
+
* @property
|
|
1769
|
+
*/
|
|
1770
|
+
displayName;
|
|
1771
|
+
/**
|
|
1772
|
+
* @property
|
|
1773
|
+
*/
|
|
1774
|
+
id;
|
|
1775
|
+
}
|
|
1776
|
+
__decorate([
|
|
1777
|
+
Column({}),
|
|
1778
|
+
Display($localize `:@@name:Name`),
|
|
1779
|
+
__metadata("design:type", String)
|
|
1780
|
+
], DisplayNameProjection.prototype, "displayName", void 0);
|
|
1781
|
+
__decorate([
|
|
1782
|
+
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
1783
|
+
Display($localize `:@@id:ID`),
|
|
1784
|
+
__metadata("design:type", Number)
|
|
1785
|
+
], DisplayNameProjection.prototype, "id", void 0);
|
|
1786
|
+
|
|
1787
|
+
/**
|
|
1788
|
+
* Metadata class for enum values, containing display information and ordering.
|
|
1789
|
+
*/
|
|
1790
|
+
class EnumMetadata {
|
|
1791
|
+
/**
|
|
1792
|
+
* Optional display string associated with the enum value.
|
|
1793
|
+
*/
|
|
1794
|
+
display;
|
|
1795
|
+
/**
|
|
1796
|
+
* Optional order number used for sorting enum values.
|
|
1797
|
+
*/
|
|
1798
|
+
order;
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
class NameNumberProjection {
|
|
1802
|
+
/**
|
|
1803
|
+
* @property
|
|
1804
|
+
*/
|
|
1805
|
+
name;
|
|
1806
|
+
/**
|
|
1807
|
+
* @property
|
|
1808
|
+
*/
|
|
1809
|
+
number;
|
|
1810
|
+
/**
|
|
1811
|
+
* @property
|
|
1812
|
+
*/
|
|
1813
|
+
id;
|
|
1814
|
+
}
|
|
1815
|
+
__decorate([
|
|
1816
|
+
Column({}),
|
|
1817
|
+
Display($localize `:@@name:Name`),
|
|
1818
|
+
__metadata("design:type", String)
|
|
1819
|
+
], NameNumberProjection.prototype, "name", void 0);
|
|
1820
|
+
__decorate([
|
|
1821
|
+
Column({ index: 10, maxWidth: 90, display: Grid.Md }),
|
|
1822
|
+
Display($localize `:@@number:Number`),
|
|
1823
|
+
__metadata("design:type", Number)
|
|
1824
|
+
], NameNumberProjection.prototype, "number", void 0);
|
|
1825
|
+
__decorate([
|
|
1826
|
+
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
1827
|
+
Display($localize `:@@id:ID`),
|
|
1828
|
+
__metadata("design:type", Number)
|
|
1829
|
+
], NameNumberProjection.prototype, "id", void 0);
|
|
1830
|
+
|
|
1831
|
+
class NameProjection {
|
|
1832
|
+
/**
|
|
1833
|
+
* @property
|
|
1834
|
+
*/
|
|
1835
|
+
name;
|
|
1836
|
+
/**
|
|
1837
|
+
* @property
|
|
1838
|
+
*/
|
|
1839
|
+
id;
|
|
1840
|
+
}
|
|
1841
|
+
__decorate([
|
|
1842
|
+
Column({}),
|
|
1843
|
+
Display($localize `:@@name:Name`),
|
|
1844
|
+
__metadata("design:type", String)
|
|
1845
|
+
], NameProjection.prototype, "name", void 0);
|
|
1846
|
+
__decorate([
|
|
1847
|
+
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
1848
|
+
Display($localize `:@@id:ID`),
|
|
1849
|
+
__metadata("design:type", Number)
|
|
1850
|
+
], NameProjection.prototype, "id", void 0);
|
|
1851
|
+
|
|
1852
|
+
class TitleProjection {
|
|
1853
|
+
/**
|
|
1854
|
+
* @property
|
|
1855
|
+
*/
|
|
1856
|
+
title;
|
|
1857
|
+
/**
|
|
1858
|
+
* @property
|
|
1859
|
+
*/
|
|
1860
|
+
id;
|
|
1861
|
+
}
|
|
1862
|
+
__decorate([
|
|
1863
|
+
Column({}),
|
|
1864
|
+
Display($localize `:@@title:Title`),
|
|
1865
|
+
__metadata("design:type", String)
|
|
1866
|
+
], TitleProjection.prototype, "title", void 0);
|
|
1867
|
+
__decorate([
|
|
1868
|
+
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
1869
|
+
Display($localize `:@@id:ID`),
|
|
1870
|
+
__metadata("design:type", Number)
|
|
1871
|
+
], TitleProjection.prototype, "id", void 0);
|
|
1872
|
+
|
|
1873
|
+
/**
|
|
1874
|
+
* A custom Angular pipe to bind a function with a given context and arguments.
|
|
1875
|
+
*/
|
|
1876
|
+
class BindPipe {
|
|
1877
|
+
/**
|
|
1878
|
+
* Transforms the function to be bound with the specified context and arguments.
|
|
1879
|
+
*
|
|
1880
|
+
* @param fn The function to be bound. If it's not a function, the pipe returns undefined.
|
|
1881
|
+
* @param context The context (`this`) to bind to the function.
|
|
1882
|
+
* @param args Additional arguments to be pre-applied to the function.
|
|
1883
|
+
* @returns A new function bound to the specified context with the provided arguments, or undefined if `fn` is not a function.
|
|
1884
|
+
*/
|
|
1885
|
+
transform(fn, context, ...args) {
|
|
1886
|
+
/* Check if the provided value is a function */
|
|
1887
|
+
if (typeof fn === 'function') {
|
|
1888
|
+
/* Return a new function bound to the provided context with the specified arguments */
|
|
1889
|
+
return fn.bind(context, ...args);
|
|
1890
|
+
}
|
|
1891
|
+
/* Return undefined if the provided value is not a function */
|
|
1892
|
+
return undefined;
|
|
1893
|
+
}
|
|
1894
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BindPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1895
|
+
/** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: BindPipe, name: "bind" });
|
|
1896
|
+
}
|
|
1897
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BindPipe, decorators: [{
|
|
1898
|
+
type: Pipe,
|
|
1899
|
+
args: [{ name: 'bind' }]
|
|
1900
|
+
}] });
|
|
1901
|
+
|
|
1902
|
+
class EventQueueService {
|
|
1903
|
+
/**
|
|
1904
|
+
* @property
|
|
1905
|
+
*/
|
|
1906
|
+
eventBrocker = new Subject();
|
|
1907
|
+
/**
|
|
1908
|
+
* Event listener
|
|
1909
|
+
* @param eventType
|
|
1910
|
+
* @returns
|
|
1911
|
+
*/
|
|
1912
|
+
on(eventType) {
|
|
1913
|
+
return this.eventBrocker.pipe(filter(event => event.type === eventType));
|
|
1914
|
+
}
|
|
1915
|
+
/**
|
|
1916
|
+
* Triggers an event
|
|
1917
|
+
* @param event
|
|
1918
|
+
*/
|
|
1919
|
+
emit(event) {
|
|
1920
|
+
this.eventBrocker.next(event);
|
|
1921
|
+
}
|
|
1922
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EventQueueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1923
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EventQueueService, providedIn: 'root' });
|
|
1924
|
+
}
|
|
1925
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EventQueueService, decorators: [{
|
|
1926
|
+
type: Injectable,
|
|
1927
|
+
args: [{ providedIn: 'root' }]
|
|
1928
|
+
}] });
|
|
1929
|
+
|
|
1930
|
+
const Templates = {
|
|
1931
|
+
/**
|
|
1932
|
+
* Projection template for ID and number
|
|
1933
|
+
* @param x
|
|
1934
|
+
* @returns
|
|
1935
|
+
*/
|
|
1936
|
+
idNumberTemplate: (x) => `
|
|
1937
|
+
<div class="labeled">
|
|
1938
|
+
<small>${$localize `:@@id:ID`}:</small>
|
|
1939
|
+
<small class="na">${x?.id || ''}</small>
|
|
1940
|
+
</div>
|
|
1941
|
+
<div class="labeled">
|
|
1942
|
+
<small>Nr.:</small>
|
|
1943
|
+
<small class="na">${x?.number || ''}</small>
|
|
1944
|
+
</div>`,
|
|
1945
|
+
/**
|
|
1946
|
+
* Projection template for ID and name
|
|
1947
|
+
* @param x
|
|
1948
|
+
* @returns
|
|
1949
|
+
*/
|
|
1950
|
+
idNameTemplate: (x) => `
|
|
1951
|
+
<div class="labeled">
|
|
1952
|
+
<small>${$localize `:@@id:ID`}:</small>
|
|
1953
|
+
<small class="na">${x?.id || ''}</small>
|
|
1954
|
+
</div>
|
|
1955
|
+
<div class="labeled">
|
|
1956
|
+
<small>Name:</small>
|
|
1957
|
+
<small class="na">${x?.name || ''}</small>
|
|
1958
|
+
</div>`,
|
|
1959
|
+
/**
|
|
1960
|
+
* Projection template for ID and display name
|
|
1961
|
+
* @param x
|
|
1962
|
+
* @returns
|
|
1963
|
+
*/
|
|
1964
|
+
idDisplayNameTemplate: (x) => `
|
|
1965
|
+
<div class="labeled">
|
|
1966
|
+
<small>${$localize `:@@id:ID`}:</small>
|
|
1967
|
+
<small class="na">${x?.id || ''}</small>
|
|
1968
|
+
</div>
|
|
1969
|
+
<div class="labeled">
|
|
1970
|
+
<small>${$localize `:@@name:Name`}:</small>
|
|
1971
|
+
<small class="na">${x?.displayName || ''}</small>
|
|
1972
|
+
</div>`,
|
|
1973
|
+
/**
|
|
1974
|
+
* Projection template for number and display name
|
|
1975
|
+
* @param x
|
|
1976
|
+
* @returns
|
|
1977
|
+
*/
|
|
1978
|
+
numberDisplayNameTemplate: (x) => `
|
|
1979
|
+
<div class="labeled">
|
|
1980
|
+
<small>Nr.:</small>
|
|
1981
|
+
<small class="na">${x?.number || ''}</small>
|
|
1982
|
+
</div>
|
|
1983
|
+
<div class="labeled">
|
|
1984
|
+
<small>${$localize `:@@name:Name`}:</small>
|
|
1985
|
+
<small class="na">${x?.displayName || ''}</small>
|
|
1986
|
+
</div>`,
|
|
1987
|
+
/**
|
|
1988
|
+
* Projection template for number and name
|
|
1989
|
+
* @param x
|
|
1990
|
+
* @returns
|
|
1991
|
+
*/
|
|
1992
|
+
numberNameTemplate: (x) => `
|
|
1993
|
+
<div class="labeled">
|
|
1994
|
+
<small>Nr.:</small>
|
|
1995
|
+
<small class="na">${x?.number || ''}</small>
|
|
1996
|
+
</div>
|
|
1997
|
+
<div class="labeled">
|
|
1998
|
+
<small>${$localize `:@@name:Name`}:</small>
|
|
1999
|
+
<small class="na">${x?.name || ''}</small>
|
|
2000
|
+
</div>`,
|
|
2001
|
+
/**
|
|
2002
|
+
* Projection template for ID and title
|
|
2003
|
+
* @param x
|
|
2004
|
+
* @returns
|
|
2005
|
+
*/
|
|
2006
|
+
idTitleTemplate: (x) => `
|
|
2007
|
+
<div class="labeled">
|
|
2008
|
+
<small>${$localize `:@@id:ID`}:</small>
|
|
2009
|
+
<small class="na">${x?.id || ''}</small>
|
|
2010
|
+
</div>
|
|
2011
|
+
<div class="labeled">
|
|
2012
|
+
<small>${$localize `:@@title:Title`}.:</small>
|
|
2013
|
+
<small class="na">${x?.title || ''}</small>
|
|
2014
|
+
</div>`,
|
|
2015
|
+
};
|
|
2016
|
+
|
|
2017
|
+
const noop$1 = () => {
|
|
2018
|
+
// empty method
|
|
2019
|
+
};
|
|
2020
|
+
/** Mixin to augment a component with ngModel support. */
|
|
2021
|
+
function mixinControlValueAccessor(base, initialValue) {
|
|
2022
|
+
return class extends base {
|
|
2023
|
+
_value = initialValue instanceof Array ? Object.assign([], initialValue) : initialValue;
|
|
2024
|
+
_subjectValueChanges;
|
|
2025
|
+
valueChanges;
|
|
2026
|
+
constructor(...args) {
|
|
2027
|
+
super(...args);
|
|
2028
|
+
this._subjectValueChanges = new Subject();
|
|
2029
|
+
this.valueChanges = this._subjectValueChanges.asObservable();
|
|
2030
|
+
}
|
|
2031
|
+
set value(v) {
|
|
2032
|
+
if (v !== this._value) {
|
|
2033
|
+
this._value = v;
|
|
2034
|
+
this.onChange(v);
|
|
2035
|
+
this._changeDetectorRef.markForCheck();
|
|
2036
|
+
this._subjectValueChanges.next(v);
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2039
|
+
get value() {
|
|
2040
|
+
return this._value;
|
|
2041
|
+
}
|
|
2042
|
+
writeValue(value) {
|
|
2043
|
+
this.value = value;
|
|
2044
|
+
this._changeDetectorRef.markForCheck();
|
|
2045
|
+
}
|
|
2046
|
+
registerOnChange(fn) {
|
|
2047
|
+
this.onChange = fn;
|
|
2048
|
+
}
|
|
2049
|
+
registerOnTouched(fn) {
|
|
2050
|
+
this.onTouched = fn;
|
|
2051
|
+
}
|
|
2052
|
+
onChange = (_) => noop$1;
|
|
2053
|
+
onTouched = () => noop$1;
|
|
2054
|
+
};
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
/** Mixin to augment a component or directive with a `disabled` property. */
|
|
2058
|
+
function mixinDisabled(base) {
|
|
2059
|
+
return class extends base {
|
|
2060
|
+
_disabled = false;
|
|
2061
|
+
constructor(...args) {
|
|
2062
|
+
super(...args);
|
|
2063
|
+
}
|
|
2064
|
+
get disabled() {
|
|
2065
|
+
return this._disabled;
|
|
2066
|
+
}
|
|
2067
|
+
set disabled(value) {
|
|
2068
|
+
let newValue = coerceBooleanProperty(value);
|
|
2069
|
+
if (this._disabled !== newValue) {
|
|
2070
|
+
this._disabled = newValue;
|
|
2071
|
+
this.onDisabledChange(this._disabled);
|
|
2072
|
+
}
|
|
2073
|
+
}
|
|
2074
|
+
onDisabledChange(v) {
|
|
2075
|
+
/** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */
|
|
2076
|
+
}
|
|
2077
|
+
};
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2080
|
+
/**
|
|
2081
|
+
* Gets the endpoint metadata from a class decorated with @Api.
|
|
2082
|
+
*
|
|
2083
|
+
* @param origin - The class from which to retrieve the endpoint metadata.
|
|
2084
|
+
* @returns The endpoint as a string.
|
|
2085
|
+
*/
|
|
2086
|
+
function getEndpoint(origin) {
|
|
2087
|
+
/* Retrieve and return the endpoint metadata associated with the given class */
|
|
2088
|
+
return Reflect.getMetadata(endpointMetadataKey, origin);
|
|
2089
|
+
}
|
|
2090
|
+
/**
|
|
2091
|
+
* Gets the display header metadata from a class.
|
|
2092
|
+
*
|
|
2093
|
+
* @param origin - The class from which to retrieve the header metadata.
|
|
2094
|
+
* @returns The display header as a string.
|
|
2095
|
+
*/
|
|
2096
|
+
function getDisplay(origin) {
|
|
2097
|
+
/* Retrieve and return the display header metadata associated with the given class */
|
|
2098
|
+
return Reflect.getMetadata(headerMetadataKey, origin);
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2101
|
+
//@dynamic
|
|
2102
|
+
class AppStorage {
|
|
2103
|
+
/**
|
|
2104
|
+
* Gets storage key
|
|
2105
|
+
* @param key
|
|
2106
|
+
*/
|
|
2107
|
+
static getKey = (key) => `${key}`;
|
|
2108
|
+
/**
|
|
2109
|
+
* Sets a string from localStorage
|
|
2110
|
+
* @param key The key of the item to store
|
|
2111
|
+
* @param value The value to store
|
|
2112
|
+
*/
|
|
2113
|
+
static setString = (key, value) => localStorage.setItem(AppStorage.getKey(key), value);
|
|
2114
|
+
/**
|
|
2115
|
+
* Gets a string from localStorage
|
|
2116
|
+
* @param key The key of the item
|
|
2117
|
+
*/
|
|
2118
|
+
static getString = (key) => localStorage.getItem(AppStorage.getKey(key));
|
|
2119
|
+
/**
|
|
2120
|
+
* Sets an object from localStorage
|
|
2121
|
+
* @param key The key of the item to store
|
|
2122
|
+
* @param value The value to store
|
|
2123
|
+
*/
|
|
2124
|
+
static setObject = (key, value) => {
|
|
2125
|
+
try {
|
|
2126
|
+
AppStorage.setString(key, JSON.stringify(value));
|
|
2127
|
+
}
|
|
2128
|
+
catch (error) {
|
|
2129
|
+
console.warn(error);
|
|
2130
|
+
}
|
|
2131
|
+
};
|
|
2132
|
+
/**
|
|
2133
|
+
* Sets an object from localStorage
|
|
2134
|
+
* @param key The key of the item to store
|
|
2135
|
+
* @param value The value to store
|
|
2136
|
+
*/
|
|
2137
|
+
static setObjectEncoded = (key, value) => {
|
|
2138
|
+
try {
|
|
2139
|
+
AppStorage.setString(key, btoa(JSON.stringify(value)));
|
|
2140
|
+
}
|
|
2141
|
+
catch (error) {
|
|
2142
|
+
console.warn(error);
|
|
2143
|
+
}
|
|
2144
|
+
};
|
|
2145
|
+
/**
|
|
2146
|
+
* Gets an object from localStorage
|
|
2147
|
+
* @param key The key of the item
|
|
2148
|
+
*/
|
|
2149
|
+
static getObject = (key, defaultValue) => {
|
|
2150
|
+
try {
|
|
2151
|
+
return JSON.parse(AppStorage.getString(key) ?? '{}') || defaultValue;
|
|
2152
|
+
}
|
|
2153
|
+
catch (error) {
|
|
2154
|
+
return defaultValue;
|
|
2155
|
+
}
|
|
2156
|
+
};
|
|
2157
|
+
/**
|
|
2158
|
+
* Gets an object from localStorage
|
|
2159
|
+
* @param key The key of the item
|
|
2160
|
+
*/
|
|
2161
|
+
static getObjectEncoded = (key, defaultValue) => {
|
|
2162
|
+
try {
|
|
2163
|
+
return JSON.parse(atob(AppStorage.getString(key) ?? '{}')) || defaultValue;
|
|
2164
|
+
}
|
|
2165
|
+
catch (error) {
|
|
2166
|
+
return defaultValue;
|
|
2167
|
+
}
|
|
2168
|
+
};
|
|
2169
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppStorage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2170
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: AppStorage, ngImport: i0 });
|
|
2171
|
+
}
|
|
2172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppStorage, decorators: [{
|
|
2173
|
+
type: Directive
|
|
2174
|
+
}] });
|
|
2175
|
+
|
|
2176
|
+
class DynamicBuilder {
|
|
2177
|
+
compiler;
|
|
2178
|
+
/**
|
|
2179
|
+
* Constructor
|
|
2180
|
+
* @param componentFactoryResolver
|
|
2181
|
+
*/
|
|
2182
|
+
constructor(compiler) {
|
|
2183
|
+
this.compiler = compiler;
|
|
2184
|
+
}
|
|
2185
|
+
/**
|
|
2186
|
+
* Compiles the specified html
|
|
2187
|
+
* @param viewContainerRef
|
|
2188
|
+
* @param template
|
|
2189
|
+
* @param data
|
|
2190
|
+
*/
|
|
2191
|
+
compileHtml(viewContainerRef, template, data) {
|
|
2192
|
+
/* Create a dynamic component */
|
|
2193
|
+
var component = Component({ template: template })(class {
|
|
2194
|
+
});
|
|
2195
|
+
/* Destroys all views in this container */
|
|
2196
|
+
viewContainerRef.clear();
|
|
2197
|
+
/* Compile the given NgModule and all of its components */
|
|
2198
|
+
const module = this.compiler.compileModuleAndAllComponentsSync(NgModule({
|
|
2199
|
+
declarations: [component],
|
|
2200
|
+
exports: [component],
|
|
2201
|
+
imports: [CommonModule]
|
|
2202
|
+
})(class {
|
|
2203
|
+
}));
|
|
2204
|
+
/* Retrieve the factory object that creates a component of the given type */
|
|
2205
|
+
const componentFactory = module.componentFactories.find((comp) => comp.componentType === component);
|
|
2206
|
+
/* Instantiate a single component and inserts its host view into this container */
|
|
2207
|
+
const componentRef = viewContainerRef.createComponent(componentFactory);
|
|
2208
|
+
if (componentFactory) {
|
|
2209
|
+
/* Add properties to the component */
|
|
2210
|
+
Object.assign(componentRef.instance, data);
|
|
2211
|
+
/* Check this view and its children */
|
|
2212
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2213
|
+
return componentRef;
|
|
2214
|
+
}
|
|
2215
|
+
return null;
|
|
2216
|
+
}
|
|
2217
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicBuilder, deps: [{ token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2218
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicBuilder, providedIn: 'root' });
|
|
2219
|
+
}
|
|
2220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicBuilder, decorators: [{
|
|
2221
|
+
type: Injectable,
|
|
2222
|
+
args: [{ providedIn: 'root' }]
|
|
2223
|
+
}], ctorParameters: () => [{ type: i0.Compiler }] });
|
|
2224
|
+
|
|
2225
|
+
class DynamicComponentCompiler {
|
|
2226
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicComponentCompiler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2227
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicComponentCompiler, providedIn: 'root' });
|
|
2228
|
+
}
|
|
2229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DynamicComponentCompiler, decorators: [{
|
|
2230
|
+
type: Injectable,
|
|
2231
|
+
args: [{ providedIn: 'root' }]
|
|
2232
|
+
}] });
|
|
2233
|
+
|
|
2234
|
+
class ActionItem {
|
|
2235
|
+
/**
|
|
2236
|
+
* @property
|
|
2237
|
+
*/
|
|
2238
|
+
title;
|
|
2239
|
+
/**
|
|
2240
|
+
* @property
|
|
2241
|
+
*/
|
|
2242
|
+
icon = 'radio_button_unchecked';
|
|
2243
|
+
/**
|
|
2244
|
+
* @property
|
|
2245
|
+
*/
|
|
2246
|
+
iconFontSet = 'material-symbols-outlined';
|
|
2247
|
+
/**
|
|
2248
|
+
* @property
|
|
2249
|
+
*/
|
|
2250
|
+
iconClass;
|
|
2251
|
+
/**
|
|
2252
|
+
* @property
|
|
2253
|
+
*/
|
|
2254
|
+
event;
|
|
2255
|
+
/**
|
|
2256
|
+
* @property
|
|
2257
|
+
*/
|
|
2258
|
+
hide;
|
|
2259
|
+
/**
|
|
2260
|
+
* @property
|
|
2261
|
+
*/
|
|
2262
|
+
disable;
|
|
2263
|
+
/**
|
|
2264
|
+
* @property
|
|
2265
|
+
*/
|
|
2266
|
+
items;
|
|
2267
|
+
/**
|
|
2268
|
+
* @property
|
|
2269
|
+
*/
|
|
2270
|
+
index;
|
|
2271
|
+
/**
|
|
2272
|
+
* constructor
|
|
2273
|
+
* @param init
|
|
2274
|
+
*/
|
|
2275
|
+
constructor(init) {
|
|
2276
|
+
Object.assign(this, init);
|
|
2277
|
+
}
|
|
2278
|
+
}
|
|
2279
|
+
|
|
2280
|
+
class AppSetting {
|
|
2281
|
+
/**
|
|
2282
|
+
* @property
|
|
2283
|
+
*/
|
|
2284
|
+
production;
|
|
2285
|
+
/**
|
|
2286
|
+
* @property
|
|
2287
|
+
*/
|
|
2288
|
+
debug;
|
|
2289
|
+
/**
|
|
2290
|
+
* @property
|
|
2291
|
+
*/
|
|
2292
|
+
apiUrl;
|
|
2293
|
+
/**
|
|
2294
|
+
* @property
|
|
2295
|
+
*/
|
|
2296
|
+
frontendUrl;
|
|
2297
|
+
/**
|
|
2298
|
+
* @property
|
|
2299
|
+
*/
|
|
2300
|
+
projectName;
|
|
2301
|
+
/**
|
|
2302
|
+
* @property
|
|
2303
|
+
*/
|
|
2304
|
+
copyright;
|
|
2305
|
+
/**
|
|
2306
|
+
* @property
|
|
2307
|
+
*/
|
|
2308
|
+
authUrl;
|
|
2309
|
+
/**
|
|
2310
|
+
* @property
|
|
2311
|
+
*/
|
|
2312
|
+
spaUrl;
|
|
2313
|
+
/**
|
|
2314
|
+
* @property
|
|
2315
|
+
*/
|
|
2316
|
+
postLoginRoute;
|
|
2317
|
+
/**
|
|
2318
|
+
* @property
|
|
2319
|
+
*/
|
|
2320
|
+
authClientId;
|
|
2321
|
+
/**
|
|
2322
|
+
* @property
|
|
2323
|
+
*/
|
|
2324
|
+
authResponseType;
|
|
2325
|
+
/**
|
|
2326
|
+
* @property
|
|
2327
|
+
*/
|
|
2328
|
+
authScope;
|
|
2329
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppSetting, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2330
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppSetting });
|
|
2331
|
+
}
|
|
2332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AppSetting, decorators: [{
|
|
2333
|
+
type: Injectable
|
|
2334
|
+
}] });
|
|
2335
|
+
|
|
1909
2336
|
/**
|
|
1910
2337
|
* Represents the state of being invalid.
|
|
1911
2338
|
*/
|
|
@@ -2934,6 +3361,11 @@ class Icon {
|
|
|
2934
3361
|
* Font icon name or function returning the icon dynamically.
|
|
2935
3362
|
*/
|
|
2936
3363
|
fontIcon;
|
|
3364
|
+
/**
|
|
3365
|
+
* Icon color or a function that returns the color dynamically.
|
|
3366
|
+
* If a function is provided, it takes optional parameters x and ctx.
|
|
3367
|
+
*/
|
|
3368
|
+
iconColor;
|
|
2937
3369
|
/**
|
|
2938
3370
|
* Font set name for font icon.
|
|
2939
3371
|
*/
|
|
@@ -3473,7 +3905,8 @@ const COMMON_DECLARATIONS = [
|
|
|
3473
3905
|
PropertyPipe,
|
|
3474
3906
|
SplitPipe,
|
|
3475
3907
|
JoinPipe,
|
|
3476
|
-
PropertyJoinPipe
|
|
3908
|
+
PropertyJoinPipe,
|
|
3909
|
+
BindPipe
|
|
3477
3910
|
];
|
|
3478
3911
|
class VdCommonModule {
|
|
3479
3912
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -3500,7 +3933,8 @@ class VdCommonModule {
|
|
|
3500
3933
|
PropertyPipe,
|
|
3501
3934
|
SplitPipe,
|
|
3502
3935
|
JoinPipe,
|
|
3503
|
-
PropertyJoinPipe
|
|
3936
|
+
PropertyJoinPipe,
|
|
3937
|
+
BindPipe], exports: [DataSourcePipe,
|
|
3504
3938
|
DisableControlDirective,
|
|
3505
3939
|
EnumPipe,
|
|
3506
3940
|
FileSizePipe,
|
|
@@ -3523,7 +3957,8 @@ class VdCommonModule {
|
|
|
3523
3957
|
PropertyPipe,
|
|
3524
3958
|
SplitPipe,
|
|
3525
3959
|
JoinPipe,
|
|
3526
|
-
PropertyJoinPipe
|
|
3960
|
+
PropertyJoinPipe,
|
|
3961
|
+
BindPipe] });
|
|
3527
3962
|
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdCommonModule, providers: [...RUNTIME_COMPILER_PROVIDERS] });
|
|
3528
3963
|
}
|
|
3529
3964
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdCommonModule, decorators: [{
|
|
@@ -3536,137 +3971,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
3536
3971
|
}]
|
|
3537
3972
|
}] });
|
|
3538
3973
|
|
|
3539
|
-
class VdDelayedHoverDirective {
|
|
3540
|
-
/**
|
|
3541
|
-
* @property
|
|
3542
|
-
*/
|
|
3543
|
-
duration = 500;
|
|
3544
|
-
/**
|
|
3545
|
-
* @property
|
|
3546
|
-
*/
|
|
3547
|
-
delayedhoverEvents = new EventEmitter();
|
|
3548
|
-
/**
|
|
3549
|
-
* @field
|
|
3550
|
-
*/
|
|
3551
|
-
elementRef;
|
|
3552
|
-
/**
|
|
3553
|
-
* @field
|
|
3554
|
-
*/
|
|
3555
|
-
renderer;
|
|
3556
|
-
/**
|
|
3557
|
-
* @field
|
|
3558
|
-
*/
|
|
3559
|
-
unlisteners = null;
|
|
3560
|
-
/**
|
|
3561
|
-
* @field
|
|
3562
|
-
*/
|
|
3563
|
-
timer = 0;
|
|
3564
|
-
/**
|
|
3565
|
-
* @field
|
|
3566
|
-
*/
|
|
3567
|
-
zone;
|
|
3568
|
-
/**
|
|
3569
|
-
* Initialize the delayedhover directive.
|
|
3570
|
-
* @param elementRef
|
|
3571
|
-
* @param renderer
|
|
3572
|
-
* @param zone
|
|
3573
|
-
*/
|
|
3574
|
-
constructor(elementRef, renderer, zone) {
|
|
3575
|
-
this.elementRef = elementRef;
|
|
3576
|
-
this.renderer = renderer;
|
|
3577
|
-
this.zone = zone;
|
|
3578
|
-
}
|
|
3579
|
-
/**
|
|
3580
|
-
* I Cancels any pending hesitation timer.
|
|
3581
|
-
*/
|
|
3582
|
-
cancel() {
|
|
3583
|
-
clearTimeout(this.timer);
|
|
3584
|
-
}
|
|
3585
|
-
/**
|
|
3586
|
-
* Gets called once when the host element is being unmounted.
|
|
3587
|
-
*/
|
|
3588
|
-
ngOnDestroy() {
|
|
3589
|
-
this.cancel();
|
|
3590
|
-
/* If we have event-handler bindings, unbind them all */
|
|
3591
|
-
if (this.unlisteners) {
|
|
3592
|
-
for (var unlistener of this.unlisteners) {
|
|
3593
|
-
unlistener();
|
|
3594
|
-
}
|
|
3595
|
-
}
|
|
3596
|
-
}
|
|
3597
|
-
/**
|
|
3598
|
-
* Gets called once after the host element has been mounted and the inputs
|
|
3599
|
-
* have been bound for the first time.
|
|
3600
|
-
*/
|
|
3601
|
-
ngOnInit() {
|
|
3602
|
-
/*
|
|
3603
|
-
Instead of using host bindings, which would trigger change-detection digests
|
|
3604
|
-
when the events are triggered, we want to drop-down out of the core NgZone so
|
|
3605
|
-
that we can setup our event-handlers without adding processing overhead.
|
|
3606
|
-
*/
|
|
3607
|
-
this.zone.runOutsideAngular(() => {
|
|
3608
|
-
this.unlisteners = [
|
|
3609
|
-
this.renderer.listen(this.elementRef.nativeElement, "mouseenter", this.handleMouseenter),
|
|
3610
|
-
this.renderer.listen(this.elementRef.nativeElement, "mousedown", this.handleMousedown),
|
|
3611
|
-
this.renderer.listen(this.elementRef.nativeElement, "mouseleave", this.handleMouseleave)
|
|
3612
|
-
];
|
|
3613
|
-
});
|
|
3614
|
-
}
|
|
3615
|
-
/**
|
|
3616
|
-
* Handles the mousedown event inside the host element.
|
|
3617
|
-
* @param event
|
|
3618
|
-
*/
|
|
3619
|
-
handleMousedown = (event) => {
|
|
3620
|
-
/*
|
|
3621
|
-
If the user shows any mouse-activity (other than enter/leave) inside the host
|
|
3622
|
-
element, we want to cancel the hesitation timer. Such mouse activity indicates
|
|
3623
|
-
non-hesitation intent on behalf of the user.
|
|
3624
|
-
*/
|
|
3625
|
-
this.cancel();
|
|
3626
|
-
};
|
|
3627
|
-
/**
|
|
3628
|
-
* Handles the mouseevent event inside the host element.
|
|
3629
|
-
* @param event
|
|
3630
|
-
*/
|
|
3631
|
-
handleMouseenter = (event) => {
|
|
3632
|
-
/*
|
|
3633
|
-
When the user enters the host, start the hesitation timer. This timer will be
|
|
3634
|
-
fulfilled if the user remains inside of the host without performing any other
|
|
3635
|
-
meaningful actions.
|
|
3636
|
-
*/
|
|
3637
|
-
this.timer = setTimeout(this.handleTimerThreshold, this.duration);
|
|
3638
|
-
};
|
|
3639
|
-
/**
|
|
3640
|
-
* Handles the mouseleave event inside the host element.
|
|
3641
|
-
* @param event
|
|
3642
|
-
*/
|
|
3643
|
-
handleMouseleave = (event) => {
|
|
3644
|
-
this.cancel();
|
|
3645
|
-
};
|
|
3646
|
-
/**
|
|
3647
|
-
* Handles the timer threshold event.
|
|
3648
|
-
*/
|
|
3649
|
-
handleTimerThreshold = () => {
|
|
3650
|
-
/*
|
|
3651
|
-
Once the hesitation timer threshold has been surpassed, we want to trigger an
|
|
3652
|
-
output event. This time, however, we want to trigger Angular change-detection.
|
|
3653
|
-
As such, we have set up into the Angular zone for the emission.
|
|
3654
|
-
*/
|
|
3655
|
-
this.zone.runGuarded(() => { this.delayedhoverEvents.emit(); });
|
|
3656
|
-
};
|
|
3657
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdDelayedHoverDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3658
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: VdDelayedHoverDirective, selector: "[delayedHover]", inputs: { duration: "duration" }, outputs: { delayedhoverEvents: "delayedHover" }, exportAs: ["hesitation"], ngImport: i0 });
|
|
3659
|
-
}
|
|
3660
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdDelayedHoverDirective, decorators: [{
|
|
3661
|
-
type: Directive,
|
|
3662
|
-
args: [{
|
|
3663
|
-
selector: "[delayedHover]",
|
|
3664
|
-
inputs: ["duration"],
|
|
3665
|
-
outputs: ["delayedhoverEvents: delayedHover"],
|
|
3666
|
-
exportAs: "hesitation"
|
|
3667
|
-
}]
|
|
3668
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }] });
|
|
3669
|
-
|
|
3670
3974
|
class VdMenuComponent {
|
|
3671
3975
|
/**
|
|
3672
3976
|
* Menu items
|
|
@@ -8530,6 +8834,10 @@ class FormFieldDefinition {
|
|
|
8530
8834
|
* This can be used to display a Material icon in the options list.
|
|
8531
8835
|
*/
|
|
8532
8836
|
optionMatIconProperty;
|
|
8837
|
+
/**
|
|
8838
|
+
* A function that returns the icon based on the given property, entity, form group, and context.
|
|
8839
|
+
*/
|
|
8840
|
+
optionIcon;
|
|
8533
8841
|
/**
|
|
8534
8842
|
* The property name in the option object for the SVG icon.
|
|
8535
8843
|
* This can be used to display an SVG icon in the options list.
|
|
@@ -8922,147 +9230,39 @@ __decorate([
|
|
|
8922
9230
|
/**
|
|
8923
9231
|
* @class
|
|
8924
9232
|
*/
|
|
8925
|
-
class MenuDepartment {
|
|
8926
|
-
/**
|
|
8927
|
-
* @property
|
|
8928
|
-
*/
|
|
8929
|
-
menuId;
|
|
8930
|
-
/**
|
|
8931
|
-
* @property
|
|
8932
|
-
*/
|
|
8933
|
-
departmentId;
|
|
8934
|
-
/**
|
|
8935
|
-
* @property
|
|
8936
|
-
*/
|
|
8937
|
-
department;
|
|
8938
|
-
/**
|
|
8939
|
-
* @property
|
|
8940
|
-
*/
|
|
8941
|
-
departmentName;
|
|
8942
|
-
/**
|
|
8943
|
-
* Constructor
|
|
8944
|
-
* @param init
|
|
8945
|
-
*/
|
|
8946
|
-
constructor(init) {
|
|
8947
|
-
Object.assign(this, init);
|
|
8948
|
-
}
|
|
8949
|
-
}
|
|
8950
|
-
__decorate([
|
|
8951
|
-
prop(),
|
|
8952
|
-
__metadata("design:type", Number)
|
|
8953
|
-
], MenuDepartment.prototype, "menuId", void 0);
|
|
8954
|
-
__decorate([
|
|
8955
|
-
required(),
|
|
8956
|
-
__metadata("design:type", Number)
|
|
8957
|
-
], MenuDepartment.prototype, "departmentId", void 0);
|
|
8958
|
-
|
|
8959
|
-
class TitleProjection {
|
|
8960
|
-
/**
|
|
8961
|
-
* @property
|
|
8962
|
-
*/
|
|
8963
|
-
title;
|
|
8964
|
-
/**
|
|
8965
|
-
* @property
|
|
8966
|
-
*/
|
|
8967
|
-
id;
|
|
8968
|
-
}
|
|
8969
|
-
__decorate([
|
|
8970
|
-
Column({}),
|
|
8971
|
-
Display($localize `:@@title:Title`),
|
|
8972
|
-
__metadata("design:type", String)
|
|
8973
|
-
], TitleProjection.prototype, "title", void 0);
|
|
8974
|
-
__decorate([
|
|
8975
|
-
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
8976
|
-
Display($localize `:@@id:ID`),
|
|
8977
|
-
__metadata("design:type", Number)
|
|
8978
|
-
], TitleProjection.prototype, "id", void 0);
|
|
8979
|
-
|
|
8980
|
-
const Templates = {
|
|
8981
|
-
/**
|
|
8982
|
-
* Projection template for ID and number
|
|
8983
|
-
* @param x
|
|
8984
|
-
* @returns
|
|
8985
|
-
*/
|
|
8986
|
-
idNumberTemplate: (x) => `
|
|
8987
|
-
<div class="labeled">
|
|
8988
|
-
<small>${$localize `:@@id:ID`}:</small>
|
|
8989
|
-
<small class="na">${x?.id || ''}</small>
|
|
8990
|
-
</div>
|
|
8991
|
-
<div class="labeled">
|
|
8992
|
-
<small>Nr.:</small>
|
|
8993
|
-
<small class="na">${x?.number || ''}</small>
|
|
8994
|
-
</div>`,
|
|
8995
|
-
/**
|
|
8996
|
-
* Projection template for ID and name
|
|
8997
|
-
* @param x
|
|
8998
|
-
* @returns
|
|
9233
|
+
class MenuDepartment {
|
|
9234
|
+
/**
|
|
9235
|
+
* @property
|
|
8999
9236
|
*/
|
|
9000
|
-
|
|
9001
|
-
<div class="labeled">
|
|
9002
|
-
<small>${$localize `:@@id:ID`}:</small>
|
|
9003
|
-
<small class="na">${x?.id || ''}</small>
|
|
9004
|
-
</div>
|
|
9005
|
-
<div class="labeled">
|
|
9006
|
-
<small>Name:</small>
|
|
9007
|
-
<small class="na">${x?.name || ''}</small>
|
|
9008
|
-
</div>`,
|
|
9237
|
+
menuId;
|
|
9009
9238
|
/**
|
|
9010
|
-
*
|
|
9011
|
-
* @param x
|
|
9012
|
-
* @returns
|
|
9239
|
+
* @property
|
|
9013
9240
|
*/
|
|
9014
|
-
|
|
9015
|
-
<div class="labeled">
|
|
9016
|
-
<small>${$localize `:@@id:ID`}:</small>
|
|
9017
|
-
<small class="na">${x?.id || ''}</small>
|
|
9018
|
-
</div>
|
|
9019
|
-
<div class="labeled">
|
|
9020
|
-
<small>${$localize `:@@name:Name`}:</small>
|
|
9021
|
-
<small class="na">${x?.displayName || ''}</small>
|
|
9022
|
-
</div>`,
|
|
9241
|
+
departmentId;
|
|
9023
9242
|
/**
|
|
9024
|
-
*
|
|
9025
|
-
* @param x
|
|
9026
|
-
* @returns
|
|
9243
|
+
* @property
|
|
9027
9244
|
*/
|
|
9028
|
-
|
|
9029
|
-
<div class="labeled">
|
|
9030
|
-
<small>Nr.:</small>
|
|
9031
|
-
<small class="na">${x?.number || ''}</small>
|
|
9032
|
-
</div>
|
|
9033
|
-
<div class="labeled">
|
|
9034
|
-
<small>${$localize `:@@name:Name`}:</small>
|
|
9035
|
-
<small class="na">${x?.displayName || ''}</small>
|
|
9036
|
-
</div>`,
|
|
9245
|
+
department;
|
|
9037
9246
|
/**
|
|
9038
|
-
*
|
|
9039
|
-
* @param x
|
|
9040
|
-
* @returns
|
|
9247
|
+
* @property
|
|
9041
9248
|
*/
|
|
9042
|
-
|
|
9043
|
-
<div class="labeled">
|
|
9044
|
-
<small>Nr.:</small>
|
|
9045
|
-
<small class="na">${x?.number || ''}</small>
|
|
9046
|
-
</div>
|
|
9047
|
-
<div class="labeled">
|
|
9048
|
-
<small>${$localize `:@@name:Name`}:</small>
|
|
9049
|
-
<small class="na">${x?.name || ''}</small>
|
|
9050
|
-
</div>`,
|
|
9249
|
+
departmentName;
|
|
9051
9250
|
/**
|
|
9052
|
-
*
|
|
9053
|
-
* @param
|
|
9054
|
-
* @returns
|
|
9251
|
+
* Constructor
|
|
9252
|
+
* @param init
|
|
9055
9253
|
*/
|
|
9056
|
-
|
|
9057
|
-
|
|
9058
|
-
|
|
9059
|
-
|
|
9060
|
-
|
|
9061
|
-
|
|
9062
|
-
|
|
9063
|
-
|
|
9064
|
-
|
|
9065
|
-
|
|
9254
|
+
constructor(init) {
|
|
9255
|
+
Object.assign(this, init);
|
|
9256
|
+
}
|
|
9257
|
+
}
|
|
9258
|
+
__decorate([
|
|
9259
|
+
prop(),
|
|
9260
|
+
__metadata("design:type", Number)
|
|
9261
|
+
], MenuDepartment.prototype, "menuId", void 0);
|
|
9262
|
+
__decorate([
|
|
9263
|
+
required(),
|
|
9264
|
+
__metadata("design:type", Number)
|
|
9265
|
+
], MenuDepartment.prototype, "departmentId", void 0);
|
|
9066
9266
|
|
|
9067
9267
|
/**
|
|
9068
9268
|
* @class
|
|
@@ -12612,7 +12812,7 @@ class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
12612
12812
|
console.log(message, optionalParams);
|
|
12613
12813
|
}
|
|
12614
12814
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AbstractSelectFormField, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
12615
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: AbstractSelectFormField, inputs: { enum: "enum", enumMetadata: "enumMetadata", textPrefix: "textPrefix", optionTextProperty: "optionTextProperty", optionValueProperty: "optionValueProperty", matIconKey: "matIconKey", svgIconKey: "svgIconKey", fontSet: "fontSet", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", selectFirst: "selectFirst", sortBy: "sortBy", mapper: "mapper", defaultOption: "defaultOption", multiple: "multiple", sorted: "sorted", endpoint: "endpoint", params: "params", projection: "projection", loadData: "loadData", enumFilter: "enumFilter", disabled: "disabled", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, usesInheritance: true, ngImport: i0 });
|
|
12815
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: AbstractSelectFormField, inputs: { enum: "enum", enumMetadata: "enumMetadata", textPrefix: "textPrefix", optionTextProperty: "optionTextProperty", optionValueProperty: "optionValueProperty", matIconKey: "matIconKey", svgIconKey: "svgIconKey", fontSet: "fontSet", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", selectFirst: "selectFirst", sortBy: "sortBy", mapper: "mapper", optionIcon: "optionIcon", defaultOption: "defaultOption", multiple: "multiple", sorted: "sorted", endpoint: "endpoint", params: "params", projection: "projection", loadData: "loadData", enumFilter: "enumFilter", disabled: "disabled", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, usesInheritance: true, ngImport: i0 });
|
|
12616
12816
|
}
|
|
12617
12817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AbstractSelectFormField, decorators: [{
|
|
12618
12818
|
type: Directive
|
|
@@ -12656,6 +12856,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
12656
12856
|
type: Input
|
|
12657
12857
|
}], mapper: [{
|
|
12658
12858
|
type: Input
|
|
12859
|
+
}], optionIcon: [{
|
|
12860
|
+
type: Input
|
|
12659
12861
|
}], defaultOption: [{
|
|
12660
12862
|
type: Input
|
|
12661
12863
|
}], multiple: [{
|
|
@@ -12890,7 +13092,7 @@ class VdSelectComponent extends AbstractSelectFormField {
|
|
|
12890
13092
|
provide: MAT_SELECT_CONFIG,
|
|
12891
13093
|
useValue: { overlayPanelClass: 'vd-select-filter-overlay' }
|
|
12892
13094
|
}
|
|
12893
|
-
], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdSelectOptionDirective, descendants: true }, { propertyName: "triggerTemplate", first: true, predicate: VdSelectTriggerDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" [hidden]=\"readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith??defaultCompareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <div class=\"mat-mdc-form-field mat-form-field-appearance-fill\" flex>\r\n <div class=\"mat-mdc-text-field-wrapper mdc-text-field mdc-text-field--filled mdc-text-field--no-label\">\r\n <div class=\"mat-mdc-form-field-focus-overlay\"></div>\r\n <div class=\"mat-mdc-form-field-flex\">\r\n <div class=\"mat-mdc-form-field-infix\" layout=\"row\" flex>\r\n <input matInput #filterInput type=\"text\" placeholder=\"Filter...\" class=\"mat-mdc-input-element vd-select-filter mat-mdc-form-field-input-control mdc-text-field__input\" (keyup)=\"handleFilter($event)\" flex>\r\n <mat-icon *ngIf=\"filterInput?.value\" (click)=\"filterInput!.value = ''; handleFilter($event);\" fontSet=\"material-symbols-outlined\">close</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mdc-line-ripple\"></div>\r\n </div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"(onLaunch?.observers?.length??0) > 0\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: selectedOptions }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for icons -->\r\n <mat-select-trigger *ngIf=\"(matIconKey || svgIconKey) && !triggerTemplate?.templateRef && !optionTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple && defaultOption\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[optionValueProperty]\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[optionTextProperty], select, option {option} other {{{option[optionTextProperty]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef && !triggerTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{currentValue[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"currentValue[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span> </span>\r\n <span i18n=\"@@selection\">{currentValue[optionTextProperty], select, option {option} other {{{currentValue[optionTextProperty]}}}}</span>\r\n </span>\r\n <span *ngIf=\"!last\">, </span>\r\n </ng-container>\r\n </span>\r\n </span>\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: currentValue }\"></ng-template>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef && !triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"(onLaunch?.observers?.length??0) > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;opacity:.6;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0;top:9px;font-size:18px;cursor:pointer}.vd-select-filter-wrap{background:inherit;position:sticky;top:-8px;box-sizing:border-box;z-index:100}.vd-select-filter-wrap .vd-select-filter-inner{z-index:100;display:flex;flex-direction:row;align-items:center;background:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter{box-shadow:none;padding:16px 16px 16px 0;box-sizing:border-box;width:100%;border:none;background-color:inherit;color:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter:focus-visible{border:none;outline:none}.vd-select-filter-wrap .mat-divider{display:block;width:100%;border-top-width:1px;border-top-style:solid;box-sizing:border-box}::ng-deep .mat-mdc-select-trigger{display:flex!important}::ng-deep .mat-mdc-select-trigger .mat-icon{display:flex;margin-right:8px}::ng-deep .mat-mdc-chip{background-color:var(--mdc-chip-elevated-container-color, transparent);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);color:inherit;display:inline-block;line-height:20px;height:24px!important;padding:1px 16px}::ng-deep .mat-mdc-chip:not(:last-child){margin:1px 4px 1px 0}::ng-deep .mat-mdc-chip>span{color:var(--mdc-chip-label-text-color, inherit);display:inline-block;font-size:.94em;line-height:1.8em}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5$3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
13095
|
+
], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdSelectOptionDirective, descendants: true }, { propertyName: "triggerTemplate", first: true, predicate: VdSelectTriggerDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" [hidden]=\"readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith??defaultCompareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <div class=\"mat-mdc-form-field mat-form-field-appearance-fill\" flex>\r\n <div class=\"mat-mdc-text-field-wrapper mdc-text-field mdc-text-field--filled mdc-text-field--no-label\">\r\n <div class=\"mat-mdc-form-field-focus-overlay\"></div>\r\n <div class=\"mat-mdc-form-field-flex\">\r\n <div class=\"mat-mdc-form-field-infix\" layout=\"row\" flex>\r\n <input matInput #filterInput type=\"text\" placeholder=\"Filter...\" class=\"mat-mdc-input-element vd-select-filter mat-mdc-form-field-input-control mdc-text-field__input\" (keyup)=\"handleFilter($event)\" flex>\r\n <mat-icon *ngIf=\"filterInput?.value\" (click)=\"filterInput!.value = ''; handleFilter($event);\" fontSet=\"material-symbols-outlined\">close</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mdc-line-ripple\"></div>\r\n </div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"(onLaunch?.observers?.length??0) > 0\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: selectedOptions }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <ng-template *ngIf=\"optionIcon\" #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: optionIcon(option) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option, text: option[optionTextProperty] }\"></ng-template>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for icons -->\r\n <mat-select-trigger *ngIf=\"(matIconKey || svgIconKey) && !triggerTemplate?.templateRef && !optionTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple && defaultOption\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[optionValueProperty]\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <ng-template *ngIf=\"optionIcon\" #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: optionIcon(option) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[optionTextProperty], select, option {option} other {{{option[optionTextProperty]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option, text: option[optionTextProperty] }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef && !triggerTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{currentValue[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"currentValue[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span> </span>\r\n <span i18n=\"@@selection\">{currentValue[optionTextProperty], select, option {option} other {{{currentValue[optionTextProperty]}}}}</span>\r\n </span>\r\n <span *ngIf=\"!last\">, </span>\r\n </ng-container>\r\n </span>\r\n </span>\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: currentValue }\"></ng-template>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef && !triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: currentValue, text: currentValue[optionTextProperty] }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"(onLaunch?.observers?.length??0) > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;opacity:.6;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0;top:9px;font-size:18px;cursor:pointer}.vd-select-filter-wrap{background:inherit;position:sticky;top:-8px;box-sizing:border-box;z-index:100}.vd-select-filter-wrap .vd-select-filter-inner{z-index:100;display:flex;flex-direction:row;align-items:center;background:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter{box-shadow:none;padding:16px 16px 16px 0;box-sizing:border-box;width:100%;border:none;background-color:inherit;color:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter:focus-visible{border:none;outline:none}.vd-select-filter-wrap .mat-divider{display:block;width:100%;border-top-width:1px;border-top-style:solid;box-sizing:border-box}::ng-deep .mat-mdc-select-trigger{display:flex!important}::ng-deep .mat-mdc-select-trigger .mat-icon{display:flex;margin-right:8px}::ng-deep .mat-mdc-chip{background-color:var(--mdc-chip-elevated-container-color, transparent);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);color:inherit;display:inline-block;line-height:20px;height:24px!important;padding:1px 16px}::ng-deep .mat-mdc-chip:not(:last-child){margin:1px 4px 1px 0}::ng-deep .mat-mdc-chip>span{color:var(--mdc-chip-label-text-color, inherit);display:inline-block;font-size:.94em;line-height:1.8em}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5$3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
12894
13096
|
}
|
|
12895
13097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdSelectComponent, decorators: [{
|
|
12896
13098
|
type: Component,
|
|
@@ -12900,7 +13102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
12900
13102
|
provide: MAT_SELECT_CONFIG,
|
|
12901
13103
|
useValue: { overlayPanelClass: 'vd-select-filter-overlay' }
|
|
12902
13104
|
}
|
|
12903
|
-
], template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" [hidden]=\"readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith??defaultCompareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <div class=\"mat-mdc-form-field mat-form-field-appearance-fill\" flex>\r\n <div class=\"mat-mdc-text-field-wrapper mdc-text-field mdc-text-field--filled mdc-text-field--no-label\">\r\n <div class=\"mat-mdc-form-field-focus-overlay\"></div>\r\n <div class=\"mat-mdc-form-field-flex\">\r\n <div class=\"mat-mdc-form-field-infix\" layout=\"row\" flex>\r\n <input matInput #filterInput type=\"text\" placeholder=\"Filter...\" class=\"mat-mdc-input-element vd-select-filter mat-mdc-form-field-input-control mdc-text-field__input\" (keyup)=\"handleFilter($event)\" flex>\r\n <mat-icon *ngIf=\"filterInput?.value\" (click)=\"filterInput!.value = ''; handleFilter($event);\" fontSet=\"material-symbols-outlined\">close</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mdc-line-ripple\"></div>\r\n </div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"(onLaunch?.observers?.length??0) > 0\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: selectedOptions }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for icons -->\r\n <mat-select-trigger *ngIf=\"(matIconKey || svgIconKey) && !triggerTemplate?.templateRef && !optionTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple && defaultOption\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[optionValueProperty]\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[optionTextProperty], select, option {option} other {{{option[optionTextProperty]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef && !triggerTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{currentValue[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"currentValue[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span> </span>\r\n <span i18n=\"@@selection\">{currentValue[optionTextProperty], select, option {option} other {{{currentValue[optionTextProperty]}}}}</span>\r\n </span>\r\n <span *ngIf=\"!last\">, </span>\r\n </ng-container>\r\n </span>\r\n </span>\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: currentValue }\"></ng-template>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef && !triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"(onLaunch?.observers?.length??0) > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;opacity:.6;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0;top:9px;font-size:18px;cursor:pointer}.vd-select-filter-wrap{background:inherit;position:sticky;top:-8px;box-sizing:border-box;z-index:100}.vd-select-filter-wrap .vd-select-filter-inner{z-index:100;display:flex;flex-direction:row;align-items:center;background:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter{box-shadow:none;padding:16px 16px 16px 0;box-sizing:border-box;width:100%;border:none;background-color:inherit;color:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter:focus-visible{border:none;outline:none}.vd-select-filter-wrap .mat-divider{display:block;width:100%;border-top-width:1px;border-top-style:solid;box-sizing:border-box}::ng-deep .mat-mdc-select-trigger{display:flex!important}::ng-deep .mat-mdc-select-trigger .mat-icon{display:flex;margin-right:8px}::ng-deep .mat-mdc-chip{background-color:var(--mdc-chip-elevated-container-color, transparent);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);color:inherit;display:inline-block;line-height:20px;height:24px!important;padding:1px 16px}::ng-deep .mat-mdc-chip:not(:last-child){margin:1px 4px 1px 0}::ng-deep .mat-mdc-chip>span{color:var(--mdc-chip-label-text-color, inherit);display:inline-block;font-size:.94em;line-height:1.8em}\n"] }]
|
|
13105
|
+
], template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" [hidden]=\"readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith??defaultCompareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <div class=\"mat-mdc-form-field mat-form-field-appearance-fill\" flex>\r\n <div class=\"mat-mdc-text-field-wrapper mdc-text-field mdc-text-field--filled mdc-text-field--no-label\">\r\n <div class=\"mat-mdc-form-field-focus-overlay\"></div>\r\n <div class=\"mat-mdc-form-field-flex\">\r\n <div class=\"mat-mdc-form-field-infix\" layout=\"row\" flex>\r\n <input matInput #filterInput type=\"text\" placeholder=\"Filter...\" class=\"mat-mdc-input-element vd-select-filter mat-mdc-form-field-input-control mdc-text-field__input\" (keyup)=\"handleFilter($event)\" flex>\r\n <mat-icon *ngIf=\"filterInput?.value\" (click)=\"filterInput!.value = ''; handleFilter($event);\" fontSet=\"material-symbols-outlined\">close</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mdc-line-ripple\"></div>\r\n </div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"(onLaunch?.observers?.length??0) > 0\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: selectedOptions }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\" [class]=\"triggerCssClass\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <ng-template *ngIf=\"optionIcon\" #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: optionIcon(option) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option, text: option[optionTextProperty] }\"></ng-template>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for icons -->\r\n <mat-select-trigger *ngIf=\"(matIconKey || svgIconKey) && !triggerTemplate?.templateRef && !optionTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span>{{option[optionTextProperty]}}</span>\r\n </span>\r\n <span *ngIf=\"!last\"> </span>\r\n </ng-container>\r\n </span>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple && defaultOption\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[optionValueProperty]\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{option[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"option[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <ng-template *ngIf=\"optionIcon\" #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: optionIcon(option) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[optionTextProperty], select, option {option} other {{{option[optionTextProperty]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: option, text: option[optionTextProperty] }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef && !triggerTemplate?.templateRef\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <ng-container *ngFor=\"let option of selectedOptions; let i = index; let last = last\">\r\n <span layout=\"row\" layout-align=\"start center\">\r\n <mat-icon *ngIf=\"matIconKey && !svgIconKey\" [fontSet]=\"fontSet || 'material-symbols-outlined'\">{{currentValue[matIconKey]}}</mat-icon>\r\n <mat-icon *ngIf=\"svgIconKey && !matIconKey\" [svgIcon]=\"currentValue[svgIconKey]\" [fontSet]=\"fontSet || 'material-symbols-outlined'\"></mat-icon>\r\n <span> </span>\r\n <span i18n=\"@@selection\">{currentValue[optionTextProperty], select, option {option} other {{{currentValue[optionTextProperty]}}}}</span>\r\n </span>\r\n <span *ngIf=\"!last\">, </span>\r\n </ng-container>\r\n </span>\r\n </span>\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ trigger: currentValue }\"></ng-template>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef && !triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ option: currentValue, text: currentValue[optionTextProperty] }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"(onLaunch?.observers?.length??0) > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;opacity:.6;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0;top:9px;font-size:18px;cursor:pointer}.vd-select-filter-wrap{background:inherit;position:sticky;top:-8px;box-sizing:border-box;z-index:100}.vd-select-filter-wrap .vd-select-filter-inner{z-index:100;display:flex;flex-direction:row;align-items:center;background:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter{box-shadow:none;padding:16px 16px 16px 0;box-sizing:border-box;width:100%;border:none;background-color:inherit;color:inherit}.vd-select-filter-wrap .vd-select-filter-inner .vd-select-filter:focus-visible{border:none;outline:none}.vd-select-filter-wrap .mat-divider{display:block;width:100%;border-top-width:1px;border-top-style:solid;box-sizing:border-box}::ng-deep .mat-mdc-select-trigger{display:flex!important}::ng-deep .mat-mdc-select-trigger .mat-icon{display:flex;margin-right:8px}::ng-deep .mat-mdc-chip{background-color:var(--mdc-chip-elevated-container-color, transparent);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);color:inherit;display:inline-block;line-height:20px;height:24px!important;padding:1px 16px}::ng-deep .mat-mdc-chip:not(:last-child){margin:1px 4px 1px 0}::ng-deep .mat-mdc-chip>span{color:var(--mdc-chip-label-text-color, inherit);display:inline-block;font-size:.94em;line-height:1.8em}\n"] }]
|
|
12904
13106
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
12905
13107
|
type: Optional
|
|
12906
13108
|
}, {
|
|
@@ -22595,165 +22797,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
22595
22797
|
}]
|
|
22596
22798
|
}] });
|
|
22597
22799
|
|
|
22598
|
-
var AppEventType;
|
|
22599
|
-
(function (AppEventType) {
|
|
22600
|
-
AppEventType["ClickedOnNotification"] = "CLICKED_ON_NOTIFICATION";
|
|
22601
|
-
AppEventType["SocketEvent"] = "SOCKET_EVENT";
|
|
22602
|
-
})(AppEventType || (AppEventType = {}));
|
|
22603
|
-
|
|
22604
|
-
class AppEvent {
|
|
22605
|
-
type;
|
|
22606
|
-
payload;
|
|
22607
|
-
constructor(type, payload) {
|
|
22608
|
-
this.type = type;
|
|
22609
|
-
this.payload = payload;
|
|
22610
|
-
}
|
|
22611
|
-
}
|
|
22612
|
-
|
|
22613
|
-
class DisplayNameNumberProjection {
|
|
22614
|
-
/**
|
|
22615
|
-
* @property
|
|
22616
|
-
*/
|
|
22617
|
-
displayName;
|
|
22618
|
-
/**
|
|
22619
|
-
* @property
|
|
22620
|
-
*/
|
|
22621
|
-
number;
|
|
22622
|
-
/**
|
|
22623
|
-
* @property
|
|
22624
|
-
*/
|
|
22625
|
-
id;
|
|
22626
|
-
}
|
|
22627
|
-
__decorate([
|
|
22628
|
-
Column({}),
|
|
22629
|
-
Display($localize `:@@name:Name`),
|
|
22630
|
-
__metadata("design:type", String)
|
|
22631
|
-
], DisplayNameNumberProjection.prototype, "displayName", void 0);
|
|
22632
|
-
__decorate([
|
|
22633
|
-
Column({ index: 10, filterOperator: FilterOperator.Contains, maxWidth: 90, display: Grid.Md }),
|
|
22634
|
-
Display($localize `:@@number:Number`),
|
|
22635
|
-
__metadata("design:type", Number)
|
|
22636
|
-
], DisplayNameNumberProjection.prototype, "number", void 0);
|
|
22637
|
-
__decorate([
|
|
22638
|
-
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
22639
|
-
Display($localize `:@@id:ID`),
|
|
22640
|
-
__metadata("design:type", Number)
|
|
22641
|
-
], DisplayNameNumberProjection.prototype, "id", void 0);
|
|
22642
|
-
|
|
22643
|
-
class DisplayNameProjection {
|
|
22644
|
-
/**
|
|
22645
|
-
* @property
|
|
22646
|
-
*/
|
|
22647
|
-
displayName;
|
|
22648
|
-
/**
|
|
22649
|
-
* @property
|
|
22650
|
-
*/
|
|
22651
|
-
id;
|
|
22652
|
-
}
|
|
22653
|
-
__decorate([
|
|
22654
|
-
Column({}),
|
|
22655
|
-
Display($localize `:@@name:Name`),
|
|
22656
|
-
__metadata("design:type", String)
|
|
22657
|
-
], DisplayNameProjection.prototype, "displayName", void 0);
|
|
22658
|
-
__decorate([
|
|
22659
|
-
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
22660
|
-
Display($localize `:@@id:ID`),
|
|
22661
|
-
__metadata("design:type", Number)
|
|
22662
|
-
], DisplayNameProjection.prototype, "id", void 0);
|
|
22663
|
-
|
|
22664
|
-
/**
|
|
22665
|
-
* Metadata class for enum values, containing display information and ordering.
|
|
22666
|
-
*/
|
|
22667
|
-
class EnumMetadata {
|
|
22668
|
-
/**
|
|
22669
|
-
* Optional display string associated with the enum value.
|
|
22670
|
-
*/
|
|
22671
|
-
display;
|
|
22672
|
-
/**
|
|
22673
|
-
* Optional order number used for sorting enum values.
|
|
22674
|
-
*/
|
|
22675
|
-
order;
|
|
22676
|
-
}
|
|
22677
|
-
|
|
22678
|
-
class NameNumberProjection {
|
|
22679
|
-
/**
|
|
22680
|
-
* @property
|
|
22681
|
-
*/
|
|
22682
|
-
name;
|
|
22683
|
-
/**
|
|
22684
|
-
* @property
|
|
22685
|
-
*/
|
|
22686
|
-
number;
|
|
22687
|
-
/**
|
|
22688
|
-
* @property
|
|
22689
|
-
*/
|
|
22690
|
-
id;
|
|
22691
|
-
}
|
|
22692
|
-
__decorate([
|
|
22693
|
-
Column({}),
|
|
22694
|
-
Display($localize `:@@name:Name`),
|
|
22695
|
-
__metadata("design:type", String)
|
|
22696
|
-
], NameNumberProjection.prototype, "name", void 0);
|
|
22697
|
-
__decorate([
|
|
22698
|
-
Column({ index: 10, maxWidth: 90, display: Grid.Md }),
|
|
22699
|
-
Display($localize `:@@number:Number`),
|
|
22700
|
-
__metadata("design:type", Number)
|
|
22701
|
-
], NameNumberProjection.prototype, "number", void 0);
|
|
22702
|
-
__decorate([
|
|
22703
|
-
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
22704
|
-
Display($localize `:@@id:ID`),
|
|
22705
|
-
__metadata("design:type", Number)
|
|
22706
|
-
], NameNumberProjection.prototype, "id", void 0);
|
|
22707
|
-
|
|
22708
|
-
class NameProjection {
|
|
22709
|
-
/**
|
|
22710
|
-
* @property
|
|
22711
|
-
*/
|
|
22712
|
-
name;
|
|
22713
|
-
/**
|
|
22714
|
-
* @property
|
|
22715
|
-
*/
|
|
22716
|
-
id;
|
|
22717
|
-
}
|
|
22718
|
-
__decorate([
|
|
22719
|
-
Column({}),
|
|
22720
|
-
Display($localize `:@@name:Name`),
|
|
22721
|
-
__metadata("design:type", String)
|
|
22722
|
-
], NameProjection.prototype, "name", void 0);
|
|
22723
|
-
__decorate([
|
|
22724
|
-
Column({ filterOperator: FilterOperator.Contains, index: 1100, arrowBefore: true }),
|
|
22725
|
-
Display($localize `:@@id:ID`),
|
|
22726
|
-
__metadata("design:type", Number)
|
|
22727
|
-
], NameProjection.prototype, "id", void 0);
|
|
22728
|
-
|
|
22729
|
-
class EventQueueService {
|
|
22730
|
-
/**
|
|
22731
|
-
* @property
|
|
22732
|
-
*/
|
|
22733
|
-
eventBrocker = new Subject();
|
|
22734
|
-
/**
|
|
22735
|
-
* Event listener
|
|
22736
|
-
* @param eventType
|
|
22737
|
-
* @returns
|
|
22738
|
-
*/
|
|
22739
|
-
on(eventType) {
|
|
22740
|
-
return this.eventBrocker.pipe(filter(event => event.type === eventType));
|
|
22741
|
-
}
|
|
22742
|
-
/**
|
|
22743
|
-
* Triggers an event
|
|
22744
|
-
* @param event
|
|
22745
|
-
*/
|
|
22746
|
-
emit(event) {
|
|
22747
|
-
this.eventBrocker.next(event);
|
|
22748
|
-
}
|
|
22749
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EventQueueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22750
|
-
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EventQueueService, providedIn: 'root' });
|
|
22751
|
-
}
|
|
22752
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EventQueueService, decorators: [{
|
|
22753
|
-
type: Injectable,
|
|
22754
|
-
args: [{ providedIn: 'root' }]
|
|
22755
|
-
}] });
|
|
22756
|
-
|
|
22757
22800
|
const VD_DIALOGS = [
|
|
22758
22801
|
VdAlertDialogComponent,
|
|
22759
22802
|
VdConfirmDialogComponent,
|
|
@@ -23793,12 +23836,17 @@ class VdGenericFormComponent {
|
|
|
23793
23836
|
log(message, ...optionalParams) {
|
|
23794
23837
|
console.log(message, optionalParams);
|
|
23795
23838
|
}
|
|
23839
|
+
//---------------------------------------------------------------
|
|
23840
|
+
//TODO delete:
|
|
23841
|
+
myFunction(func, option) {
|
|
23842
|
+
return func(option, this.formValue, this.formGroup, this.context);
|
|
23843
|
+
}
|
|
23796
23844
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdGenericFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23797
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: VdGenericFormComponent, selector: "vd-generic-form", inputs: { formGroup: "formGroup", classType: "classType", formDefinition: "formDefinition", fieldGroups: "fieldGroups", groupName: "groupName", fieldSets: "fieldSets", context: "context", debugValue: "debugValue", readonly: "readonly", separatorKeysCodes: "separatorKeysCodes" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: VdEditorDirective, descendants: true }, { propertyName: "codeTemplate", first: true, predicate: VdCodeDirective, descendants: true }, { propertyName: "fileTemplate", first: true, predicate: VdFileDirective, descendants: true }, { propertyName: "customTemplate", first: true, predicate: VdCustomDirective, descendants: true }, { propertyName: "bottom", first: true, predicate: ["bottom"], descendants: true }, { propertyName: "customFields", first: true, predicate: ["customFields"], descendants: true }, { propertyName: "customFieldsTemplates", predicate: VdGenericFormCustomFieldDirective }], ngImport: i0, template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <ng-container *ngFor=\"let fields of fieldRows; let i = index\">\r\n <div layout-gt-sm=\"row\" layout=\"column\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <ng-container *ngIf=\"!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))\">\r\n <ng-container *ngIf=\"field.wrapped\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Textarea -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name!\" rows=\"field.rows||2\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\"></textarea>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [enum]=\"field.enumType\" [enumMetadata]=\"field.enumMetadata\" [enumFilter]=\"field.enumFilter | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [matIconKey]=\"field.optionMatIconProperty\" [svgIconKey]=\"field.optionSvgIconProperty\" [fontSet]=\"field.optionIconFontSet\" [multiple]=\"field.multiple\" [selectFirst]=\"field.selectFirst\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerMapper && field.multiple && field.triggerMode == 'chip'\">\r\n <span *ngFor=\"let item of trigger\" class=\"mat-mdc-chip mat-mdc-standard-chip mat-primary mat-mdc-chip-selected\">\r\n <span [innerHTML]=\"field.triggerMapper(item, formValue, formGroup, context)\"></span>\r\n </span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdList -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdList\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-list\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-list [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params ??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" [style.max-width]=\"field.maxWidth\" [style.max-height]=\"field.maxHeight\" flex>\r\n <ng-template vd-list-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-list>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-chip-grid #chipList [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-chip-row *ngFor=\"let chip of $any(formGroup.controls[field.name!])?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon fontSet=\"material-symbols-outlined\">cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input [placeholder]=\"$any(field.label)\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-grid>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params || {} | func:formValue:formGroup:context\" [searchField]=\"field.searchField\" [classType]=\"field.classType\" [projection]=\"field.projection\" [key]=\"field.optionValueProperty\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [removable]=\"!field.clear\" [context]=\"context\" [suffixButtons]=\"field.suffixButtons\" [autocompleteCssClass]=\"field.autocompleteCssClass\" (initSelect)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (selected)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" (cleared)=\"field.clear && field.clear(formValue, formGroup, context);\" [customValue]=\"field.customValue\" layout=\"row\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results were found.</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-select [formControlName]=\"field.name!\" [multiple]=\"field.multiple\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex>\r\n <mat-option *ngFor=\"let option of $any(field.options)\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [matDatepickerFilter]=\"field.dateFilter\" [readonly]=\"readonly || field.forceSelect || (field.readonly && field.readonly(formValue, formGroup, context))\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker [disabled]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (monthSelected)=\"handleDatePickerFilterAsync(datePicker, field, $event )\" (opened)=\"handleDatePickerOpened(datePicker, field)\" [calendarHeaderComponent]=\"datePickerHeaderComponent\"></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Calendar -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Calendar\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-calendar\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input input=\"hidden\" hidden matInput [formControlName]=\"field.name!\">\r\n <mat-calendar #calendar [selected]=\"formGroup.get(field.name!)?.value\" (selectedChange)=\"formGroup.get(field.name!)?.setValue($event);\" (monthSelected)=\"handleCalendarFilterAsync(calendar, field, $event )\" [headerComponent]=\"datePickerHeaderComponent\" style=\"width: 100%;\"></mat-calendar>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Color input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Color\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ngx-colors matSuffix ngx-colors-trigger [formControlName]=\"field.name!\" [hideTextInput]=\"true\" (close)=\"this.formGroup.get(field.name!)?.setValue($event)\" format=\"hex\" class=\"color-picker\"></ngx-colors>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n </ng-container>\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" [attr.flex]=\"field.flex||0\" class=\"mat-checkbox-wrap\" [class]=\"field.cssClass\">\r\n <mat-checkbox [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">{{field.label}}</mat-checkbox>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef!\" [ngTemplateOutlet]=\"editorTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef!\" [ngTemplateOutlet]=\"codeTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <div vd-file-input [formControlName]=\"field.name!\" (select)=\"field.change && field.change(field, $event, formGroup, context)\" [accept]=\"field.fileExtensions\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex></div>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef!\" [ngTemplateOutlet]=\"customTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == fields[0]?.row && customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngIf=\"customFields\" [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == ((fields[0]?.row??0)+1) && !customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Form bottom -->\r\n <ng-container *ngIf=\"bottom\" [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Template for suffix buttons -->\r\n <ng-template #suffixButtons let-field>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Debug value -->\r\n <code *ngIf=\"debugValue\">\r\n <pre>{{formValue | json}}</pre>\r\n </code>\r\n <!-- #endregion -->\r\n</div>", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mdc-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: DisableControlDirective, selector: "[disableControl]", inputs: ["disableControl"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber"] }, { kind: "component", type: VdSelectComponent, selector: "vd-select", inputs: ["triggerCssClass", "triggerMode"] }, { kind: "directive", type: VdSelectOptionDirective, selector: "[vd-select-option]ng-template" }, { kind: "directive", type: VdSelectTriggerDirective, selector: "[vd-select-trigger]ng-template" }, { kind: "component", type: VdChipsComponent, selector: "vd-chips", inputs: ["classType", "chips", "endpoint", "params", "projection", "paginated", "customValue", "context", "key", "searchField", "searchFields", "removable", "debounce", "autocompleteCssClass", "suffixButtons"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { kind: "directive", type: VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { kind: "directive", type: VdChipDirective, selector: "[vd-chip]ng-template" }, { kind: "component", type: VdFileInputComponent, selector: "[vd-file-input]", inputs: ["accept", "placeholder", "required", "multiple", "disabled", "errorState"], outputs: ["select", "clear"] }, { kind: "component", type: VdListComponent, selector: "vd-list" }, { kind: "directive", type: VdListOptionDirective, selector: "[vd-list-option]ng-template" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i20.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i20.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i20.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i20.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i16.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7$1.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i24.NgxColorsComponent, selector: "ngx-colors" }, { kind: "directive", type: i24.NgxColorsTriggerDirective, selector: "[ngx-colors-trigger]", inputs: ["colorsAnimation", "palette", "format", "formats", "position", "hideTextInput", "hideColorPicker", "attachTo", "overlayClassName", "colorPickerControls", "acceptLabel", "cancelLabel"], outputs: ["change", "input", "slider", "close", "open"] }, { kind: "directive", type: NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: FuncPipe, name: "func" }] });
|
|
23845
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: VdGenericFormComponent, selector: "vd-generic-form", inputs: { formGroup: "formGroup", classType: "classType", formDefinition: "formDefinition", fieldGroups: "fieldGroups", groupName: "groupName", fieldSets: "fieldSets", context: "context", debugValue: "debugValue", readonly: "readonly", separatorKeysCodes: "separatorKeysCodes" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: VdEditorDirective, descendants: true }, { propertyName: "codeTemplate", first: true, predicate: VdCodeDirective, descendants: true }, { propertyName: "fileTemplate", first: true, predicate: VdFileDirective, descendants: true }, { propertyName: "customTemplate", first: true, predicate: VdCustomDirective, descendants: true }, { propertyName: "bottom", first: true, predicate: ["bottom"], descendants: true }, { propertyName: "customFields", first: true, predicate: ["customFields"], descendants: true }, { propertyName: "customFieldsTemplates", predicate: VdGenericFormCustomFieldDirective }], ngImport: i0, template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <ng-container *ngFor=\"let fields of fieldRows; let i = index\">\r\n <div layout-gt-sm=\"row\" layout=\"column\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <ng-container *ngIf=\"!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))\">\r\n <ng-container *ngIf=\"field.wrapped\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Textarea -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name!\" rows=\"field.rows||2\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\"></textarea>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [enum]=\"field.enumType\" [enumMetadata]=\"field.enumMetadata\" [enumFilter]=\"field.enumFilter | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" let-text=\"text\" *ngIf=\"field.optionIcon && !field.optionTemplate\">\r\n <div layout=\"row\" layout-align=\"start center\">\r\n <ng-template #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: field.optionIcon(option, formValue, formGroup, context) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <span>{{text}}</span>\r\n </div>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [matIconKey]=\"field.optionMatIconProperty\" [svgIconKey]=\"field.optionSvgIconProperty\" [fontSet]=\"field.optionIconFontSet\" [multiple]=\"field.multiple\" [selectFirst]=\"field.selectFirst\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerMapper && field.multiple && field.triggerMode == 'chip'\">\r\n <span *ngFor=\"let item of trigger\" class=\"mat-mdc-chip mat-mdc-standard-chip mat-primary mat-mdc-chip-selected\">\r\n <span [innerHTML]=\"field.triggerMapper(item, formValue, formGroup, context)\"></span>\r\n </span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" let-text=\"text\" *ngIf=\"field.optionIcon && !field.optionTemplate\">\r\n <div layout=\"row\" layout-align=\"start center\">\r\n <ng-template #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: field.optionIcon(option, formValue, formGroup, context) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <span>{{text}}</span>\r\n </div>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdList -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdList\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-list\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-list [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params ??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" [style.max-width]=\"field.maxWidth\" [style.max-height]=\"field.maxHeight\" flex>\r\n <ng-template vd-list-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-list>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-chip-grid #chipList [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-chip-row *ngFor=\"let chip of $any(formGroup.controls[field.name!])?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon fontSet=\"material-symbols-outlined\">cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input [placeholder]=\"$any(field.label)\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-grid>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params || {} | func:formValue:formGroup:context\" [searchField]=\"field.searchField\" [classType]=\"field.classType\" [projection]=\"field.projection\" [key]=\"field.optionValueProperty\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [removable]=\"!field.clear\" [context]=\"context\" [suffixButtons]=\"field.suffixButtons\" [autocompleteCssClass]=\"field.autocompleteCssClass\" (initSelect)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (selected)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" (cleared)=\"field.clear && field.clear(formValue, formGroup, context);\" [customValue]=\"field.customValue\" layout=\"row\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results were found.</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-select [formControlName]=\"field.name!\" [multiple]=\"field.multiple\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex>\r\n <mat-option *ngFor=\"let option of $any(field.options)\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [matDatepickerFilter]=\"field.dateFilter\" [readonly]=\"readonly || field.forceSelect || (field.readonly && field.readonly(formValue, formGroup, context))\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker [disabled]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (monthSelected)=\"handleDatePickerFilterAsync(datePicker, field, $event )\" (opened)=\"handleDatePickerOpened(datePicker, field)\" [calendarHeaderComponent]=\"datePickerHeaderComponent\"></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Calendar -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Calendar\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-calendar\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input input=\"hidden\" hidden matInput [formControlName]=\"field.name!\">\r\n <mat-calendar #calendar [selected]=\"formGroup.get(field.name!)?.value\" (selectedChange)=\"formGroup.get(field.name!)?.setValue($event);\" (monthSelected)=\"handleCalendarFilterAsync(calendar, field, $event )\" [headerComponent]=\"datePickerHeaderComponent\" style=\"width: 100%;\"></mat-calendar>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Color input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Color\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ngx-colors matSuffix ngx-colors-trigger [formControlName]=\"field.name!\" [hideTextInput]=\"true\" (close)=\"this.formGroup.get(field.name!)?.setValue($event)\" format=\"hex\" class=\"color-picker\"></ngx-colors>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n </ng-container>\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" [attr.flex]=\"field.flex||0\" class=\"mat-checkbox-wrap\" [class]=\"field.cssClass\">\r\n <mat-checkbox [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">{{field.label}}</mat-checkbox>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef!\" [ngTemplateOutlet]=\"editorTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef!\" [ngTemplateOutlet]=\"codeTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <div vd-file-input [formControlName]=\"field.name!\" (select)=\"field.change && field.change(field, $event, formGroup, context)\" [accept]=\"field.fileExtensions\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex></div>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef!\" [ngTemplateOutlet]=\"customTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == fields[0]?.row && customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngIf=\"customFields\" [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == ((fields[0]?.row??0)+1) && !customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Form bottom -->\r\n <ng-container *ngIf=\"bottom\" [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Template for suffix buttons -->\r\n <ng-template #suffixButtons let-field>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Debug value -->\r\n <code *ngIf=\"debugValue\">\r\n <pre>{{formValue | json}}</pre>\r\n </code>\r\n <!-- #endregion -->\r\n</div>", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mdc-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: DisableControlDirective, selector: "[disableControl]", inputs: ["disableControl"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber"] }, { kind: "component", type: VdSelectComponent, selector: "vd-select", inputs: ["triggerCssClass", "triggerMode"] }, { kind: "directive", type: VdSelectOptionDirective, selector: "[vd-select-option]ng-template" }, { kind: "directive", type: VdSelectTriggerDirective, selector: "[vd-select-trigger]ng-template" }, { kind: "component", type: VdChipsComponent, selector: "vd-chips", inputs: ["classType", "chips", "endpoint", "params", "projection", "paginated", "customValue", "context", "key", "searchField", "searchFields", "removable", "debounce", "autocompleteCssClass", "suffixButtons"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { kind: "directive", type: VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { kind: "directive", type: VdChipDirective, selector: "[vd-chip]ng-template" }, { kind: "component", type: VdFileInputComponent, selector: "[vd-file-input]", inputs: ["accept", "placeholder", "required", "multiple", "disabled", "errorState"], outputs: ["select", "clear"] }, { kind: "component", type: VdListComponent, selector: "vd-list" }, { kind: "directive", type: VdListOptionDirective, selector: "[vd-list-option]ng-template" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i20.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i20.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i20.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i20.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i16.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7$1.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i24.NgxColorsComponent, selector: "ngx-colors" }, { kind: "directive", type: i24.NgxColorsTriggerDirective, selector: "[ngx-colors-trigger]", inputs: ["colorsAnimation", "palette", "format", "formats", "position", "hideTextInput", "hideColorPicker", "attachTo", "overlayClassName", "colorPickerControls", "acceptLabel", "cancelLabel"], outputs: ["change", "input", "slider", "close", "open"] }, { kind: "directive", type: NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: FuncPipe, name: "func" }] });
|
|
23798
23846
|
}
|
|
23799
23847
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdGenericFormComponent, decorators: [{
|
|
23800
23848
|
type: Component,
|
|
23801
|
-
args: [{ selector: 'vd-generic-form', template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <ng-container *ngFor=\"let fields of fieldRows; let i = index\">\r\n <div layout-gt-sm=\"row\" layout=\"column\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <ng-container *ngIf=\"!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))\">\r\n <ng-container *ngIf=\"field.wrapped\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Textarea -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name!\" rows=\"field.rows||2\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\"></textarea>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [enum]=\"field.enumType\" [enumMetadata]=\"field.enumMetadata\" [enumFilter]=\"field.enumFilter | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [matIconKey]=\"field.optionMatIconProperty\" [svgIconKey]=\"field.optionSvgIconProperty\" [fontSet]=\"field.optionIconFontSet\" [multiple]=\"field.multiple\" [selectFirst]=\"field.selectFirst\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerMapper && field.multiple && field.triggerMode == 'chip'\">\r\n <span *ngFor=\"let item of trigger\" class=\"mat-mdc-chip mat-mdc-standard-chip mat-primary mat-mdc-chip-selected\">\r\n <span [innerHTML]=\"field.triggerMapper(item, formValue, formGroup, context)\"></span>\r\n </span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdList -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdList\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-list\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-list [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params ??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" [style.max-width]=\"field.maxWidth\" [style.max-height]=\"field.maxHeight\" flex>\r\n <ng-template vd-list-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-list>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-chip-grid #chipList [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-chip-row *ngFor=\"let chip of $any(formGroup.controls[field.name!])?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon fontSet=\"material-symbols-outlined\">cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input [placeholder]=\"$any(field.label)\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-grid>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params || {} | func:formValue:formGroup:context\" [searchField]=\"field.searchField\" [classType]=\"field.classType\" [projection]=\"field.projection\" [key]=\"field.optionValueProperty\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [removable]=\"!field.clear\" [context]=\"context\" [suffixButtons]=\"field.suffixButtons\" [autocompleteCssClass]=\"field.autocompleteCssClass\" (initSelect)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (selected)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" (cleared)=\"field.clear && field.clear(formValue, formGroup, context);\" [customValue]=\"field.customValue\" layout=\"row\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results were found.</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-select [formControlName]=\"field.name!\" [multiple]=\"field.multiple\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex>\r\n <mat-option *ngFor=\"let option of $any(field.options)\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [matDatepickerFilter]=\"field.dateFilter\" [readonly]=\"readonly || field.forceSelect || (field.readonly && field.readonly(formValue, formGroup, context))\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker [disabled]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (monthSelected)=\"handleDatePickerFilterAsync(datePicker, field, $event )\" (opened)=\"handleDatePickerOpened(datePicker, field)\" [calendarHeaderComponent]=\"datePickerHeaderComponent\"></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Calendar -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Calendar\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-calendar\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input input=\"hidden\" hidden matInput [formControlName]=\"field.name!\">\r\n <mat-calendar #calendar [selected]=\"formGroup.get(field.name!)?.value\" (selectedChange)=\"formGroup.get(field.name!)?.setValue($event);\" (monthSelected)=\"handleCalendarFilterAsync(calendar, field, $event )\" [headerComponent]=\"datePickerHeaderComponent\" style=\"width: 100%;\"></mat-calendar>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Color input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Color\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ngx-colors matSuffix ngx-colors-trigger [formControlName]=\"field.name!\" [hideTextInput]=\"true\" (close)=\"this.formGroup.get(field.name!)?.setValue($event)\" format=\"hex\" class=\"color-picker\"></ngx-colors>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n </ng-container>\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" [attr.flex]=\"field.flex||0\" class=\"mat-checkbox-wrap\" [class]=\"field.cssClass\">\r\n <mat-checkbox [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">{{field.label}}</mat-checkbox>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef!\" [ngTemplateOutlet]=\"editorTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef!\" [ngTemplateOutlet]=\"codeTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <div vd-file-input [formControlName]=\"field.name!\" (select)=\"field.change && field.change(field, $event, formGroup, context)\" [accept]=\"field.fileExtensions\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex></div>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef!\" [ngTemplateOutlet]=\"customTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == fields[0]?.row && customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngIf=\"customFields\" [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == ((fields[0]?.row??0)+1) && !customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Form bottom -->\r\n <ng-container *ngIf=\"bottom\" [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Template for suffix buttons -->\r\n <ng-template #suffixButtons let-field>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Debug value -->\r\n <code *ngIf=\"debugValue\">\r\n <pre>{{formValue | json}}</pre>\r\n </code>\r\n <!-- #endregion -->\r\n</div>", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mdc-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}\n"] }]
|
|
23849
|
+
args: [{ selector: 'vd-generic-form', template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <ng-container *ngFor=\"let fields of fieldRows; let i = index\">\r\n <div layout-gt-sm=\"row\" layout=\"column\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <ng-container *ngIf=\"!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))\">\r\n <ng-container *ngIf=\"field.wrapped\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Textarea -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name!\" rows=\"field.rows||2\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\"></textarea>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [enum]=\"field.enumType\" [enumMetadata]=\"field.enumMetadata\" [enumFilter]=\"field.enumFilter | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" let-text=\"text\" *ngIf=\"field.optionIcon && !field.optionTemplate\">\r\n <div layout=\"row\" layout-align=\"start center\">\r\n <ng-template #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: field.optionIcon(option, formValue, formGroup, context) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <span>{{text}}</span>\r\n </div>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-select [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [defaultOption]=\"field.defaultOption??true\" [matIconKey]=\"field.optionMatIconProperty\" [svgIconKey]=\"field.optionSvgIconProperty\" [fontSet]=\"field.optionIconFontSet\" [multiple]=\"field.multiple\" [selectFirst]=\"field.selectFirst\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [triggerCssClass]=\"field.triggerCssClass\" [triggerMode]=\"field.triggerMode\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" layout=\"row\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <span [innerHTML]=\"field.triggerTemplate(trigger, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerMapper && field.multiple && field.triggerMode == 'chip'\">\r\n <span *ngFor=\"let item of trigger\" class=\"mat-mdc-chip mat-mdc-standard-chip mat-primary mat-mdc-chip-selected\">\r\n <span [innerHTML]=\"field.triggerMapper(item, formValue, formGroup, context)\"></span>\r\n </span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" let-text=\"text\" *ngIf=\"field.optionIcon && !field.optionTemplate\">\r\n <div layout=\"row\" layout-align=\"start center\">\r\n <ng-template #optionIconTemplate [ngTemplateOutlet]=\"optionIconTemplate\" let-optionIcon=\"optionIcon\" [ngTemplateOutletContext]=\"{ optionIcon: field.optionIcon(option, formValue, formGroup, context) }\">\r\n <mat-icon *ngIf=\"optionIcon.svgIcon\" [svgIcon]=\"optionIcon.svgIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\"></mat-icon>\r\n <mat-icon *ngIf=\"optionIcon.matIcon\" [fontSet]=\"optionIcon.fontSet || 'material-symbols-outlined'\" [ngStyle]=\"{ color: optionIcon.iconColor??'' }\">{{optionIcon.matIcon}}</mat-icon>\r\n </ng-template>\r\n <span>{{text}}</span>\r\n </div>\r\n </ng-template>\r\n </vd-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdList -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdList\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-list\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-list [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params ??{} | func:formValue:formGroup:context\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [loadData]=\"field.fetchCondition | func:formValue:formGroup:context\" [optionValueProperty]=\"field.optionValueProperty\" [optionTextProperty]=\"field.optionTextProperty\" [multiple]=\"field.multiple\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (itemSelected)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (itemChange)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" [style.max-width]=\"field.maxWidth\" [style.max-height]=\"field.maxHeight\" flex>\r\n <ng-template vd-list-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <span [outerHTML]=\"field.optionTemplate(option, formValue, formGroup, context)\"></span>\r\n </ng-template>\r\n </vd-list>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-chip-grid #chipList [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-chip-row *ngFor=\"let chip of $any(formGroup.controls[field.name!])?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon fontSet=\"material-symbols-outlined\">cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input [placeholder]=\"$any(field.label)\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-grid>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name!\" [endpoint]=\"field.endpoint??'' | func:formValue:formGroup:context\" [params]=\"field.params || {} | func:formValue:formGroup:context\" [searchField]=\"field.searchField\" [classType]=\"field.classType\" [projection]=\"field.projection\" [key]=\"field.optionValueProperty\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [removable]=\"!field.clear\" [context]=\"context\" [suffixButtons]=\"field.suffixButtons\" [autocompleteCssClass]=\"field.autocompleteCssClass\" (initSelect)=\"field.itemSelect && field.itemSelect($event, formValue, formGroup, context);\" (selected)=\"field.itemChange && field.itemChange($event, formValue, formGroup, context);\" (cleared)=\"field.clear && field.clear(formValue, formGroup, context);\" [customValue]=\"field.customValue\" layout=\"row\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option, formValue, formGroup, context)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results were found.</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <mat-select [formControlName]=\"field.name!\" [multiple]=\"field.multiple\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex>\r\n <mat-option *ngFor=\"let option of $any(field.options)\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" [class]=\"field.autocompleteCssClass\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name!]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input matInput [formControlName]=\"field.name!\" [min]=\"field.min\" [max]=\"field.max\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [matDatepickerFilter]=\"field.dateFilter\" [readonly]=\"readonly || field.forceSelect || (field.readonly && field.readonly(formValue, formGroup, context))\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker [disabled]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" (monthSelected)=\"handleDatePickerFilterAsync(datePicker, field, $event )\" (opened)=\"handleDatePickerOpened(datePicker, field)\" [calendarHeaderComponent]=\"datePickerHeaderComponent\"></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Calendar -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Calendar\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" floatLabel=\"always\" class=\"form-field-type-calendar\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input input=\"hidden\" hidden matInput [formControlName]=\"field.name!\">\r\n <mat-calendar #calendar [selected]=\"formGroup.get(field.name!)?.value\" (selectedChange)=\"formGroup.get(field.name!)?.setValue($event);\" (monthSelected)=\"handleCalendarFilterAsync(calendar, field, $event )\" [headerComponent]=\"datePickerHeaderComponent\" style=\"width: 100%;\"></mat-calendar>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Color input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Color\" [attr.flex]=\"field.flex||0\" [class]=\"field.cssClass\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <input [type]=\"field.inputType ?? 'text'\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" [min]=\"field.min\" [max]=\"field.max\" matInput [formControlName]=\"field.name!\" [readonly]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" [pattern]=\"(field.pattern??'')\" [onlyNumber]=\"(field.numbersOnly??false)\">\r\n <ngx-colors matSuffix ngx-colors-trigger [formControlName]=\"field.name!\" [hideTextInput]=\"true\" (close)=\"this.formGroup.get(field.name!)?.setValue($event)\" format=\"hex\" class=\"color-picker\"></ngx-colors>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error *ngFor=\"let errorMessage of $any($any(formGroup.controls[field.name!]))['errorMessages']\">{{errorMessage}}</mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n </ng-container>\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" [attr.flex]=\"field.flex||0\" class=\"mat-checkbox-wrap\" [class]=\"field.cssClass\">\r\n <mat-checkbox [formControlName]=\"field.name!\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\">{{field.label}}</mat-checkbox>\r\n <mat-error *ngFor=\"let errorMessage of $any(formGroup.controls[field.name!])['errorMessages']\" layout-margin>{{errorMessage}}</mat-error>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef!\" [ngTemplateOutlet]=\"editorTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef!\" [ngTemplateOutlet]=\"codeTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n <mat-label>{{field.label}}</mat-label>\r\n <div vd-file-input [formControlName]=\"field.name!\" (select)=\"field.change && field.change(field, $event, formGroup, context)\" [accept]=\"field.fileExtensions\" [disableControl]=\"(readonly || (field.readonly && field.readonly(formValue, formGroup, context)))??false\" flex></div>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef!\" [ngTemplateOutlet]=\"customTemplate?.templateRef!\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == fields[0]?.row && customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <!-- #region Template for custom fields -->\r\n <ng-container *ngIf=\"customFields\" [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\r\n <ng-container *ngFor=\"let customField of customFieldsTemplates\">\r\n <ng-template *ngIf=\"customField?.templateRef && customField.row == ((fields[0]?.row??0)+1) && !customField.inline\" [ngTemplateOutlet]=\"customField?.templateRef!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Form bottom -->\r\n <ng-container *ngIf=\"bottom\" [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Template for suffix buttons -->\r\n <ng-template #suffixButtons let-field>\r\n <ng-container *ngFor=\"let suffixButton of field.suffixButtons\" matSuffix>\r\n <button type=\"button\" mat-icon-button *ngIf=\"!suffixButton.hide || !suffixButton.hide(formValue, context)\" (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Debug value -->\r\n <code *ngIf=\"debugValue\">\r\n <pre>{{formValue | json}}</pre>\r\n </code>\r\n <!-- #endregion -->\r\n</div>", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mdc-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}\n"] }]
|
|
23802
23850
|
}], propDecorators: { formGroup: [{
|
|
23803
23851
|
type: Input
|
|
23804
23852
|
}], classType: [{
|
|
@@ -24170,6 +24218,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
24170
24218
|
type: Input
|
|
24171
24219
|
}] } });
|
|
24172
24220
|
|
|
24221
|
+
class FieldFuncPipe {
|
|
24222
|
+
/**
|
|
24223
|
+
* @param groups - Array of FormFieldGroupDefinition instances to filter.
|
|
24224
|
+
* @param formValue - The current value of the form.
|
|
24225
|
+
* @param form - The FormGroup instance.
|
|
24226
|
+
* @param context - The context of the component.
|
|
24227
|
+
* @returns Filtered array of FormFieldGroupDefinition instances.
|
|
24228
|
+
*/
|
|
24229
|
+
transform(func, ...args) {
|
|
24230
|
+
if (args) {
|
|
24231
|
+
console.log('args', args);
|
|
24232
|
+
}
|
|
24233
|
+
}
|
|
24234
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: FieldFuncPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
24235
|
+
/** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: FieldFuncPipe, name: "fieldFunc" });
|
|
24236
|
+
}
|
|
24237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: FieldFuncPipe, decorators: [{
|
|
24238
|
+
type: Pipe,
|
|
24239
|
+
args: [{ name: 'fieldFunc' }]
|
|
24240
|
+
}] });
|
|
24241
|
+
|
|
24173
24242
|
class GroupFilterPipe {
|
|
24174
24243
|
/**
|
|
24175
24244
|
* Filters an array of FormFieldGroupDefinition instances based on a provided condition.
|
|
@@ -24506,7 +24575,8 @@ const DECLARATIONS = [
|
|
|
24506
24575
|
DatePickerHeaderComponent,
|
|
24507
24576
|
VdGenericFormCustomFieldDirective,
|
|
24508
24577
|
NestedPropertyNgModelDirective,
|
|
24509
|
-
GroupFilterPipe
|
|
24578
|
+
GroupFilterPipe,
|
|
24579
|
+
FieldFuncPipe
|
|
24510
24580
|
];
|
|
24511
24581
|
class VdFormsModule {
|
|
24512
24582
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -24524,7 +24594,8 @@ class VdFormsModule {
|
|
|
24524
24594
|
DatePickerHeaderComponent,
|
|
24525
24595
|
VdGenericFormCustomFieldDirective,
|
|
24526
24596
|
NestedPropertyNgModelDirective,
|
|
24527
|
-
GroupFilterPipe
|
|
24597
|
+
GroupFilterPipe,
|
|
24598
|
+
FieldFuncPipe], imports: [CommonModule,
|
|
24528
24599
|
VdCommonModule,
|
|
24529
24600
|
VdSelectModule,
|
|
24530
24601
|
VdChipsModule,
|
|
@@ -24558,7 +24629,8 @@ class VdFormsModule {
|
|
|
24558
24629
|
DatePickerHeaderComponent,
|
|
24559
24630
|
VdGenericFormCustomFieldDirective,
|
|
24560
24631
|
NestedPropertyNgModelDirective,
|
|
24561
|
-
GroupFilterPipe
|
|
24632
|
+
GroupFilterPipe,
|
|
24633
|
+
FieldFuncPipe] });
|
|
24562
24634
|
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdFormsModule, imports: [CommonModule,
|
|
24563
24635
|
VdCommonModule,
|
|
24564
24636
|
VdSelectModule,
|
|
@@ -24824,5 +24896,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
24824
24896
|
* Generated bundle index. Do not edit.
|
|
24825
24897
|
*/
|
|
24826
24898
|
|
|
24827
|
-
export { AbstractMatFormField, ActionItem, Api, AppEvent, AppEventType, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, ColumnObject, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EmptyStringResetDirective, EnumMetadata, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, EventQueueService, Facet, FacetValue, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterOperator, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, GroupFilterPipe, HtmlControlTemplateDirective, IAbstractControl, Icon, ImageFileControlDirective, IpVersion, JoinPipe, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, MaterialModule, Menu, MenuClient, MenuDepartment, MenuFormIncludesResolve, MenuItem, MenuItemClient, MenuItemDepartment, MenuItemFormIncludesResolve, MenuItemService, MenuListProjectionResolve, MenuResolve, MenuScope, MenuService, MenuSettings, MenuSettingsResolve, MessageType, MonthNamePipe, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NestedPropertyNgModelDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, PropertyJoinPipe, PropertyPipe, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SplitPipe, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableDataSource, TableDefinition, TableStaticDataSource, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDelayedHoverDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormsModule, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutCompactComponent, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListComponent, VdListModule, VdListOptionDirective, VdListToolbarComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableFieldDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupsMetadataKey, formFieldsMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
|
|
24899
|
+
export { AbstractMatFormField, ActionItem, Api, AppEvent, AppEventType, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, BindPipe, CachingInterceptor, Column, ColumnObject, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EmptyStringResetDirective, EnumMetadata, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, EventQueueService, Facet, FacetValue, FieldFuncPipe, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterOperator, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, GroupFilterPipe, HtmlControlTemplateDirective, IAbstractControl, Icon, ImageFileControlDirective, IpVersion, JoinPipe, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, MaterialModule, Menu, MenuClient, MenuDepartment, MenuFormIncludesResolve, MenuItem, MenuItemClient, MenuItemDepartment, MenuItemFormIncludesResolve, MenuItemService, MenuListProjectionResolve, MenuResolve, MenuScope, MenuService, MenuSettings, MenuSettingsResolve, MessageType, MonthNamePipe, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NestedPropertyNgModelDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, PropertyJoinPipe, PropertyPipe, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SplitPipe, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableDataSource, TableDefinition, TableStaticDataSource, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDelayedHoverDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormsModule, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutCompactComponent, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListComponent, VdListModule, VdListOptionDirective, VdListToolbarComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableFieldDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupsMetadataKey, formFieldsMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
|
|
24828
24900
|
//# sourceMappingURL=messaia-cdk.mjs.map
|