@3kles/kles-material-dynamicforms 22.0.3 → 22.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,7 +3,7 @@ import { signal, InjectionToken, inject, Component, Injector, Input, Directive,
|
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
5
5
|
import * as i2 from '@angular/forms';
|
|
6
|
-
import { Validators, FormControl, ReactiveFormsModule, FormsModule,
|
|
6
|
+
import { Validators, FormControl, ReactiveFormsModule, FormsModule, UntypedFormGroup, FormArray, NG_VALUE_ACCESSOR, FormGroup } from '@angular/forms';
|
|
7
7
|
import { concat, of, combineLatest, startWith, map as map$1, switchMap, Subject, Observable, defer, ReplaySubject, isObservable, takeUntil as takeUntil$1, timer, distinctUntilChanged as distinctUntilChanged$1, shareReplay as shareReplay$1 } from 'rxjs';
|
|
8
8
|
import { tap, take, catchError, map, takeUntil, distinctUntilChanged, filter, switchMap as switchMap$1, startWith as startWith$1, shareReplay, debounceTime, debounce } from 'rxjs/operators';
|
|
9
9
|
import * as i3 from '@angular/material/form-field';
|
|
@@ -11,7 +11,7 @@ import { MatError, MatFormFieldModule, MatFormField, MatHint, MatLabel, MatSuffi
|
|
|
11
11
|
import { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS, ErrorStateMatcher, MatNativeDateModule, MatOptionModule, MatOption as MatOption$1 } from '@angular/material/core';
|
|
12
12
|
import * as i2$1 from '@angular/material/icon';
|
|
13
13
|
import { MatIcon, MatIconModule } from '@angular/material/icon';
|
|
14
|
-
import * as
|
|
14
|
+
import * as i2$2 from '@angular/material/button';
|
|
15
15
|
import { MatIconButton, MatButtonModule, MatButton } from '@angular/material/button';
|
|
16
16
|
import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
17
17
|
import { MatSliderModule } from '@angular/material/slider';
|
|
@@ -64,7 +64,7 @@ import { parseColor, toCssRgba, readableTextColor, MaterialColorPickerTriggerCom
|
|
|
64
64
|
import * as i3$3 from '@angular/cdk/text-field';
|
|
65
65
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
66
66
|
import { getMultipleValuesInSingleSelectionError } from '@angular/cdk/collections';
|
|
67
|
-
import * as i4$
|
|
67
|
+
import * as i4$2 from '@3kles/kles-material-datepicker';
|
|
68
68
|
import { KlesMaterialDatepickerModule } from '@3kles/kles-material-datepicker';
|
|
69
69
|
import { Clipboard, ClipboardModule } from '@angular/cdk/clipboard';
|
|
70
70
|
import { MatDividerModule } from '@angular/material/divider';
|
|
@@ -534,9 +534,9 @@ class MatErrorFormDirective {
|
|
|
534
534
|
...(ngDevMode ? [{ debugName: "validations" }] : /* istanbul ignore next */ []));
|
|
535
535
|
this.asyncValidations = input([], /* @ts-ignore */
|
|
536
536
|
...(ngDevMode ? [{ debugName: "asyncValidations" }] : /* istanbul ignore next */ []));
|
|
537
|
-
this.validationsKeys = computed(() => flattenValidators(this.validations()), /* @ts-ignore */
|
|
537
|
+
this.validationsKeys = computed(() => flattenValidators(this.validations() ?? []), /* @ts-ignore */
|
|
538
538
|
...(ngDevMode ? [{ debugName: "validationsKeys" }] : /* istanbul ignore next */ []));
|
|
539
|
-
this.asyncValidationsKeys = computed(() => flattenValidators(this.asyncValidations()), /* @ts-ignore */
|
|
539
|
+
this.asyncValidationsKeys = computed(() => flattenValidators(this.asyncValidations() ?? []), /* @ts-ignore */
|
|
540
540
|
...(ngDevMode ? [{ debugName: "asyncValidationsKeys" }] : /* istanbul ignore next */ []));
|
|
541
541
|
this.formErrors = toSignal(toObservable(this.form).pipe(switchMap((form) => form.statusChanges.pipe(startWith(form.status), map$1(() => form.errors)))), { initialValue: null });
|
|
542
542
|
}
|
|
@@ -555,13 +555,11 @@ class MatErrorFormDirective {
|
|
|
555
555
|
}
|
|
556
556
|
}
|
|
557
557
|
}
|
|
558
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
558
|
+
`, isInline: true, styles: [":host{overflow-wrap:break-word}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
559
559
|
}
|
|
560
560
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MatErrorFormDirective, decorators: [{
|
|
561
561
|
type: Component,
|
|
562
|
-
args: [{
|
|
563
|
-
selector: '[matErrorForm]',
|
|
564
|
-
template: `
|
|
562
|
+
args: [{ selector: '[matErrorForm]', template: `
|
|
565
563
|
@if (formErrors()) {
|
|
566
564
|
@for (validation of validationsKeys(); track validation.name) {
|
|
567
565
|
@if (form().hasError(validation.name) && validation.message) {
|
|
@@ -575,10 +573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
575
573
|
}
|
|
576
574
|
}
|
|
577
575
|
}
|
|
578
|
-
`,
|
|
579
|
-
standalone: true,
|
|
580
|
-
imports: [ReactiveFormsModule, FormsModule],
|
|
581
|
-
}]
|
|
576
|
+
`, standalone: true, imports: [ReactiveFormsModule, FormsModule], styles: [":host{overflow-wrap:break-word}\n"] }]
|
|
582
577
|
}], propDecorators: { form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: true }] }], validations: [{ type: i0.Input, args: [{ isSignal: true, alias: "validations", required: false }] }], asyncValidations: [{ type: i0.Input, args: [{ isSignal: true, alias: "asyncValidations", required: false }] }] } });
|
|
583
578
|
|
|
584
579
|
class KlesFormErrorStateMatcher {
|
|
@@ -1622,13 +1617,11 @@ class MatErrorMessageDirective {
|
|
|
1622
1617
|
}
|
|
1623
1618
|
}
|
|
1624
1619
|
}
|
|
1625
|
-
`, isInline: true }); }
|
|
1620
|
+
`, isInline: true, styles: [":host{overflow-wrap:break-word}\n"] }); }
|
|
1626
1621
|
}
|
|
1627
1622
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MatErrorMessageDirective, decorators: [{
|
|
1628
1623
|
type: Component,
|
|
1629
|
-
args: [{
|
|
1630
|
-
selector: '[matErrorMessage]',
|
|
1631
|
-
template: `
|
|
1624
|
+
args: [{ selector: '[matErrorMessage]', template: `
|
|
1632
1625
|
@if (errors(); as errors) {
|
|
1633
1626
|
@for (validation of validationsKeys(); track validation.name) {
|
|
1634
1627
|
@if (errors[validation.name] && validation.message) {
|
|
@@ -1642,9 +1635,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
1642
1635
|
}
|
|
1643
1636
|
}
|
|
1644
1637
|
}
|
|
1645
|
-
`,
|
|
1646
|
-
standalone: true,
|
|
1647
|
-
}]
|
|
1638
|
+
`, standalone: true, styles: [":host{overflow-wrap:break-word}\n"] }]
|
|
1648
1639
|
}], propDecorators: { validations: [{ type: i0.Input, args: [{ isSignal: true, alias: "validations", required: false }] }], asyncValidations: [{ type: i0.Input, args: [{ isSignal: true, alias: "asyncValidations", required: false }] }] } });
|
|
1649
1640
|
|
|
1650
1641
|
class KlesDynamicFormIntl {
|
|
@@ -1653,7 +1644,10 @@ class KlesDynamicFormIntl {
|
|
|
1653
1644
|
this.selectAll = 'Select all';
|
|
1654
1645
|
this.clearSearch = 'Clear';
|
|
1655
1646
|
this.search = 'Search';
|
|
1647
|
+
this.add = 'Add';
|
|
1648
|
+
this.delete = 'Delete';
|
|
1656
1649
|
this.copy = 'Copied value';
|
|
1650
|
+
this.empty = 'No items';
|
|
1657
1651
|
this.imageUploadChange = 'Change image';
|
|
1658
1652
|
this.imageUploadDelete = 'Delete';
|
|
1659
1653
|
this.imageUploadInvalidType = 'Unsupported image format.';
|
|
@@ -2089,198 +2083,395 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
2089
2083
|
`, standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCheckbox, MatTooltip, KlesFocusTargetDirective] }]
|
|
2090
2084
|
}], propDecorators: { checkbox: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatCheckbox), { isSignal: true }] }] } });
|
|
2091
2085
|
|
|
2086
|
+
function createKlesFormArrayGroup(field, ref, value) {
|
|
2087
|
+
const line = {
|
|
2088
|
+
...(value ?? {}),
|
|
2089
|
+
_id: value?._id ?? v4(),
|
|
2090
|
+
};
|
|
2091
|
+
const group = new UntypedFormGroup({
|
|
2092
|
+
_id: new FormControl(line._id),
|
|
2093
|
+
});
|
|
2094
|
+
for (const subfield of field.collections ?? []) {
|
|
2095
|
+
const data = line[subfield.name];
|
|
2096
|
+
const childField = {
|
|
2097
|
+
...subfield,
|
|
2098
|
+
...(data !== undefined ? { value: data } : {}),
|
|
2099
|
+
};
|
|
2100
|
+
let control;
|
|
2101
|
+
if (subfield.type) {
|
|
2102
|
+
control = componentMapper.find((c) => c.type === subfield.type)?.factory(childField, ref) ?? klesFieldControlFactory(childField, ref);
|
|
2103
|
+
}
|
|
2104
|
+
else {
|
|
2105
|
+
control = componentMapper.find((c) => c.component === subfield.component)?.factory(childField, ref) ?? klesFieldControlFactory(childField, ref);
|
|
2106
|
+
}
|
|
2107
|
+
group.addControl(subfield.name, control);
|
|
2108
|
+
}
|
|
2109
|
+
return group;
|
|
2110
|
+
}
|
|
2111
|
+
|
|
2092
2112
|
class KlesFormArray extends KlesFormControl {
|
|
2093
2113
|
create() {
|
|
2094
2114
|
const array = new FormArray([], {
|
|
2095
2115
|
validators: this.bindValidations(this.field.validations || []),
|
|
2096
2116
|
asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),
|
|
2097
|
-
updateOn: this.field.updateOn || 'change'
|
|
2117
|
+
updateOn: this.field.updateOn || 'change',
|
|
2118
|
+
});
|
|
2119
|
+
if (Array.isArray(this.field.value)) {
|
|
2120
|
+
for (const value of this.field.value) {
|
|
2121
|
+
array.push(createKlesFormArrayGroup(this.field, this.ref, value));
|
|
2122
|
+
}
|
|
2123
|
+
}
|
|
2124
|
+
else {
|
|
2125
|
+
array.push(createKlesFormArrayGroup(this.field, this.ref));
|
|
2126
|
+
}
|
|
2127
|
+
if (this.field.disabled) {
|
|
2128
|
+
array.disable();
|
|
2129
|
+
}
|
|
2130
|
+
return array;
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
class ArrayUiState extends AbstractUiState {
|
|
2135
|
+
constructor(states) {
|
|
2136
|
+
super();
|
|
2137
|
+
this.states = [];
|
|
2138
|
+
this.states = states ?? [];
|
|
2139
|
+
this.states.forEach((state, index) => {
|
|
2140
|
+
state.setParent(this, index);
|
|
2141
|
+
});
|
|
2142
|
+
this._value.set(this.states.map((state) => state.value()));
|
|
2143
|
+
}
|
|
2144
|
+
setValue(value) {
|
|
2145
|
+
if (!Array.isArray(value)) {
|
|
2146
|
+
return;
|
|
2147
|
+
}
|
|
2148
|
+
value.forEach((newValue, index) => {
|
|
2149
|
+
this.at(index)?.setValue(newValue);
|
|
2150
|
+
});
|
|
2151
|
+
this._value.set(value);
|
|
2152
|
+
this.notifyParent();
|
|
2153
|
+
}
|
|
2154
|
+
patchValue(value) {
|
|
2155
|
+
if (value == null) {
|
|
2156
|
+
return;
|
|
2157
|
+
}
|
|
2158
|
+
value.forEach((newValue, index) => {
|
|
2159
|
+
const st = this.at(index);
|
|
2160
|
+
if (st) {
|
|
2161
|
+
st.patchValue(newValue);
|
|
2162
|
+
}
|
|
2098
2163
|
});
|
|
2164
|
+
const curr = this._value() ?? [];
|
|
2165
|
+
const next = [...curr];
|
|
2166
|
+
value.forEach((newValue, index) => {
|
|
2167
|
+
next[index] = {
|
|
2168
|
+
...(next[index] ?? {}),
|
|
2169
|
+
...newValue,
|
|
2170
|
+
};
|
|
2171
|
+
});
|
|
2172
|
+
this._value.set(next);
|
|
2173
|
+
this.notifyParent();
|
|
2174
|
+
}
|
|
2175
|
+
childValueChanged(key, value) {
|
|
2176
|
+
const index = typeof key === 'number' ? key : Number(key);
|
|
2177
|
+
if (!Number.isInteger(index) || index < 0)
|
|
2178
|
+
return;
|
|
2179
|
+
const curr = this._value() ?? [];
|
|
2180
|
+
const next = [...curr];
|
|
2181
|
+
next[index] = value;
|
|
2182
|
+
this._value.set(next);
|
|
2183
|
+
this.notifyParent();
|
|
2184
|
+
}
|
|
2185
|
+
at(index) {
|
|
2186
|
+
return this.states?.[index] ?? null;
|
|
2187
|
+
}
|
|
2188
|
+
_find(name) {
|
|
2189
|
+
const idx = typeof name === 'number' ? name : Number(name);
|
|
2190
|
+
return Number.isFinite(idx) ? this.at(idx) : null;
|
|
2191
|
+
}
|
|
2192
|
+
push(control) {
|
|
2193
|
+
const items = Array.isArray(control) ? control : [control];
|
|
2194
|
+
if (items.length === 0) {
|
|
2195
|
+
return;
|
|
2196
|
+
}
|
|
2197
|
+
for (const item of items) {
|
|
2198
|
+
const index = this.states.length;
|
|
2199
|
+
this.states.push(item);
|
|
2200
|
+
item.setParent(this, index);
|
|
2201
|
+
}
|
|
2202
|
+
this._value.set(this.states.map((s) => s.value()));
|
|
2203
|
+
this.notifyParent();
|
|
2204
|
+
}
|
|
2205
|
+
insert(index, state) {
|
|
2206
|
+
const items = Array.isArray(state) ? state : [state];
|
|
2207
|
+
if (items.length === 0) {
|
|
2208
|
+
return;
|
|
2209
|
+
}
|
|
2210
|
+
const safeIndex = Math.max(0, Math.min(index, this.states.length));
|
|
2211
|
+
this.states.splice(safeIndex, 0, ...items);
|
|
2212
|
+
for (let i = safeIndex; i < this.states.length; i++) {
|
|
2213
|
+
this.states[i]?.setParent(this, i);
|
|
2214
|
+
}
|
|
2215
|
+
const curr = this._value();
|
|
2216
|
+
const next = [...curr];
|
|
2217
|
+
next.splice(safeIndex, 0, ...items.map((item) => item.value()));
|
|
2218
|
+
this._value.set(next);
|
|
2219
|
+
this.notifyParent();
|
|
2220
|
+
}
|
|
2221
|
+
removeAt(index) {
|
|
2222
|
+
if (index < 0 || index >= this.states.length)
|
|
2223
|
+
return;
|
|
2224
|
+
this.states.splice(index, 1);
|
|
2225
|
+
this.states.forEach((state, i) => {
|
|
2226
|
+
state.setParent(this, i);
|
|
2227
|
+
});
|
|
2228
|
+
const curr = this._value() ?? [];
|
|
2229
|
+
const next = [...curr];
|
|
2230
|
+
next.splice(index, 1);
|
|
2231
|
+
this._value.set(next);
|
|
2232
|
+
this.notifyParent();
|
|
2233
|
+
}
|
|
2234
|
+
clear() {
|
|
2235
|
+
this.states.length = 0;
|
|
2236
|
+
this._value.set([]);
|
|
2237
|
+
this.notifyParent();
|
|
2238
|
+
}
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
class KlesFormUiArray extends KlesFormUiControl {
|
|
2242
|
+
create() {
|
|
2243
|
+
const array = new ArrayUiState();
|
|
2099
2244
|
if (this.field.value && Array.isArray(this.field.value)) {
|
|
2100
2245
|
if (this.field.collections && Array.isArray(this.field.collections)) {
|
|
2101
|
-
this.field.value.forEach(
|
|
2102
|
-
const
|
|
2103
|
-
|
|
2104
|
-
this.field.collections?.forEach(subfield => {
|
|
2105
|
-
const data = line[subfield.name] || null;
|
|
2246
|
+
this.field.value.forEach(() => {
|
|
2247
|
+
const group = new GroupUiState();
|
|
2248
|
+
this.field.collections?.forEach((subfield) => {
|
|
2106
2249
|
let control;
|
|
2107
2250
|
if (subfield.type) {
|
|
2108
|
-
control = componentMapper.find(c => c.type === subfield.type)?.
|
|
2109
|
-
|| klesFieldControlFactory({ ...subfield, ...(data && { value: data }) }, this.ref);
|
|
2251
|
+
control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
2110
2252
|
}
|
|
2111
2253
|
else {
|
|
2112
|
-
control = componentMapper.find(c => c.component === subfield.component)?.
|
|
2113
|
-
|| klesFieldControlFactory({ ...subfield, ...(data && { value: data }) }, this.ref);
|
|
2254
|
+
control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
2114
2255
|
}
|
|
2115
|
-
group.
|
|
2256
|
+
group.addUiState(subfield.name, control);
|
|
2116
2257
|
});
|
|
2117
2258
|
array.push(group);
|
|
2118
2259
|
});
|
|
2119
2260
|
}
|
|
2120
2261
|
}
|
|
2121
2262
|
else {
|
|
2122
|
-
const group = new
|
|
2123
|
-
this.field.collections?.forEach(subfield => {
|
|
2263
|
+
const group = new GroupUiState();
|
|
2264
|
+
this.field.collections?.forEach((subfield) => {
|
|
2124
2265
|
let control;
|
|
2125
2266
|
if (subfield.type) {
|
|
2126
|
-
control = componentMapper.find(c => c.type === subfield.type)?.
|
|
2127
|
-
|| klesFieldControlFactory({ ...subfield }, this.ref);
|
|
2267
|
+
control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
2128
2268
|
}
|
|
2129
2269
|
else {
|
|
2130
|
-
control = componentMapper.find(c => c.component === subfield.component)?.
|
|
2131
|
-
|| klesFieldControlFactory({ ...subfield }, this.ref);
|
|
2270
|
+
control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
2132
2271
|
}
|
|
2133
|
-
group.
|
|
2272
|
+
group.addUiState(subfield.name, control);
|
|
2134
2273
|
});
|
|
2135
2274
|
array.push(group);
|
|
2136
2275
|
}
|
|
2137
|
-
if (this.field.disabled) {
|
|
2138
|
-
array.disable();
|
|
2139
|
-
}
|
|
2140
2276
|
return array;
|
|
2141
2277
|
}
|
|
2142
2278
|
}
|
|
2143
2279
|
|
|
2280
|
+
class KlesFormUiGroup extends KlesFormUiControl {
|
|
2281
|
+
create() {
|
|
2282
|
+
const subGroup = new GroupUiState();
|
|
2283
|
+
if (this.field.collections && Array.isArray(this.field.collections)) {
|
|
2284
|
+
this.field.collections.forEach((subfield) => {
|
|
2285
|
+
let ui;
|
|
2286
|
+
if (subfield.type) {
|
|
2287
|
+
ui =
|
|
2288
|
+
componentMapper.find((c) => c.type === subfield.type)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||
|
|
2289
|
+
klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });
|
|
2290
|
+
}
|
|
2291
|
+
else {
|
|
2292
|
+
ui =
|
|
2293
|
+
componentMapper.find((c) => c.component === subfield.component)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||
|
|
2294
|
+
klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });
|
|
2295
|
+
}
|
|
2296
|
+
subGroup.addUiState(subfield.name, ui);
|
|
2297
|
+
});
|
|
2298
|
+
}
|
|
2299
|
+
return subGroup;
|
|
2300
|
+
}
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2144
2303
|
let KlesFormListFieldComponent = class KlesFormListFieldComponent extends KlesFieldAbstract {
|
|
2145
2304
|
constructor() {
|
|
2146
|
-
super(
|
|
2305
|
+
super();
|
|
2306
|
+
this.intl = inject(KlesDynamicFormIntl);
|
|
2147
2307
|
this.collections = signal([], /* @ts-ignore */
|
|
2148
2308
|
...(ngDevMode ? [{ debugName: "collections" }] : /* istanbul ignore next */ []));
|
|
2149
|
-
this.fb = inject(UntypedFormBuilder);
|
|
2150
|
-
}
|
|
2151
|
-
ngOnInit() {
|
|
2152
2309
|
this.formArray = this.group.controls[this.field.name];
|
|
2153
2310
|
this.collections.set(this.formArray.controls.map(() => {
|
|
2154
|
-
return
|
|
2311
|
+
return cloneDeep(this.field.collections ?? []);
|
|
2155
2312
|
}));
|
|
2313
|
+
}
|
|
2314
|
+
ngOnInit() {
|
|
2315
|
+
this.subUi = this.ui?.get(this.field.name);
|
|
2156
2316
|
super.ngOnInit();
|
|
2157
2317
|
}
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2318
|
+
getRowUi(index) {
|
|
2319
|
+
return this.subUi.at(index);
|
|
2320
|
+
}
|
|
2321
|
+
get hasLayout() {
|
|
2322
|
+
return (this.field.collections ?? []).some((subfield) => subfield.layout != null);
|
|
2323
|
+
}
|
|
2324
|
+
get fieldsDirection() {
|
|
2325
|
+
if (this.hasLayout) {
|
|
2326
|
+
return this.field.direction === 'inline-grid' ? 'inline-grid' : 'grid';
|
|
2327
|
+
}
|
|
2328
|
+
return this.field.direction ?? 'row';
|
|
2165
2329
|
}
|
|
2166
2330
|
deleteField(index) {
|
|
2167
|
-
this.
|
|
2331
|
+
this.subUi.removeAt(index);
|
|
2168
2332
|
this.formArray.removeAt(index);
|
|
2333
|
+
this.collections.update((collections) => collections.filter((_, currentIndex) => currentIndex !== index));
|
|
2169
2334
|
}
|
|
2170
2335
|
addField() {
|
|
2171
|
-
|
|
2172
|
-
this.
|
|
2173
|
-
this.
|
|
2336
|
+
this.subUi.push(new KlesFormUiGroup({ ...this.field, value: undefined }).create());
|
|
2337
|
+
this.formArray.push(createKlesFormArrayGroup(this.field));
|
|
2338
|
+
this.collections.update((collections) => [...collections, cloneDeep(this.field.collections ?? [])]);
|
|
2174
2339
|
}
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
const validList = [];
|
|
2178
|
-
validations.forEach((valid) => {
|
|
2179
|
-
validList.push(valid.validator);
|
|
2180
|
-
});
|
|
2181
|
-
return Validators.compose(validList);
|
|
2182
|
-
}
|
|
2183
|
-
return null;
|
|
2340
|
+
ngOnDestroy() {
|
|
2341
|
+
super.ngOnDestroy();
|
|
2184
2342
|
}
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
});
|
|
2191
|
-
return Validators.composeAsync(validList);
|
|
2343
|
+
getGridColumn(field) {
|
|
2344
|
+
const colSpan = field.layout?.colSpan ?? 12;
|
|
2345
|
+
const colStart = field.layout?.colStart;
|
|
2346
|
+
if (colStart) {
|
|
2347
|
+
return `${colStart} / span ${colSpan}`;
|
|
2192
2348
|
}
|
|
2193
|
-
return
|
|
2349
|
+
return `span ${colSpan}`;
|
|
2194
2350
|
}
|
|
2195
|
-
|
|
2196
|
-
|
|
2351
|
+
getGridRow(field) {
|
|
2352
|
+
const rowSpan = field.layout?.rowSpan;
|
|
2353
|
+
const rowStart = field.layout?.rowStart;
|
|
2354
|
+
if (rowStart && rowSpan) {
|
|
2355
|
+
return `${rowStart} / span ${rowSpan}`;
|
|
2356
|
+
}
|
|
2357
|
+
if (rowStart) {
|
|
2358
|
+
return `${rowStart}`;
|
|
2359
|
+
}
|
|
2360
|
+
if (rowSpan) {
|
|
2361
|
+
return `span ${rowSpan}`;
|
|
2362
|
+
}
|
|
2363
|
+
return undefined;
|
|
2197
2364
|
}
|
|
2198
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFormListFieldComponent, deps:
|
|
2365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFormListFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2199
2366
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: KlesFormListFieldComponent, isStandalone: true, selector: "kles-form-listfield", usesInheritance: true, ngImport: i0, template: `
|
|
2200
|
-
<div [formGroup]="group" class="form-element">
|
|
2201
|
-
<div class="
|
|
2202
|
-
|
|
2203
|
-
|
|
2367
|
+
<div [formGroup]="group" class="form-element list-field">
|
|
2368
|
+
<div class="list-field__header">
|
|
2369
|
+
@if (label()) {
|
|
2370
|
+
<span class="list-field__label">
|
|
2371
|
+
{{ label() }}
|
|
2372
|
+
</span>
|
|
2373
|
+
}
|
|
2374
|
+
|
|
2375
|
+
<button type="button" matButton class="list-field__add" (click)="addField()">
|
|
2204
2376
|
<mat-icon>add</mat-icon>
|
|
2377
|
+
{{ intl.add }}
|
|
2205
2378
|
</button>
|
|
2206
2379
|
</div>
|
|
2207
2380
|
|
|
2208
|
-
<div class="
|
|
2209
|
-
@for (subGroup of formArray.controls; track subGroup
|
|
2210
|
-
<div class="
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2381
|
+
<div class="list-field__content" [formArrayName]="field.name">
|
|
2382
|
+
@for (subGroup of formArray.controls; track subGroup; let idx = $index) {
|
|
2383
|
+
<div class="list-field__row">
|
|
2384
|
+
<div
|
|
2385
|
+
class="list-field__fields"
|
|
2386
|
+
[class.list-field__fields--column]="fieldsDirection === 'column'"
|
|
2387
|
+
[class.list-field__fields--row]="fieldsDirection === 'row'"
|
|
2388
|
+
[class.list-field__fields--grid]="fieldsDirection === 'grid'"
|
|
2389
|
+
[class.list-field__fields--inline-grid]="fieldsDirection === 'inline-grid'"
|
|
2390
|
+
[class.list-field__fields--nowrap]="fieldsDirection === 'row' && field.wrap === false"
|
|
2391
|
+
>
|
|
2392
|
+
@for (subfield of collections()[idx]; track subfield.name) {
|
|
2393
|
+
<div class="list-field__field" [style.grid-column]="getGridColumn(subfield)" [style.grid-row]="getGridRow(subfield)">
|
|
2394
|
+
<ng-container klesDynamicField [field]="subfield" [group]="subGroup" [siblingFields]="collections()[idx]" [ui]="getRowUi(idx)" [context]="context" />
|
|
2395
|
+
</div>
|
|
2396
|
+
}
|
|
2397
|
+
</div>
|
|
2398
|
+
|
|
2399
|
+
<button type="button" matIconButton class="list-field__delete" [attr.aria-label]="intl.delete" (click)="deleteField(idx)">
|
|
2400
|
+
<mat-icon>delete_outline</mat-icon>
|
|
2401
|
+
</button>
|
|
2219
2402
|
</div>
|
|
2220
2403
|
}
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
</ng-container>
|
|
2227
|
-
}
|
|
2228
|
-
@for (validation of field.asyncValidations; track validation.name) {
|
|
2229
|
-
<ng-container ngProjectAs="mat-error">
|
|
2230
|
-
@if (validation.name && group.controls[field.name].hasError(validation.name)) {
|
|
2231
|
-
<mat-error>{{ validation.message }}</mat-error>
|
|
2232
|
-
}
|
|
2233
|
-
</ng-container>
|
|
2404
|
+
|
|
2405
|
+
@if (formArray.length === 0) {
|
|
2406
|
+
<div class="list-field__empty">
|
|
2407
|
+
{{ intl.empty }}
|
|
2408
|
+
</div>
|
|
2234
2409
|
}
|
|
2235
2410
|
</div>
|
|
2411
|
+
|
|
2412
|
+
<div class="list-field__errors">
|
|
2413
|
+
<mat-error matErrorForm [form]="formArray" [validations]="field.validations" [asyncValidations]="field.asyncValidations" />
|
|
2414
|
+
</div>
|
|
2236
2415
|
</div>
|
|
2237
|
-
`, isInline: true, styles: [".
|
|
2416
|
+
`, isInline: true, styles: [":host{display:block;width:100%;min-width:0}.list-field{display:flex;flex-direction:column;gap:8px;width:100%;min-width:0}.list-field__header{display:flex;align-items:center;gap:8px;min-height:36px}.list-field__label{min-width:0;font-weight:500}.list-field__add{margin-left:auto;flex-shrink:0}.list-field__content{display:flex;flex-direction:column;gap:10px;width:100%;min-width:0}.list-field__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;width:100%;min-width:0}.list-field__fields{width:100%;min-width:0}.list-field__fields--column{display:flex;flex-direction:column;gap:10px}.list-field__fields--column>.list-field__field{width:100%}.list-field__fields--row{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:10px}.list-field__fields--row>.list-field__field{flex:1 1 0;width:auto;min-width:0}.list-field__fields--row.list-field__fields--nowrap{flex-wrap:nowrap}.list-field__fields--grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.list-field__fields--inline-grid{display:inline-grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.list-field__field{width:100%;min-width:0}.list-field__delete{align-self:start;margin-top:4px;flex-shrink:0}.list-field__empty{padding:16px;text-align:center;opacity:.7}.list-field__errors{display:flex;flex-direction:column;gap:4px;min-width:0}\n"], dependencies: [{ kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: ["field", "group", "ui", "siblingFields", "context"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatErrorFormDirective, selector: "[matErrorForm]", inputs: ["form", "validations", "asyncValidations"] }] }); }
|
|
2238
2417
|
};
|
|
2239
2418
|
KlesFormListFieldComponent = __decorate([
|
|
2240
|
-
FieldMapper({ type: 'listfield', factory: (field) => new KlesFormArray(field).create() })
|
|
2419
|
+
FieldMapper({ type: 'listfield', factory: (field) => new KlesFormArray(field).create(), ui: (field) => new KlesFormUiArray(field).create() })
|
|
2241
2420
|
], KlesFormListFieldComponent);
|
|
2242
2421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFormListFieldComponent, decorators: [{
|
|
2243
2422
|
type: Component,
|
|
2244
2423
|
args: [{ selector: 'kles-form-listfield', template: `
|
|
2245
|
-
<div [formGroup]="group" class="form-element">
|
|
2246
|
-
<div class="
|
|
2247
|
-
|
|
2248
|
-
|
|
2424
|
+
<div [formGroup]="group" class="form-element list-field">
|
|
2425
|
+
<div class="list-field__header">
|
|
2426
|
+
@if (label()) {
|
|
2427
|
+
<span class="list-field__label">
|
|
2428
|
+
{{ label() }}
|
|
2429
|
+
</span>
|
|
2430
|
+
}
|
|
2431
|
+
|
|
2432
|
+
<button type="button" matButton class="list-field__add" (click)="addField()">
|
|
2249
2433
|
<mat-icon>add</mat-icon>
|
|
2434
|
+
{{ intl.add }}
|
|
2250
2435
|
</button>
|
|
2251
2436
|
</div>
|
|
2252
2437
|
|
|
2253
|
-
<div class="
|
|
2254
|
-
@for (subGroup of formArray.controls; track subGroup
|
|
2255
|
-
<div class="
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2438
|
+
<div class="list-field__content" [formArrayName]="field.name">
|
|
2439
|
+
@for (subGroup of formArray.controls; track subGroup; let idx = $index) {
|
|
2440
|
+
<div class="list-field__row">
|
|
2441
|
+
<div
|
|
2442
|
+
class="list-field__fields"
|
|
2443
|
+
[class.list-field__fields--column]="fieldsDirection === 'column'"
|
|
2444
|
+
[class.list-field__fields--row]="fieldsDirection === 'row'"
|
|
2445
|
+
[class.list-field__fields--grid]="fieldsDirection === 'grid'"
|
|
2446
|
+
[class.list-field__fields--inline-grid]="fieldsDirection === 'inline-grid'"
|
|
2447
|
+
[class.list-field__fields--nowrap]="fieldsDirection === 'row' && field.wrap === false"
|
|
2448
|
+
>
|
|
2449
|
+
@for (subfield of collections()[idx]; track subfield.name) {
|
|
2450
|
+
<div class="list-field__field" [style.grid-column]="getGridColumn(subfield)" [style.grid-row]="getGridRow(subfield)">
|
|
2451
|
+
<ng-container klesDynamicField [field]="subfield" [group]="subGroup" [siblingFields]="collections()[idx]" [ui]="getRowUi(idx)" [context]="context" />
|
|
2452
|
+
</div>
|
|
2453
|
+
}
|
|
2454
|
+
</div>
|
|
2455
|
+
|
|
2456
|
+
<button type="button" matIconButton class="list-field__delete" [attr.aria-label]="intl.delete" (click)="deleteField(idx)">
|
|
2457
|
+
<mat-icon>delete_outline</mat-icon>
|
|
2458
|
+
</button>
|
|
2264
2459
|
</div>
|
|
2265
2460
|
}
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
</ng-container>
|
|
2272
|
-
}
|
|
2273
|
-
@for (validation of field.asyncValidations; track validation.name) {
|
|
2274
|
-
<ng-container ngProjectAs="mat-error">
|
|
2275
|
-
@if (validation.name && group.controls[field.name].hasError(validation.name)) {
|
|
2276
|
-
<mat-error>{{ validation.message }}</mat-error>
|
|
2277
|
-
}
|
|
2278
|
-
</ng-container>
|
|
2461
|
+
|
|
2462
|
+
@if (formArray.length === 0) {
|
|
2463
|
+
<div class="list-field__empty">
|
|
2464
|
+
{{ intl.empty }}
|
|
2465
|
+
</div>
|
|
2279
2466
|
}
|
|
2280
2467
|
</div>
|
|
2468
|
+
|
|
2469
|
+
<div class="list-field__errors">
|
|
2470
|
+
<mat-error matErrorForm [form]="formArray" [validations]="field.validations" [asyncValidations]="field.asyncValidations" />
|
|
2471
|
+
</div>
|
|
2281
2472
|
</div>
|
|
2282
|
-
`, standalone: true, imports: [MatError, MatIcon, MatIconButton, KlesDynamicFieldDirective, ReactiveFormsModule], styles: [".
|
|
2283
|
-
}] });
|
|
2473
|
+
`, standalone: true, imports: [MatError, MatIcon, MatIconButton, KlesDynamicFieldDirective, ReactiveFormsModule, MatButtonModule, MatErrorFormDirective], styles: [":host{display:block;width:100%;min-width:0}.list-field{display:flex;flex-direction:column;gap:8px;width:100%;min-width:0}.list-field__header{display:flex;align-items:center;gap:8px;min-height:36px}.list-field__label{min-width:0;font-weight:500}.list-field__add{margin-left:auto;flex-shrink:0}.list-field__content{display:flex;flex-direction:column;gap:10px;width:100%;min-width:0}.list-field__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;width:100%;min-width:0}.list-field__fields{width:100%;min-width:0}.list-field__fields--column{display:flex;flex-direction:column;gap:10px}.list-field__fields--column>.list-field__field{width:100%}.list-field__fields--row{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:10px}.list-field__fields--row>.list-field__field{flex:1 1 0;width:auto;min-width:0}.list-field__fields--row.list-field__fields--nowrap{flex-wrap:nowrap}.list-field__fields--grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.list-field__fields--inline-grid{display:inline-grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.list-field__field{width:100%;min-width:0}.list-field__delete{align-self:start;margin-top:4px;flex-shrink:0}.list-field__empty{padding:16px;text-align:center;opacity:.7}.list-field__errors{display:flex;flex-direction:column;gap:4px;min-width:0}\n"] }]
|
|
2474
|
+
}], ctorParameters: () => [] });
|
|
2284
2475
|
|
|
2285
2476
|
class KlesFormColorComponent extends KlesFieldAbstract {
|
|
2286
2477
|
constructor() {
|
|
@@ -3117,29 +3308,6 @@ class KlesFormGroup extends KlesFormControl {
|
|
|
3117
3308
|
}
|
|
3118
3309
|
}
|
|
3119
3310
|
|
|
3120
|
-
class KlesFormUiGroup extends KlesFormUiControl {
|
|
3121
|
-
create() {
|
|
3122
|
-
const subGroup = new GroupUiState();
|
|
3123
|
-
if (this.field.collections && Array.isArray(this.field.collections)) {
|
|
3124
|
-
this.field.collections.forEach((subfield) => {
|
|
3125
|
-
let ui;
|
|
3126
|
-
if (subfield.type) {
|
|
3127
|
-
ui =
|
|
3128
|
-
componentMapper.find((c) => c.type === subfield.type)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||
|
|
3129
|
-
klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });
|
|
3130
|
-
}
|
|
3131
|
-
else {
|
|
3132
|
-
ui =
|
|
3133
|
-
componentMapper.find((c) => c.component === subfield.component)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||
|
|
3134
|
-
klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });
|
|
3135
|
-
}
|
|
3136
|
-
subGroup.addUiState(subfield.name, ui);
|
|
3137
|
-
});
|
|
3138
|
-
}
|
|
3139
|
-
return subGroup;
|
|
3140
|
-
}
|
|
3141
|
-
}
|
|
3142
|
-
|
|
3143
3311
|
let KlesFormGroupComponent = class KlesFormGroupComponent extends KlesFieldAbstract {
|
|
3144
3312
|
constructor() {
|
|
3145
3313
|
super(...arguments);
|
|
@@ -3953,152 +4121,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
3953
4121
|
}]
|
|
3954
4122
|
}], propDecorators: { buttonToggles: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => MatButtonToggle), { isSignal: true }] }] } });
|
|
3955
4123
|
|
|
3956
|
-
class ArrayUiState extends AbstractUiState {
|
|
3957
|
-
constructor(states) {
|
|
3958
|
-
super();
|
|
3959
|
-
this.states = [];
|
|
3960
|
-
this.states = states ?? [];
|
|
3961
|
-
this.states.forEach((state, index) => {
|
|
3962
|
-
state.setParent(this, index);
|
|
3963
|
-
});
|
|
3964
|
-
this._value.set(this.states.map((state) => state.value()));
|
|
3965
|
-
}
|
|
3966
|
-
setValue(value) {
|
|
3967
|
-
if (!Array.isArray(value)) {
|
|
3968
|
-
return;
|
|
3969
|
-
}
|
|
3970
|
-
value.forEach((newValue, index) => {
|
|
3971
|
-
this.at(index)?.setValue(newValue);
|
|
3972
|
-
});
|
|
3973
|
-
this._value.set(value);
|
|
3974
|
-
this.notifyParent();
|
|
3975
|
-
}
|
|
3976
|
-
patchValue(value) {
|
|
3977
|
-
if (value == null) {
|
|
3978
|
-
return;
|
|
3979
|
-
}
|
|
3980
|
-
value.forEach((newValue, index) => {
|
|
3981
|
-
const st = this.at(index);
|
|
3982
|
-
if (st) {
|
|
3983
|
-
st.patchValue(newValue);
|
|
3984
|
-
}
|
|
3985
|
-
});
|
|
3986
|
-
const curr = this._value() ?? [];
|
|
3987
|
-
const next = [...curr];
|
|
3988
|
-
value.forEach((newValue, index) => {
|
|
3989
|
-
next[index] = {
|
|
3990
|
-
...(next[index] ?? {}),
|
|
3991
|
-
...newValue,
|
|
3992
|
-
};
|
|
3993
|
-
});
|
|
3994
|
-
this._value.set(next);
|
|
3995
|
-
this.notifyParent();
|
|
3996
|
-
}
|
|
3997
|
-
childValueChanged(key, value) {
|
|
3998
|
-
const index = typeof key === 'number' ? key : Number(key);
|
|
3999
|
-
if (!Number.isInteger(index) || index < 0)
|
|
4000
|
-
return;
|
|
4001
|
-
const curr = this._value() ?? [];
|
|
4002
|
-
const next = [...curr];
|
|
4003
|
-
next[index] = value;
|
|
4004
|
-
this._value.set(next);
|
|
4005
|
-
this.notifyParent();
|
|
4006
|
-
}
|
|
4007
|
-
at(index) {
|
|
4008
|
-
return this.states?.[index] ?? null;
|
|
4009
|
-
}
|
|
4010
|
-
_find(name) {
|
|
4011
|
-
const idx = typeof name === 'number' ? name : Number(name);
|
|
4012
|
-
return Number.isFinite(idx) ? this.at(idx) : null;
|
|
4013
|
-
}
|
|
4014
|
-
push(control) {
|
|
4015
|
-
const items = Array.isArray(control) ? control : [control];
|
|
4016
|
-
if (items.length === 0) {
|
|
4017
|
-
return;
|
|
4018
|
-
}
|
|
4019
|
-
for (const item of items) {
|
|
4020
|
-
const index = this.states.length;
|
|
4021
|
-
this.states.push(item);
|
|
4022
|
-
item.setParent(this, index);
|
|
4023
|
-
}
|
|
4024
|
-
this._value.set(this.states.map((s) => s.value()));
|
|
4025
|
-
this.notifyParent();
|
|
4026
|
-
}
|
|
4027
|
-
insert(index, state) {
|
|
4028
|
-
const items = Array.isArray(state) ? state : [state];
|
|
4029
|
-
if (items.length === 0) {
|
|
4030
|
-
return;
|
|
4031
|
-
}
|
|
4032
|
-
const safeIndex = Math.max(0, Math.min(index, this.states.length));
|
|
4033
|
-
this.states.splice(safeIndex, 0, ...items);
|
|
4034
|
-
for (let i = safeIndex; i < this.states.length; i++) {
|
|
4035
|
-
this.states[i]?.setParent(this, i);
|
|
4036
|
-
}
|
|
4037
|
-
const curr = this._value();
|
|
4038
|
-
const next = [...curr];
|
|
4039
|
-
next.splice(safeIndex, 0, ...items.map((item) => item.value()));
|
|
4040
|
-
this._value.set(next);
|
|
4041
|
-
this.notifyParent();
|
|
4042
|
-
}
|
|
4043
|
-
removeAt(index) {
|
|
4044
|
-
if (index < 0 || index >= this.states.length)
|
|
4045
|
-
return;
|
|
4046
|
-
this.states.splice(index, 1);
|
|
4047
|
-
this.states.forEach((state, i) => {
|
|
4048
|
-
state.setParent(this, i);
|
|
4049
|
-
});
|
|
4050
|
-
const curr = this._value() ?? [];
|
|
4051
|
-
const next = [...curr];
|
|
4052
|
-
next.splice(index, 1);
|
|
4053
|
-
this._value.set(next);
|
|
4054
|
-
this.notifyParent();
|
|
4055
|
-
}
|
|
4056
|
-
clear() {
|
|
4057
|
-
this.states.length = 0;
|
|
4058
|
-
this._value.set([]);
|
|
4059
|
-
this.notifyParent();
|
|
4060
|
-
}
|
|
4061
|
-
}
|
|
4062
|
-
|
|
4063
|
-
class KlesFormUiArray extends KlesFormUiControl {
|
|
4064
|
-
create() {
|
|
4065
|
-
const array = new ArrayUiState();
|
|
4066
|
-
if (this.field.value && Array.isArray(this.field.value)) {
|
|
4067
|
-
if (this.field.collections && Array.isArray(this.field.collections)) {
|
|
4068
|
-
this.field.value.forEach(() => {
|
|
4069
|
-
const group = new GroupUiState();
|
|
4070
|
-
this.field.collections?.forEach((subfield) => {
|
|
4071
|
-
let control;
|
|
4072
|
-
if (subfield.type) {
|
|
4073
|
-
control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
4074
|
-
}
|
|
4075
|
-
else {
|
|
4076
|
-
control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
4077
|
-
}
|
|
4078
|
-
group.addUiState(subfield.name, control);
|
|
4079
|
-
});
|
|
4080
|
-
array.push(group);
|
|
4081
|
-
});
|
|
4082
|
-
}
|
|
4083
|
-
}
|
|
4084
|
-
else {
|
|
4085
|
-
const group = new GroupUiState();
|
|
4086
|
-
this.field.collections?.forEach((subfield) => {
|
|
4087
|
-
let control;
|
|
4088
|
-
if (subfield.type) {
|
|
4089
|
-
control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
4090
|
-
}
|
|
4091
|
-
else {
|
|
4092
|
-
control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);
|
|
4093
|
-
}
|
|
4094
|
-
group.addUiState(subfield.name, control);
|
|
4095
|
-
});
|
|
4096
|
-
array.push(group);
|
|
4097
|
-
}
|
|
4098
|
-
return array;
|
|
4099
|
-
}
|
|
4100
|
-
}
|
|
4101
|
-
|
|
4102
4124
|
let KlesFormArrayComponent = class KlesFormArrayComponent extends KlesFieldAbstract {
|
|
4103
4125
|
constructor() {
|
|
4104
4126
|
super();
|
|
@@ -4253,7 +4275,7 @@ class KlesFabComponent extends KlesButtonBase {
|
|
|
4253
4275
|
<mat-icon [svgIcon]="iconSvg"></mat-icon>
|
|
4254
4276
|
}
|
|
4255
4277
|
</button>
|
|
4256
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
4278
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
4257
4279
|
}
|
|
4258
4280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFabComponent, decorators: [{
|
|
4259
4281
|
type: Component,
|
|
@@ -4357,7 +4379,7 @@ class KlesMiniFabComponent extends KlesButtonBase {
|
|
|
4357
4379
|
<mat-icon [svgIcon]="iconSvg"></mat-icon>
|
|
4358
4380
|
}
|
|
4359
4381
|
</button>
|
|
4360
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
4382
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }] }); }
|
|
4361
4383
|
}
|
|
4362
4384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesMiniFabComponent, decorators: [{
|
|
4363
4385
|
type: Component,
|
|
@@ -4450,7 +4472,7 @@ class KlesIconButtonComponent extends KlesButtonBase {
|
|
|
4450
4472
|
<mat-icon [svgIcon]="iconSvg"></mat-icon>
|
|
4451
4473
|
}
|
|
4452
4474
|
</button>
|
|
4453
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
4475
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
4454
4476
|
}
|
|
4455
4477
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesIconButtonComponent, decorators: [{
|
|
4456
4478
|
type: Component,
|
|
@@ -4647,7 +4669,7 @@ class KlesFormSelectionListSearchComponent extends KlesFieldAbstract {
|
|
|
4647
4669
|
}
|
|
4648
4670
|
</mat-selection-list>
|
|
4649
4671
|
</div>
|
|
4650
|
-
`, isInline: true, styles: [".selection-list{display:flex;flex-direction:column;gap:5px}\n", "mat-selection-list{width:100%;height:250px;overflow:auto;flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
4672
|
+
`, isInline: true, styles: [".selection-list{display:flex;flex-direction:column;gap:5px}\n", "mat-selection-list{width:100%;height:250px;overflow:auto;flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i4$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: KlesComponentDirective, selector: "[klesComponent]", inputs: ["component", "value", "field"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3$4.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i3$4.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: KlesFocusTargetDirective, selector: "[klesFocusTarget]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: KlesTransformPipe, name: "klesTransform" }] }); }
|
|
4651
4673
|
}
|
|
4652
4674
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFormSelectionListSearchComponent, decorators: [{
|
|
4653
4675
|
type: Component,
|
|
@@ -4831,7 +4853,7 @@ class KlesFormDateTimeComponent extends KlesFieldAbstract {
|
|
|
4831
4853
|
|
|
4832
4854
|
<mat-error matErrorMessage [validations]="field.validations" [asyncValidations]="field.asyncValidations"></mat-error>
|
|
4833
4855
|
</mat-form-field>
|
|
4834
|
-
`, isInline: true, styles: ["mat-form-field{width:100%}\n", ".suffix{display:flex;flex-direction:row}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "directive", type: i3$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatErrorMessageDirective, selector: "[matErrorMessage]", inputs: ["validations", "asyncValidations"] }, { kind: "ngmodule", type: KlesMaterialDatepickerModule }, { kind: "component", type: i4$
|
|
4856
|
+
`, isInline: true, styles: ["mat-form-field{width:100%}\n", ".suffix{display:flex;flex-direction:row}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "directive", type: i3$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatErrorMessageDirective, selector: "[matErrorMessage]", inputs: ["validations", "asyncValidations"] }, { kind: "ngmodule", type: KlesMaterialDatepickerModule }, { kind: "component", type: i4$2.KlesMatDatepicker, selector: "kles-mat-datepicker", outputs: ["timeSelected"], exportAs: ["klesMatDatepicker"] }, { kind: "directive", type: KlesFocusTargetDirective, selector: "[klesFocusTarget]" }] }); }
|
|
4835
4857
|
}
|
|
4836
4858
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFormDateTimeComponent, decorators: [{
|
|
4837
4859
|
type: Component,
|
|
@@ -4900,7 +4922,7 @@ class KlesFormCopyComponent {
|
|
|
4900
4922
|
<button #tooltip="matTooltip" matIconButton color="primary" type="button" (click)="copy($event)" [matTooltipDisabled]="true" [matTooltip]="tooltipText" matTooltipPosition="above">
|
|
4901
4923
|
<mat-icon>content_copy</mat-icon>
|
|
4902
4924
|
</button>
|
|
4903
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
4925
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ClipboardModule }] }); }
|
|
4904
4926
|
}
|
|
4905
4927
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: KlesFormCopyComponent, decorators: [{
|
|
4906
4928
|
type: Component,
|
|
@@ -5017,7 +5039,7 @@ let KlesFormActionMenuComponent = class KlesFormActionMenuComponent extends Kles
|
|
|
5017
5039
|
</button>
|
|
5018
5040
|
}
|
|
5019
5041
|
</mat-menu>
|
|
5020
|
-
`, isInline: true, styles: [".kles-action-menu__warn{color:var(--mat-sys-error)}.kles-action-menu__warn mat-icon{color:var(--mat-sys-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
5042
|
+
`, isInline: true, styles: [".kles-action-menu__warn{color:var(--mat-sys-error)}.kles-action-menu__warn mat-icon{color:var(--mat-sys-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3$4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5021
5043
|
};
|
|
5022
5044
|
KlesFormActionMenuComponent = __decorate([
|
|
5023
5045
|
FieldMapper({
|